2010-12-09 8 views
5

근접 센서 사용 방법에 대한 예를 제공 할 수 있습니까? 다른 센서와 같은 방식으로 사용하려고했지만 작동하지 않습니다. 내가 잘못 가고 어디android에서 근접 센서 값을 가져올 수 없습니다.

final SensorManager mSensorManager; 
final Sensor mproximity; 

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
mproximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 

mSensorManager.registerListener(new SensorListener(){ 

public void onAccuracyChanged(int arg0, int arg1) { 
    // TODO Auto-generated method stub 
    Toast.makeText(test.this,"proximity sensor accu ", Toast.LENGTH_SHORT).show(); 
} 

public void onSensorChanged(int arg0, float[] arg1) { 
    // TODO Auto-generated method stub 
    Toast.makeText(test.this,"proximity sensor ", Toast.LENGTH_SHORT).show(); 
} 

}, Sensor.TYPE_PROXIMITY, 1); 

을 가르쳐주세요 :

내가 사용 된 코드입니다.

답변

5

registerListener(SensorListener, int, int)가되지 않습니다 방법 대신 registerListener(SensorEventListener, Sensor, int)를 사용

mSensorManager.registerListener(proximityListener, 
     mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), 
     SensorManager.SENSOR_DELAY_UI); 

은 또한 당신이 당신의 Sensor(Event)Listener에 대한 참조를 저장해야 그 등록을 취소 할 수 있도록.

2

구버가 유효한 포인트입니다. 최신 API를 사용하십시오.

또한 근접 센서는
다른 센서와 다르게 구현됩니다. 다른 센서는 "폴링"될 수 있지만
근접 센서는 인터럽트 기반입니다.

그래서 당신은 가 근접 상태
전환이 발생하는 경우에만
이벤트를 onSensorChanged 수 (즉, 가까운 - 투 - 멀리 또는 원거리에-근처).

흔히 근접 센서는 광 센서 하드웨어를 사용하여 구현됩니다.
따라서 앱을 실행하고 기기의 상단
에있는 광 센서를 덮거나 열 수 있습니다. 그러면 근접 센서 전환
이 발생하고 앱에 데이터 (0/1 또는 원거리/근거리)가 표시됩니다.

Proximity sensor on Android에 대한 자세한 정보

관련 문제