gpt4 book ai didi

android - 在 Android 上注册多个传感器监听器时出现问题

转载 作者:行者123 更新时间:2023-11-30 04:44:40 26 4
gpt4 key购买 nike

我正在尝试在一个传感器管理器中注册多个传感器监听器,但此代码不起作用:

boolean linearAccelerationRegistered = mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
boolean rotationVecRegistered = mSensorManager.registerListener(this, mOrientation, SensorManager.SENSOR_DELAY_FASTEST);

它只注册加速度计。当我注释掉第一条语句时它注册了旋转

最佳答案

从技术上讲,您只向传感器管理器注册一个监听器,但该监听器会监听多个传感器。我的第一个想法是,您必须为每个传感器使用不同的监听器类。我手头有一个示例 Activity ,其中我使用了四个传感器。我在传感器管理器中用不同的监听器注册了它们中的每一个。那奏效了。现在我用一个监听器尝试了您的方法,效果也不错。

很难说只有这两行可能出了什么问题。也许你认为,方向传感器没有注册,因为在方向变化排队之前,监听器连续从加速度计接收到多个值变化!?

如果您有多个传感器的一个监听器实例,您应该检查 SensorEvent 以找出哪个传感器报告了变化:

public void onSensorChanged(SensorEvent event) {
Sensor source = event.sensor;
if (source.equals(mAccelerometer)) {
// do your stuff
} else if (source.equals(mOrientation)) {
// do your stuff
}
}

尝试用它自己的监听器注册每个传感器,看看是否会得到不同的结果(但它也应该按照您指出的方式工作...):

mSensorManager.registerListener(mAccelerometerListener, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(mOrientationListener, mOrientation, SensorManager.SENSOR_DELAY_FASTEST);

关于android - 在 Android 上注册多个传感器监听器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com