android SensorEventListener问题

时间:2009-12-20 13:39:37

标签: android sensor

我正在尝试创建一个从数字罗盘中读取数据的应用程序。我尝试重用专业Android应用程序开发一书中的代码,但IDE显示了一个注释

  

不推荐使用SensorListener类型

我想这是因为本书中的代码是为早期的SDK版本编写的,所以我尝试使用SensorEventListener。

然后当我尝试注册听众时

sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST);

出现错误:

  

SensorManager类型中的方法registerListener(SensorListener,int,int)不适用于参数(SensorEventListener,int,int)

所以我尝试将SensorEventListener强制转换为SensorListener,但该应用程序不起作用。

有没有人知道如何在较新的SDK版本中使用传感器?

谢谢。

4 个答案:

答案 0 :(得分:8)

您需要使用单独的SensorEventListener课程。请参阅here

答案 1 :(得分:6)

您实际上需要传入一个Senor对象,而不仅仅是它的ID。

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)

答案 2 :(得分:1)

该方法刚刚弃用,您必须使用

registerListener(SensorEventListener, Sensor, int) 

代替。

答案 3 :(得分:1)

我遇到了同样的问题,但是当我将前2个参数(SensorEventListener)和(传感器)转换为有效时。然后我意识到问题是由于某种原因我将Sensor声明为“对象”类型而不是“传感器”,因此Eclipse无法识别参数类型。

这对我有用:

mSensorManager.registerListener((SensorManager)this, (Sensor)mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

但现在我已正确宣布mAccelerometer为传感器类型我不再需要演员表。