无法在Android中获取接近传感器的值

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

请告诉我我哪里做错了。
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 的引用,以便能够注销它。

2

Gubbel提出了一个有力的观点,请使用最新的API。

请注意,接近传感器与其他传感器的实现方式不同。而其他传感器可以被“轮询”,接近传感器是基于中断的。

因此,只有当接近状态发生转换(即从近到远或从远到近)时,您才会收到onSensorChanged事件。

通常,接近传感器使用光传感器硬件实现。因此,您可以启动应用程序并覆盖/揭开设备顶部的光传感器。这样做将触发接近传感器的转换,然后您肯定会在应用程序中获得数据(0/1或远/近)。

更多信息请参见Android上的接近传感器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接