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