๐ฑ dreaming DiNO
[Kotlin] Asset ํ์ผ ์ฝ์ด์ sdcard ์ ์ฅํ๊ธฐ ๋ณธ๋ฌธ
์ฑ ์ฒ์ ์คํ๋ ๋ assets ํ์ผ ์ฝ์ด์ ๋ณต์ฌํด์ ํ์ํ file๋ค sdcard์ copy & paste
package kr.co.voicecaddie.bodycam
import android.app.Application
import android.content.Context
import android.os.Environment
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.app.AlertDialog
import dagger.hilt.android.HiltAndroidApp
import kr.co.voicecaddie.camera.CameraDefine
import kr.co.voicecaddie.common.NetworkUtils
import kr.co.voicecaddie.common.VCDebugLog
import splitties.toast.toast
import java.io.*
@HiltAndroidApp
class BodyCamApp : Application() {
private val logTag = BodyCamApp::class.simpleName ?: ""
companion object {
lateinit var prefs: SharedPreferences
}
override fun onCreate() {
prefs = SharedPreferences(applicationContext)
super.onCreate()
VCDebugLog.i(logTag, "onCreate-()")
NetworkUtils.registerWifiConnected(applicationContext) { ssid ->
if (ssid?.startsWith(CameraDefine.SSID_PREFIX) == true) {
appCameraSSID.postValue(ssid)
appCameraConnected.postValue(true)
} else {
appCameraConnected.postValue(false)
}
}
// asset ํด๋์ ์๋ ํ์ผ -> sdcard ๋ณต์ฌ
copyAssets()
}
private fun copyAssets(){
val assetManager = resources.assets
var files: Array<String>? = null
try {
files = assetManager.list("datasets/") // asset ํด๋์ ๊ฒฝ๋ก
} catch (e: IOException) {
VCDebugLog.e("Failed to get asset file list. e => $e")
}
if (files != null) for (filename in files) {
var `in`: InputStream? = null
var out: OutputStream? = null
try {
VCDebugLog.d(logTag, "filename: $filename")
`in` = assetManager.open("datasets/$filename") // asset ํด๋ ๊ฒฝ๋ก์ ์๋ ํ์ผ ์ฝ๊ธฐ
// sdcard ํด๋ ์ ๋ฌด ํ์ธ
val dir = File(
Environment.getExternalStorageDirectory(), "/BodyCam/datasets")
if (!dir.exists()) {
dir.mkdir()
}
out = FileOutputStream("${Environment.getExternalStorageDirectory().absolutePath}/BodyCam/datasets/$filename") // sdcard ์ ์ฅ ๊ฒฝ๋ก
copyFile(`in`, out)
VCDebugLog.d(logTag, "Success copy file")
} catch (e: IOException) {
VCDebugLog.e("Failed to copy asset file. filename => $filename, e => $e")
} finally {
if (`in` != null) {
try {
`in`.close()
//`in` = null
} catch (e: IOException) {
}
}
if (out != null) {
try {
out.flush()
out.close()
//out = null
} catch (e: IOException) {
// nothing
}
}
}
}
}
fun copyFile(`in`: InputStream, out: OutputStream) {
val buffer = ByteArray(1024)
var read: Int
while (`in`.read(buffer).also { read = it } != -1) {
out.write(buffer, 0, read)
}
}
}
ํ์ฌ ์ฝ๋๋ ์ฑ ๊ตฌ๋์ด ๋ ๋๋ง๋ค assets ํ์ผ์ sdcard์ ์กด์ฌํ๋ ์ํ๋ ์ฌ๋ถ๋ฅผ ํ์ธํ์ง ์๊ณ ,
๋ฐ๋ก ํ์ผ์ copy & paste (๋ฎ์ด์ฐ๊ธฐ) ๋๊ฒ ๋์ด์๋ค.
TODO :: ํ์ผ์ด ์๋์ง ์๋์ง๋ฅผ ํ์ธํ๋ ์์ ํ์!
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] [์๋ฌํด๊ฒฐ] ํจํค์ง๋ช ๋๋ฌธ์ > ์๋ฌธ์ Check your module classpath for missing or conflicting dependencies (0) | 2022.11.10 |
---|---|
[Kotlin] Date ํ๋ฃจ์ , ํ์ฃผ์ , ํ ๋ฌ ์ , 1์๊ฐ ์ , ๋ ์ง ๊ณ์ฐ (0) | 2022.10.11 |
Firebase๋? (0) | 2022.05.31 |
[Android] [์๋ฌํด๊ฒฐ] adb INSTALL_FAILED_TEST_ONLY (0) | 2022.03.31 |
[Android] [์๋ฌํด๊ฒฐ] adb $ADB_VENDOR_KEYS (0) | 2022.03.31 |