1

我正在尝试创建一个从数字罗盘读取数据的应用程序。我尝试重用 Professional Android Application Development 一书中的代码,但 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

4 回答 4

8

SensorEventListener您需要使用一个单独的类。见这里

于 2009-12-20T13:56:41.520 回答
6

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

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

于 2009-12-21T16:01:16.090 回答
1

该方法已被弃用,您必须使用

registerListener(SensorEventListener, Sensor, int) 

反而。

于 2011-10-17T23:38:36.250 回答
1

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

这对我有用:

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

但是现在我已经正确地将 mAccelerometer 声明为传感器类型,我不再需要演员表。

于 2011-12-17T14:15:59.513 回答