Android Programming
[Mobile Programming] 센서
gangintheremark
2021. 12. 17. 07:22
728x90
센서 하드웨어
센서
- 스마트폰 역할이 커져 연결되는 센서 많아짐
- 독립센서, 복합센서
주요센서 종류
- 자이로(위치)
- 근접(거리)
- 가속도(가속도)
- 주변광(주변의 밝기)
- 나침반(방향)
- 헬스
[안드로이드의 센서관리자 클래스]
SensorManager 클래스 : 장치에 내장되어 있는 센서의 리스트를 먼저 제공받기
- getDefaultSensor : 목적에 맞는 센서 지정
- 주어진 타입에 대한 디폴트 센서 얻음
- 복합센서인 경우 데이터가 필터링
- getSensorList()로 원천 센서에 접근
sensor_manager클래스 메서드
// 예시) 가속도 센서에 대한 정보 얻기
accelerometer = sensor_manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
실습
센서의 종류와 능력의 출력을 위한 버튼을 만들고, 클릭시 센서의 정보에 대한 정보 출력
- SensorManager 클래스 객체 만들기
- getSystemService통해 획득한 정보 입력
- 스마트폰 정보가 SensorManager 객체로 들어감
- manager.getSensorList를 사용하여 원하는 센서 정보수집
센서로부터 데이터 읽기
센서로부터 값을 받는 방법
- 측정 값을 받고 싶은 센서에 '리스너 등록'
- 애플리케이션에서 값을 전달 받음
sensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate)
// 이벤트 처리 함수 센서 데이터 수집 간격
[Rate 파라메터] : 사용자 설정 → micro second 단위로 입력
- Sensor_delay_normal
- Sensor_delay_UI
- Sensor_delay_game
- Sensor_delay_fastest
- 센서로부터 값을 전달받을 때 사용하는 것 : SensorEventListener 클래스 → 무명 클래스로 만듦
[SensorEventListner 콜백함수]
- 센서 값의 변화가 있을 때 호출되는 콜백함수 : onSensorChanged(SensorEvent event) // 변화된 온도정보
- 센서 값의 정확도에 변화가 있을 때호출되는 콜백함수 : onAccuracyChanged(Sensor sensor, int accuracy) // 정밀도
실습
스마트폰의 특정 센서 정보 활용 실습
방향 센서
- 현재 장착된 스마트폰 장치의 자세 표시
- x,y,z축에 대한 회적 각도를 나타내는 오일러 앵글로 표시된 데이터 제공
실습
- 나침반 만들기 실습
azimuth 값을 이용한 draw함수 프로그램 작성
728x90