안드로이드/네트워크
안드로이드 서버 미디어 가져오기
김어찐
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