๋ชฉ๋กAndroid (92)
๐ฑ dreaming DiNO
์๋๋ก์ด๋์์ ํ์ฌ ๊ธฐ๊ธฐ์ ์ด ์ ์ฅ ์ฉ๋๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฉ๋์ด ์ด๋์ ๋ ํ์ธํ๊ธฐ ์ํด์๋ StatFs ํด๋์ค๋ฅผ ์ฌ์ฉ StatFs๋ file system์ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ฃผ๋ ํด๋์ค๋ก, ์ ๋ณด๋ฅผ ์๊ธฐ ์ํ๋ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ด ์์ฑํ ์ ์์ต๋๋ค. ๋ด๋ถ์ ์ฅ์์ ์ธ๋ถ์ ์ฅ์์ ์ฉ๋์ ์๊ณ ์ถ์ ๊ฒฝ์ฐ, ๊ฐ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋๋ค. ์ธ๋ถ์ ์ฅ์ : getDataDirectory() ๋ด๋ถ์ ์ฅ์ : getExternalStorageDirectory() fun getExternalMemory() { BleDebugLog.i(logTag, "getExternalMemory-()") val externalMemory = checkExternalStorageAllMemory() val externalAvailableMemo..
1. ๋ค๋น๊ฒ์ด์ ํ๋ฉด์ด๋: actionId๋ก ์ค์ Navigation.findNavController(binding.root).navigate(ChangePwFragmentDirections.actionChangePwFragmentToConfigFragment()) 2. ํ์คํ ๋ฆฌ ์ง์ธ Fragment, true ์ค์ FragmentDirections ๊ฐ ์๋์ฌ ๋ Project gradle // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() mavenCentral() } dependencies { // args ..
์๋๋ก์ด๋ UI๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋ ๋ชจ๋ธ๋ก ์๋ํ๋ฏ๋ก, ์ด ์ํฅ์ ๊ณ ๋ คํด ๊ฐ๋ฐํ์ง ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฉ์ธ ์ค๋ ๋์์ ๊ธด ์์ ์ ํ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ฌ๋ถ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ค๋ ๋์์ UI ์ค๋ ๋๋ก ์ ๊ทผํ ์ ์๋๋ก ์๋๋ก์ด๋์์ ์ ๊ณตํ๋ ์ค๋ ๋ ๊ฐ ํต์ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ์๊ฐ ์๋๋ก์ด๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ์์คํ ์ ๋ฉ์ธ ์กํฐ๋นํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ๋ ค ํ๋ก์ธ์ค๋ก ๋ง๋ค๋ฉฐ, ์ด ๋ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๋ฉ์ธ ์ค๋ ๋๋ ์๋๋ก์ด๋์ ์ฃผ์ ์ปดํผ๋ํธ๋ฅผ ์คํํ๋ ๊ณณ์ด์ UI๋ฅผ ๊ทธ๋ฆฌ๊ฑฐ๋ ๊ฐฑ์ ํ๋ ์ผ์ ๋ด๋นํ ์ ์๋ ์ ์ผํ ์ค๋ ๋์ด๋ฏ๋ก UI ์ค๋ ๋๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ์๋๋ก์ด๋ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ทฐ๋ ๋ทฐ๊ทธ๋ฃน์ ํ๋์ ์ค๋ ๋์์๋ง ๋ด๋นํ๋ ์์น์ ์ฑ..
fun main(args: Array) { var intList = ArrayList() intList.add(1) intList.add(2) intList.add(3) intList.add(4) intList.add(5) System.out.println("intList => $intList") // [1, 2, 3, 4, 5] intList.subList(0, 2).clear(); System.out.println("after => $intList") // [3, 4, 5] }
์๋ฌ๋ฐ์ Cannot access class 'Ble.BleViewModel'. Check your module classpath for missing or conflicting dependencies ์๋ฌํด๊ฒฐ viewModel ์ข ์์ฑ์ด ์๋ฃ์ด์คฌ๋? ํ๋๋ฐ, ํ๋ก์ ํธ ํจํค์ง๋ช ์ด ๋๋ฌธ์๋ก ์์ํด์ ๋ชป์ฐพ๋๊ฑฐ์๋ค. ์๋ฌธ์๋ก ์์ ํ์ฌ ํด๊ฒฐ ์๋ฃ
ํ์ฌ ์๊ฐ์ ๋ ์ง ๋ํ๊ณ ๋นผ๊ธฐ ํ์ฌ ์๊ฐ์ ๊ฐ๊ณ ์๋ Date๊ฐ์ฒด์ ์, ์ผ์ ์ถ๊ฐํ๋ ์ฝ๋์ ๋๋ค. ํ์ฌ Date๋ฅผ Calendar์ ์ค์ ํ๊ณ add()๋ก ๋ ์ง ์ฐ์ฐ์ ํ์์ต๋๋ค. ๋ ์ง๋ฅผ ๋นผ๋ ค๋ฉด ์์๋ฅผ ๋ฃ์ผ๋ฉด ๋ฉ๋๋ค. import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* fun main(args: Array) { val cal = Calendar.getInstance() cal.time = Date() val df: DateFormat = SimpleDateFormat("yyyy-MM-dd") println("current: ${df.format(cal.time)}") cal.add(Calendar.MONTH, 2..
์ฑ ์ฒ์ ์คํ๋ ๋ 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.voicecaddi..
// Exif Orientation ๊ฐ ํ์ธ val exif = ExifInterface(context?.contentResolver?.openFileDescriptor(resultUri, "rw", null)!!.fileDescriptor) val exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL) VCDebugLog.i(logTag, "before: $exifOrientation") // 0 exif.setAttribute(ExifInterface.TAG_ORIENTATION, (ExifInterface.ORIENTATION_NORMAL).toString()) exif..
build.gradle ์๋์ฒ๋ผ ์ธํ ํด ๋์๋ค๋ฉด dependencies { implementation fileTree(dir: 'libs', include: ['*.aar']) } ์๋ก ๋ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.aar ๋ง Project ๋ชจ๋๋ก ํด์ ๊ธฐ์กด๊บผ ์ญ์ , ์๋ก์ด๊ฑฐ ์ถ๊ฐ๋ง ํด์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋! *์ ๊น Tip, JAR ์ AAR ์ฐจ์ด Jarํ์ผ์ Java ARchive ์ ์ฝ์๋ก ์๋ฐ๋ก ์์ฑ๋ ํด๋์คํ์ผ๊ณผ ์ด๋ฏธ์ง๋ฑ์ ๋ฆฌ์์ค ํ์ผ๋ค์ ํฌํจ๋๋ค. โ AARํ์ผ์ Android ARchive ์ ์ฝ์๋ก, ์๋๋ก์ด๋์ ํนํ๋ Jarํ์ผ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. AARํ์ผ์ ์๋๋ก์ด๋์ layouts, drawables ๋ฑ์ด ํฌํจ๋ ์ ์๋ค.