我正在尝试创建一个从数字罗盘中读取数据的应用程序。我尝试重用专业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版本中使用传感器?
谢谢。
答案 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为传感器类型我不再需要演员表。