Android 39

[안드로이드/Android] 안드로이드에서 엑셀 Excel(.xlsx) 파일 읽기, Read Excel(.xlsx) file in android

1. Apache POI 라이브러리 추가하기 dependencies { ... implementation 'org.apache.poi:poi:3.9' implementation 'org.apache.poi:poi-ooxml:3.9' ... } 버전은 3.9로 해주시면 됩니다. 최신버전인 5.2.2로 해봤는데 아래와 같은 에러가 발생했고, 저는 별다른 해결책을 찾지 못했습니다. 그래서 3.9로 진행했씁니다. 1. app/src/main 에 assets 디렉토리만들고 읽으려는 .xlsx 파일 추가하기 2. 엑셀읽어오는 함수 만들기 fun readExcel(fileName: String) { val assetManager = assets val inputStream = assetManager.open(file..

안드로이드 2023.05.24

[안드로이드/Android] 안드로이드 앱 아이콘 동적 변경하기

삼성 시계 앱을 보면 앱 아이콘에 현재 시간이 표시되고 계속해서 변경되는 것을 확인할 수 있습니다. 어떻게하면 이미 설치된 앱의 아이콘을 동적으로 변경할 수 있을까요? 안드로이드에서 제공하는 PackageManager 를 사용해 변경할 수 있습니다. 1. 먼저 기본 앱 아이콘, 변경할 앱 아이콘을 준비해주세요. 2. MainActivityAlias.kt 라는 클래스를 만들고 일반 액티비티처럼 AppCompatActivity를 상속해주세요. import androidx.appcompat.app.AppCompatActivity class MainActivityAlias: AppCompatActivity() { } 3. AndroidManefest.xml 에 아래 값을 추가해주세요. 태그를 추가해주시면 됩니다..

안드로이드 2023.02.16

[안드로이드/Android] Parcelable 과 Serializable

What is Parcelable and Serializable Android 에서 Activity 간 이동이나 다른 앱으로 Component 이동 시 Intent를 사용한다. 이런 경우 데이터 객체를 같이 전달해야하는 경우가 새인다. 이 때 데이터 객체 즉, Class를 직렬화 하는 부분을 추가하여 사용하는데, Parcelizable 과 Serializable을 사용한다. 개발자 편의성 측면에서는 Serializable이 런타임시 성능 측면에서는 Parcelable 낫다고 함. But, 그것에 반대 의견을 제시하는 사람들도 있음. 반대의견보기 Serializable 예시 import java.io.Serializable data class User(val name: String?, val age: In..

안드로이드 2023.02.15

[안드로이드/Android] local.properties 활용하기/변수저장하기

안드로이드에는 local.properties 라는 파일이 있습니다. 위치 파일을 열어 이미지 처럼 변수를 저장해주면 됩니다. buid.gradle 이나 settings.gradle 에서도 사용할 수 있습니다. 사용할 때는 아래 코드처럼 사용하면 됩니다. kotlin settings.gradle.kts 에서 외부 라이브러리 경로를 불러올 때 사용했습니다. // 호출 project(":externalLibrary").projectDir = File(getExternalModuleDir()) // 메서드 선언 fun getExternalModuleDir(): String { val properties = java.util.Properties() properties.load(File(rootDir.absolut..

안드로이드 2023.02.10

[안드로이드/Android] Android Photo Picker directions.

안드로이드에서 갤러리 이미지, 동영상을 별도 권한 없이 더욱 쉽게 가져올 수 있도록 Photo Picker 라는 녀석이 생겼습니다. API 30 이상에서, androidx.activity 버전 1.6.1이상에서 사용할 수 있습니다. // 싱글 이미지 또는 비디오 선택 private val pickMedia = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri -> if (uri != null) { Log.d("Photo Picker", "Selected URI: $uri") selectedImageView.setImageURI(uri) } else { Log.d("`Photo Picker", "No media select..

안드로이드 2023.02.07

[Android/안드로이드] Flow colect 취소하기/cancellable Flow

Flow를 취소할 수 있는 거 아시나요? 상황에 따라 Flow의 collect() 를 취소해야할 수 있습니다. val combineJob = lifecycleScope.launch { combine( viewModel.socketClose, connectionViewModelV2.networkState, viewModel.state ) { socketClose, networkState, selfStudyListState -> Timber.tag("socketClose").d("$socketClose") Timber.tag("networkState").d("$networkState") when (networkState) { is NetworkState.Connected -> { network = true ..

안드로이드 2023.01.26

"./il2cpp.exe'' finished with non-zero exit value 126 in mac

안드로이드에 유니티 라이브러리를 추가하여 사용할 때 맥에서 제목처럼 il2cpp.exe'' finished with non-zero exit value 126 에러가 발생한다면 유니티 라이브러리가 윈도우 운영체제에서 개발된 파일이라 그럴 수 있습니다. 맥에서 안드로이드 개발 시 유니티 라이브러리를 사용해야한다면 맥에서 Export한 유니티 라이브러리를 사용해야 합니다. 윈도우에서 Export 할 경우 .exe 실행파일들이 생기는데, 맥에서 이 실행파일들을 실행할 수 없어서 발생하는 에러로 예상됩니다. 저는 이 문제로 며칠을 고생했는데, 저같은 실수를 하는 분이 없기를... 끝.

안드로이드 2022.11.03

[Kotest] Android Unit Test 한글 깨짐 해결

안드로이드 스튜디오에서 Help -> Edit Custom VM options 를 클릭하면 studio64.exe.vmoptions 라는 파일이 열립니다. # custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html -Xmx8192m 이런 식으로 되어 있을텐데 가장 아래에 -Dfile.encoding=UTF-8 요 코드를 추가해서 # custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html -Xmx8192m -Dfile.encoding=UTF-8 위 처럼 만들어주고..

안드로이드 2022.10.26

[안드로이드/Android] resources.getIdentifier 사용법

안드로이드에서 문자열을 사용해 리소스를 불러와야하는 경우가 있습니다. 이런 경우, R.string.aaa, R.raw.aaa, R.drawable.aaa 처럼 사용할 수 없습니다. 대신해서 resources.getIdentifier(String name, String defType, String defPackage) 위 같은 함수를 제공합니다. 1. 문자열 불러올 때 resources.getIdentifier(string_resource_name, "string", mActivity.packageName) 2. 이미지 불러올 때 resources.getIdentifier(drawable_resource_name_without_extension, "drawable", mActivity.packageName..

안드로이드 2022.08.17