4월, 2023의 게시물 표시

Android Room database test

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Flamingo 2022.2.1 ​ 안드로이드 Room database test를 알아보겠습니다. ​ Room database를 만든 다음, 테스트를 해볼 필요가 있을 때, 어떻게 해야 하는지 알아봅시다. ​ 아래는 테스트와 관련된 문서입니다. https://developer.android.com/training/data-storage/room/testing-db Room database 테스트는 안드로이드 기기에서 하는 것과 본인 컴퓨터로 하는 방법이 있습니다. 여기서는 JUnit을 사용하여 안드로이드 기기에서 테스트하는 것을 알아봅니다. ​ ​ androidTest 파일에 우클릭 - New - Kotlin Class/File을 누릅니다. 적당한 이름으로 만듭니다. 저는 RoomDatabaseTest로 만들었습니다. 13 번째 줄처럼 @RunWith(AndroidJUnit4::class)를 적어줍니다. 15 번째와 16 번째 줄처럼 Dao와 db 변수를 만듭니다. 18 번째 줄처럼 @Before를 적어줍니다. Before는 Test 이전에 실행되는 함수로 필요한 변수들을 초기화합니다. 그 후, createDb()에 db를 생성하고 dao를 가져옵니다. 그다음, @After를 사용해서 db를 닫아줍니다. After는 Test가 끝난 후에 실행되는 것으로 해제할 때 사용합니다.

Android current target is 17 error

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Flamingo 2022.2.1 ​ 안드로이드 current target is 17 error를 알아보겠습니다. 안드로이드 스튜디오에서 플라밍고 Flamingo 버전을 출시했습니다. 그냥 빌드 하면 이렇게 오류가 발생합니다. Execution failed for task ':app:kaptGenerateStubsDebugKotlin'. > 'compileDebugJavaWithJavac' task (current target is 11) and 'kaptGenerateStubsDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.   Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain What's new 부분에 보시면, JDK 17이 필요하다고 적혀있습니다. File - Project Structure...로 갑니다. SDK Location으로 갑니다. JDK location was moved to Gradle Settings.를 누릅니다. Download JDK...를 누릅니다. 저는 Amazon Corretto로 사용해 보기로 했습니다. 이제, OK를 누르면 됩니다. 앱 용 build.gradle로 가서 sourcecompatibility, tar

Algorithm Bipartite Matching

이미지
알고리듬 Bipartite Matching을 알아보겠습니다. Bipartite Matching은 이분 매칭으로 한 쪽에서 한 쪽으로 매칭 시키는 것을 말합니다. ​ 예를 들어서 의자 앉기를 보죠. 4 사람과 4 개의 의자가 있습니다. 이 사람들이 최대 몇 명까지 의자에 앉을 수 있을까요? ​ 정답은 4 명 모두 다 앉을 수 있습니다. 0 -> 0 1 -> 1 2 -> 2 3 -> 3 이렇게 앉으면 됩니다. 이걸 알고리듬으로 어떻게 찾느냐가 문제인데요. ​ ​ 다음과 같이 풀이합니다. 0 번을 0 번에 앉힙니다. 다음 1 번은 어디 앉을까요? 일단 첫 번째 화살표로 갑니다. 어라... 0 번이 있네요. 0 번이 다른 곳에 앉을 수 있는지 찾아봅니다. 만약 다른 곳에 앉을 곳이 있다면, 0 번이 양보를 해주고 다른 곳으로 갑니다. 만약 다른 곳에 앉을 곳이 없다면, 1 번은 의자에 앉지 못합니다. 다행히 3 번에 앉을 수 있군요! ​ 다음, 2 번 앉아 봅시다. 첫 번째 화살표로 갑니다. 없네요. 앉습니다. 자, 마지막 3 번 앉아 봅시다. 어랏... 0 번이 있네요. 이제, 0 번을 다른 곳에 앉혀 봅니다. 1 번이 있네요. 1 번을 다른 곳에 앉혀 봅니다. 2 번이 있네요. 2 번을 다른 곳에 앉혀 봅시다. 오, 마침 2 번 자리가 비었군요. 그럼 이제, 모두 자리에 앉힙니다.

Android How to use a spinner

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Electric Eel 2022.1.1 Patch 2 ​ 안드로이드 How to use a spinner를 알아보겠습니다. ​ 안드로이드에는 드롭 다운 방식으로 메뉴를 나타낼 수 있는 뷰가 있습니다. 바로 Spinner인데요. 요렇습니다. 관련 문서는 아래에 있습니다. https://developer.android.com/develop/ui/views/components/spinner 먼저, 사용할 Spinner를 layout에 만들어 줍니다. <Spinner /> 스피너에는 3 가지 요소가 필요합니다. • Spinner • SpinnerAdapter • AdapterView.OnItemSelectedListener ​ ​ 스피너에 나타날 목록들은 string resource file로 만들어서 줄 수도 있고, 그냥 Array를 사용해서 만들 수도 있습니다. resourece를 사용하면 다음과 같이 하면 됩니다. 하지만, 저렇게 사용하기보다는 Array를 사용해서 만드는 게 더 간편하고 자주 사용될 것 같아서 Array를 직접 만들어 보겠습니다. ​ 24 번째 줄에서 spinner를 불러옵니다. 27 번째 줄처럼 spinner에 사용할 목록을 만듭니다. 30 번째 줄처럼 ArrayAdapter를 만듭니다. android.R.layout.simple_spinner_item으로 설정합니다. 35 번째 줄에서 setDropDownViewResource에 android.R.layout.simple_spinner_

Android How to use a Geomagnetic field sensor

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Electric Eel 2022.1.1 Patch 2 ​ 안드로이드 How to use a Geomagnetic field sensor를 알아보겠습니다. ​ 안드로이드 기기에는 여러 가지 센서가 탑재되어 있습니다. 이번 시간에는 지구 자기장 센서를 사용하는 방법을 알아보겠습니다. ​ ​ 지구 자기장 센서 문서는 아래에 있습니다. https://developer.android.com/guide/topics/sensors/sensors_position 아래는 이번에 사용할 layout입니다. 19 번째 줄처럼 SensorManager를 만듭니다. 20 번째 줄처럼 Sensor를 만듭니다. 22 번째 줄에서 29 번째 줄까지 위에서 본 TextView를 정의합니다. ​ 39 번째 줄처럼 getSystemService를 사용하여 Context.SENSOR_SERVICE를 SensorManager로 불러옵니다. 만약 여러 센서가 있다면, 45 번째 줄처럼 getSensorList를 사용하여 목록을 불러올 수 있습니다. 여기서 불러올 센서는 TYPE_MAGNETIC_FIELD_UNCALIBRATED를 불러옵니다. 51 번째 줄처럼 목록에서 센서를 불러옵니다. 원하는 제조사가 있다면 52 번째 줄처럼 검색해 봅니다. MAGNETIC_FIELD_UNCALIBRATED에는 다음과 같은 값이 불러와집니다. 57 번째 줄처럼 만약 원하는 제조사가 없어서 null이라면 그냥 기본 센서를 불러옵니다. 17 번째 줄처럼 SensorEventListener를 상속받습니다. onSensor