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를 상속받습니다.






onSensorChanged와 onAccuracyChanged를 override 합니다.

onSensorChanged는 값이 변할 때마다 불러와지는 것이고, onAccuracyChanged는 정확도가 변경될 때 불러와집니다.






onSensorChanged에 다음과 같이 적어줬습니다.

센서의 값을 TextView에 입력했습니다.








그 뒤, onResume에는 107 번째 줄처럼 listener를 등록해 줍니다.

SensorManager.SENSOR_DELAY_UI는 센서의 반응 속도를 말합니다.

onStop에는 117 번째 줄처럼 등록을 해제해 줍니다.

센서의 경우, 사용하지 않으면 꼭 등록 해제를 해줘야 합니다.






그리고 빠른 속도로 센서를 읽게 하려면 API 31 이상부터는 다음 권한이 필요합니다.

android.permission.HIGH_SAMPLING_RATE_SENSORS

그런데, 설명을 보면, 200 hz 이상일 때만이라는 데, 사실 언제 200 hz 이상인지 몰라서 그냥 보험 삼아 등록했습니다.






실행해 봅시다.






끝.


카테고리: Android

댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)