안드로이드/정리

[Android] 센서에 관해... (with camera)

안드로이드 기기는 움직임, 방향 및 다양한 환경 조건을 측정하는 센서가 내장되어 있다.

1. 환경센서

2. 동작센서

3. 위치센서

 

센서 사용을 위한 클래스 및 인터페이스 4가지

1. Sensor

2. SensorEvent 

3. SensorManager

4. SeonsorEventListener

 

SensorManager

센서를 관리하고 이용할 수 있도록 하는 클래스.

센서 이벤트 리스너 등록, 센서의 값 얻어오기 가능

 

Sensor

SensorManager를 통해 활용하고자 하는 유형의 센서 클래스 생성 가능

 

유형

- TYPE_ACCELEROMETER [ 하드웨어 ] - 중력을 포함해 x,y,z에서 기기에 적용되는 가속력 측정 (움직임 감지 흔들기, 기울기 등)

- TYPE_GRAVITY [ 소프트웨어, 하드웨어 ] - 세 개의 모든 물리적 축 x,y,z에서 기기에 적용되는 중력을 단위로 측정 (움직임 감지 흔들기, 기울기 등)

- TYPE_GYROSCOPE [ 하드웨어 ] - 물리적 축 x,y,z 둘레의 기기 회전 속도를 측정 (회전 감지, 회전, 돌리기 등)

 

SensorEvent 클래스

센서를 통해 발생하는 이벤트 정보를 담고있는 객체

int accuracy : 이벤트의 정확도

Sensor sensor : 이벤트가 발생한 센서

long timestamp : 이벤트가 발생한 시각

float[] values : 센서 데이터를 담고 있는 배열. 센서 유형에 따라 길이와 내용 달라짐

 

SensorEventListener 인터페이스

센서 값이 변경되었을 때 SensorManager에서 이벤트 형태로 값을 전달받을 수 있도록 함

SensorManager의 registerListener 메서드로 리스너 등록

센서 데이터 업데이트 필요하지 않으면 unregisterListener로 리스너 해제

 

SensorEventListener 구현할 때

- onAccuracyChanged(Sensor sensor, int accuracy) 등록된 센서 정확도 변경되었을 때 호출

- onSensorChanged(SensorEvent event) 센서의 값이 변했을 때마다 호출

두 가지 메서드 구현

 

환경센서는 무엇을?

주변 습도

주변 압력

주변 온도

조도...

 

동작센서는 무엇을?

선형 가속

회전 벡터

보행 계수기

걸음 감지기

가속도 센서

중력 센서

자이로스코프 센서...

 

위치센서는 무엇을?

지자기장 센서

가속도계

 

Camera에 대한 이야기

기종마다 카메라 회전, 기능 등이 다 다르다... 그래서 디바이스 마다 대응을 다 해야함..

카메라 앱을 제대로 만드려면 디바이스 대응을 다 해줘야한다..

그래서 요즘엔 Camera 앱 구현을 하는 것보다 전문 카메라 앱을 호출해 파일을 가져오는 형식으로 변경되는 추세

(촬영된 사진의 경로를 알 수 있으면 받아올 수 있다.)