2009-12-20 43 views
1

我想创建一个从数字罗盘读取数据的应用程序。我试图重新使用从书中专业Android应用开发的代码,但IDE显示的备忘android SensorEventListener问题

类型SensorListener已过时

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

然后,当我试图注册监听

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

错误出现了:

在类型的SensorManager方法registerListener(SensorListener,INT,INT)是不适用的参数( SensorEventListener,int,int)

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

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

谢谢。

回答

6

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

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

1

方法正在过时,你必须使用

registerListener(SensorEventListener, Sensor, int) 

代替。

1

我有同样的问题,但当我铸造的第一个2参数(SensorEventListener)和(传感器)它的工作。然后我意识到问题在于,由于某种原因,我将Sensor声明为类型“对象”而不是“传感器”,所以Eclipse未能识别参数的类型。

这为我工作:

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

但现在我已经正确地宣布mAccelerometer类型传感器我不再需要转换。