본문 바로가기

개발/안드로이드 개발

[안드로이드]sensor 정리

sensor 이벤트를 발생시킨 센서 객체
accuracy 이벤트가 발생했을 당시 센서의정확도
values 감지된 값
timestamp 센서 이벤트가 발생한 시간
 

센서의 종류 

타입

상수값

설명

TYPE_ACCELEROMETER

1

가속계

TYPE_MAGNETIC_FIELD

2

자기장

TYPE_ORIENTATION

3

회전 방향

TYPE_GYROSCOPE

4

자이로스코프역학적 운동을 조사하는 회전의

TYPE_LIGHT

5

조도화면 밝기 조정

TYPE_PRESSURE

6

압력 감지

TYPE_TEMPERATURE

7

온도계

TYPE_PROXIMITY

8

근접 거리계통화중 액정   사용

TYPE_ALL

-1

모든 센서
 

 
sensor의 정보

int getType ()

센서의 타입

String getName ()

센서의 이름

float getPower ()

전력 사용량을 밀리 암페어(mA)단위로 조사한다.

float getResolution ()

해상도

float getMaximumRange ()

최대 측정 범위

String getVendor ()

제조사

int getVersion ()

버전

 
sensor 리스너 등록 
boolean android.hardware.SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rate)

주기

설명

SENSOR_DELAY_UI

UI 갱신에 필요한 정도의 주기

SENSOR_DELAY_NORMAL

화면 방향 전환 등의 일상적인 변화 주기

SENSOR_DELAY_GAME

게임에 적합한 정도의 주기

SENSOR_DELAY_FASTEST

최대한의 빠른 주기


어플이 종료 후에도 리스너가 계속 등록되어있으면 불필요하게 베터리가 소모되기 때문에 리스너를 제거해주는것이 좋다.

 void android.hardware.SensorManager.unregisterListener(SensorEventListener listener, Sensor sensor)
 

사용 (mixare 소스중)
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
sensors = sensorMgr.getSensorList(Sensor.TYPE_ACCELEROMETER);
if (sensors.size() > 0) {
sensorGrav = sensors.get(0);
}
//리스너로 등록
sensorMgr.registerListener(sensorListener, sensorGrav, SENSOR_DELAY_GAME);

리스너 사용
 @Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
                //sensor Name으로 분기 
if (event.sensor.getName().equals(sensorMag.getName())) {
float x = event.values[0];
float y = event.values[1];  
float z = event.values[2];
}
}