android SensorEventListener问题
我正在尝试创建一个从数字罗盘读取数据的应用程序。我尝试重用《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 版本中使用传感器?
谢谢。
I am trying to create an application which reads data from digital compass. I tried to reuse the code from the book Professional Android Application Development but the IDE displayed a note
The type SensorListener is deprecated
I guess it is because the code from the book is written for the earlier SDK version so I tried to use SensorEventListener instead.
Then when I tried to register the listener
sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST);
an error appeared:
The method registerListener(SensorListener, int, int) in the type SensorManager is not applicable for the arguments (SensorEventListener, int, int)
so I tried to cast SensorEventListener to SensorListener, but the application doesn't work.
Does anyone know how to use sensor in newer SDK versions?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
有一个单独的
SensorEventListener
类需要使用。请参阅此处。There is a separate
SensorEventListener
class you need to use. See here.您实际上需要传入一个 Senor 对象,而不仅仅是它的 ID。
传感器传感器=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
sensorManager.registerListener(sensorListener,传感器,SensorManager.SENSOR_DELAY_FASTEST)
You actually need to pass in a Senor object, not just the ID of it.
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)
该方法已被弃用,您必须使用
它。
The method is just deprecated, you have to use
instead.
我遇到了同样的问题,但是当我将前两个参数转换为 (SensorEventListener) 和 (Sensor) 时,它起作用了。然后我意识到问题是由于某种原因我将传感器声明为“对象”类型而不是“传感器”类型,因此 Eclipse 无法识别参数的类型。
这对我有用:
但现在我已经正确地将 mAccelerometer 声明为 Sensor 类型,我不再需要强制转换。
I had the same problem but when I casted the first 2 parameters as (SensorEventListener) and (Sensor) it worked. I then realised the problem was that for some reason I had declared the Sensor as type "Object" and not "Sensor", so Eclipse failed to identify the types of parameters.
This worked for me:
But now I have correctly declared mAccelerometer as type Sensor I no longer need the casts.