5

誰かが近接センサーの使用方法の例を提供できますか? 他のセンサーと同じように使ってみましたが、うまくいきません。

これは私が使用しているコードスニペットです:

 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);

どこが間違っているのか教えてください。

4

2 に答える 2

5

このメソッドregisterListener(SensorListener, int, int)は非推奨です。registerListener(SensorEventListener, Sensor, int)代わりに次を使用してください。

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

Sensor(Event)Listenerさらに、登録を解除できるように、への参照を保存する必要があります。

于 2011-02-21T22:52:06.543 に答える
2

ガベルは正当な主張をしている。最新の API を使用してください。

また、近接センサーは他のセンサーとは異なる方法で実装されていることに注意してください
。他のセンサーは「ポーリング」できますが、
近接センサーは割り込みベースです。

したがって、onSensorChangedイベントは、近接状態の
遷移が発生した場合 (つまり、近距離または遠距離) にのみ取得されます。

多くの場合、近接センサーは光センサー ハードウェアを使用して実装されます。
そのため、アプリを起動して
、デバイスの上部にある光センサーをカバー/カバー解除できます。そうすることで、近接センサーの遷移がトリガー
され、アプリで確実にデータ (0/1 または遠/近) を取得できます。

Android の近接センサーの詳細については、こちらをご覧ください。

于 2011-03-05T04:21:05.097 に答える