안드로이드/네트워크

안드로이드 서버 미디어 가져오기

김어찐 2022. 6. 26. 01:36
728x90

서버에 있는 이미지, 사운드, 동영상 데이터를 가져올 수 있다.
이미지는 Bitmap 객체를 만들 때 서버와 연결되어 있는 스트림을 설정해주면 이미지 데이터를 수신 받을 수 있다.
사운드는 MediaPlayer 객체를 만들 때 서버의 사운드 파일을 지정해주면 된다.
동영상은 VideoView에 서버의 동영상 파일을 지정해주면 된다.
파일 지정 시 웹 브라우저에서 요청할 수 있는 주소를 설정해야 한다.

 

package com.example.httpmedia

import android.graphics.BitmapFactory
import android.media.MediaPlayer
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import java.net.HttpURLConnection
import java.net.URL
import javax.net.ssl.HttpsURLConnection
import kotlin.concurrent.thread

class MainActivity : AppCompatActivity() {
    var mp:MediaPlayer? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            thread {
//                val url = URL("http://192.168.0.123:8080/img_android.jpg")
//                val conn = url.openConnection() as HttpURLConnection
                val url = URL("https://cdn.imweb.me/upload/f10be10fc0401.png")
                val conn = url.openConnection() as HttpsURLConnection

                val bitmap = BitmapFactory.decodeStream(conn.inputStream)
                runOnUiThread {
                    imageView.setImageBitmap(bitmap)
                }
            }
        }

        button2.setOnClickListener {
            if(mp == null){
                val uri = Uri.parse("http://192.168.0.123:8080/song.mp3")
                mp = MediaPlayer.create(this,uri)
                mp?.start()
            }
        }

        button3.setOnClickListener {
            if(mp !=null){
                mp?.stop()
                mp = null
            }
        }

        button4.setOnClickListener {
            if(videoView.isPlaying ==false){
                val uri = Uri.parse("http://192.168.0.123:8080/video.mp4")
                videoView.setVideoURI(uri)
                videoView.start()
            }
        }

        button5.setOnClickListener {
            if(videoView.isPlaying ==true){
                videoView.stopPlayback()
            }
        }
    }
}

퍼미션 및 http 통신 허용

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.httpmedia">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.HttpMedia"
        tools:targetApi="31"
        android:usesCleartextTraffic="true">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>
728x90