전체 글71 [Android][Compose] Bluetooth Connect 하기 [Android][Compose] Bluetooth Scan 하기 안드로이드에서 제공하는 BluetoothLeScanner를 사용해서 Bluetooth 주변기기를 Scan 해보려고 한다. Scan 데이터를 얻으면 아래 이미지와 같이 리스트로 그릴 것이다. (UI는 Compose를 사용) 권한 처리하기 ogyong.tistory.com Bluetooth Scan 하기에 이어서 Connect를 해보려고 한다. GATT(Generic Attribute Profile) Connect를 하고 디바이스의 정보를 구하는 과정에서 GATT가 사용된다. GATT는 ATT를 프로토콜로하여 BLE 기기 간에 데이터를 주고 받기 위한 방식을 정의해 놓은 프로파일이다. ATT는 UUID를 고유 식별자라는 속성을 지니며, 이 속.. Android/Bluetooth 2023. 7. 10. [Android][Compose] Bluetooth Scan 하기 안드로이드에서 제공하는 BluetoothLeScanner를 사용해서 Bluetooth 주변기기를 Scan 하는 방법을 정리했다. 권한 처리하기 Bluetooth Scan을 하기에 앞서 블루투스와 위치 정보에 대한 권한을 처리해줘야 한다. Manifiest에 아래와 같이 블루투스와 위치 정보에 대한 권한을 추가한다. MainActivity에서는 권한을 체크하는 코드를 작성한다. permissionArray에 누락된 권한이 있을 경우 Scan이 정상적으로 되지 않을 수 있다. class MainActivity : ComponentActivity() { private val permissionArray = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { arra.. Android/Bluetooth 2023. 6. 22. [Android][Compose] Scaffold-topBar가 UI를 가리는 현상 Jetpack Compose 애니메이션 Codelab을 하던 중 AnimatedVisibility()이 보이지 않는 문제를 겪었다. Codelab은 Material2를 기준으로 되어 있었고, 나는 Material3에 맞춰서 진행을 하고 있었는데 AnimatedVisibility가 화면에 표시되지 않았다. Codelab의 코드와 하나씩 비교를 해도 원인을 찾지 못하다가 AnimatedVisibility의 높이를 늘려보고 이유를 찾았다. 내가 직접 작성한 코드와 Codelab의 코드 중 차이점은 Material3를 사용하는가였는데, Material3의 경우 Scaffold에서 Modifier를 정의하지 않으면 내부 블록의 UI가 중첩되고 있었다. Modifer를 정의하는 대신 Scaffold-topBar에 .. 작업 일지 2023. 5. 31. [Android][Compose] Material2→Material3의 Typography Material2에서 Material3로 이전하면서 Typography(서체) 시스템이 변경되었다. 매개변수의 수는 거의 동일하지만 이름이 달라 파악하기 어려워 아래 표로 정리했다. Material2 Material3 h1 displayLarge h2 displayMedium h3 displaySmall N/A headlineLarge h4 headlineMedium h5 headlineSmall h6 titleLarge subtitle1 titleMedium subtitle2 titleSmall body1 bodyLarge body2 bodyMedium caption bodySmall button labelLarge N/A labelMedium overline labelSmall Android/Compose 2023. 5. 26. [Android] Execution failed for task ':app:checkDebugDuplicateClasses' ··· Caused by: java.lang.RuntimeException: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20) Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules kotlin-stdlib-1.8.10 ··· Compose lifecycle 관련 라이브러리를 gradl.. Android/이슈 처리 2023. 5. 11. [Git] Window 환경에서 Git 설치하기 Git 다운로드 하기 Git - Downloading Package Download for Windows Click here to download the latest (2.40.1) 32-bit version of Git for Windows. This is the most recent maintained build. It was released 11 days ago, on 2023-04-25. Other Git for Windows downloads Standalone Installer 32-bit Git for Win git-scm.com 위 공식 사이트에서 Click here to download를 클릭한다. Git 설치 진행 Git 라이선스에 관한 설명 Git 설치 경로 지정 Git을 설치할 때 .. Git 2023. 5. 6. [Android] SplashScreen 사용하기 Android 12부터 스플래시 화면을 구현하기 위한 SplashScreen API(참고)가 추가되면서 모든 앱이 시작할 때 스플래시 화면에 앱 아이콘을 보여주게 되었다. 이것 때문에 SplashScreen의 처리를 하지 않으면 앱 아이콘이 포함된 스플래시 화면이 먼저 노출되었다가 사용자가 구현한 스플래시 화면이 보이는 이슈가 생겼다. 기존에는 스플래시 화면을 구현하기 위해서 직접 화면을 만들어야 했다. 하지만 SplashScreen이 등장하고 나서는 직접 화면을 만들 필요도 없고 애니메이션과 같은 효과와 더불어 스플래시 화면을 간단하게 만들 수 있게 되었다. 그럼 기존 방식에 문제가 있었는가 하면 앱의 시작 상태 중 Hot Start에 그 이유가 있다. Hot Start 상태에서는 앱이 실행될 때 메모.. Android/Splash 2023. 4. 16. [Android] warning: Schema export directory is not provided ··· warning: Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false. 위 경고 메시지는 Room 라이브러리를 사용해서 데이터베이스 스키마를 생성할 때 exportSchema 설정에 의해 위의 경고가 뜬다. exportSchema는 Boolean 타입으로 데이터베이스 스키마를 폴더로 내보낼지 정할 수 있다. default 값이 true로 되어있는데 폴더 경로를 정해줘야 한다. 경로를 정해주지 않으면.. Android/이슈 처리 2023. 4. 7. [Android] Deprecated Gradle features were used in ··· Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. UnitTest 코드 실행 시 해당 warning 코드가 발생했다. Build 시 Gradle 8.0과 호환되지 않는 deprecated 된 기능을 사용하고 있어서 발생한 경고 문구라고 한다. settings.gradle에 jcenter()가 등록되어 있었는데 이 부분을 제거하니까 경고 문구가 사라졌다. 찾아보니 JCenter의 지원을 중단한 것 같다. JCenter service update | Android Developers Migrating Android dependencies from JCenter developer.android.com Android/이슈 처리 2023. 4. 5. [Android] Failed to instantiate test runner class ··· Failed to instantiate test runner class androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner Test 코드 실행 시 @Test 주석이 없어서 발생한 에러로 아래와 같이 설정을 하면 된다. @Test fun test() { } Android/이슈 처리 2023. 3. 22. [Android] An instance of PagingSource was re-used ··· 기존 프로젝트에서 Hilt를 적용을 위해 코드를 수정하였는데 Paging3 Adapter의 refresh() 호출 시 앱이 죽는 현상이 발생했다. java.lang.IllegalStateException: An instance of PagingSource was re-used when Pager expected to create a new instance. Ensure that the pagingSourceFactory passed to Pager always returns a new instance of PagingSource. 에러의 내용은 Pager가 새로운 인스턴스를 만들 때 PagingSource의 인스턴스를 재사용한다는 것이다. 문제가 되는 코드는 아래와 같았다. Repository @Sing.. Android/이슈 처리 2023. 3. 17. [Android] :app:hiltJavaCompileDebug Hilt를 공부하던 중 다음과 같은 에러가 발생했다. Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException: Unsupported metadata version. Check that your Kotlin version is >= 1.0 해당 에러를 찾아보니 코틀린과 Hilt의 호환 문제가 있다는 것 같다. 내가 사용하던 버전은 코틀린 1.7.20, Hilt 2.40.1 이였는데, 코틀린 버전을 1.8.0, Hilt 버전을 2.44로 변경했더니 빌드에 성공했다. Android/이슈 처리 2023. 3. 16. 이전 1 2 3 4 5 6 다음