繁体   English   中英

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

[英]Problem registering multiple sensor listeners on Android

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

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

它仅注册加速度计。 当我注释掉第一条陈述时,它记录了轮换

从技术上讲,您只向传感器管理器注册一个侦听器,但是此侦听器侦听多个传感器。 我的第一个想法是,必须为每个传感器使用不同的侦听器类。 我手边有一个示例活动,其中使用了四个传感器。 我在传感器管理器中为每个人注册了一个不同的侦听器。 那行得通。 现在,我与所有一个听众一起尝试了您的方法,并且效果很好。

仅凭这两行很难说出什么地方出了问题。 也许您认为方向传感器未注册,因为在方向更改排队之前,监听器已连续收到来自加速度计的多个值更改!

如果您有一个用于多个传感器的侦听器实例,则应检查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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM