android SensorEventListener问题

发布于 2024-08-15 16:18:14 字数 653 浏览 3 评论 0原文

我正在尝试创建一个从数字罗盘读取数据的应用程序。我尝试重用《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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

橘和柠 2024-08-22 16:18:14

有一个单独的 SensorEventListener 类需要使用。请参阅此处

There is a separate SensorEventListener class you need to use. See here.

暮年 2024-08-22 16:18:14

您实际上需要传入一个 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)

樱桃奶球 2024-08-22 16:18:14

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

registerListener(SensorEventListener, Sensor, int) 

它。

The method is just deprecated, you have to use

registerListener(SensorEventListener, Sensor, int) 

instead.

橙味迷妹 2024-08-22 16:18:14

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

这对我有用:

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

但现在我已经正确地将 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:

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

But now I have correctly declared mAccelerometer as type Sensor I no longer need the casts.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文