gpt4 book ai didi

android - 指南针在某些设备上不工作

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

我们最近发布了 iPhone 应用程序的 Android 端口。该应用程序的某些功能依赖于数字罗盘。这在大多数设备上运行良好,但也有一些指南针无法正常工作。对于描述,设备似乎没有向我们提供任何 onSensorChanged() 消息。

一些看起来有问题的设备是:Android 2.2 上的 HTC DesireAndroid 2.2.3 上的摩托罗拉 Droid

他们声称其他使用指南针的应用程序工作正常。

我们使用以下方式启动指南针:

    if ( magnetometer != null && accelerometer != null )
{
if ( compassOn )
{
sensorManager.registerListener( this, accelerometer, (int) (1000000 / kSensorUpdateFrequencyFast) );
sensorManager.registerListener( this, magnetometer, (int) (1000000 / kSensorUpdateFrequencyFast) );
}
else
{
sensorManager.registerListener( this, accelerometer, (int) (1000000 / kSensorUpdateFrequencySlow) );
sensorManager.registerListener( this, magnetometer, (int) (1000000 / kSensorUpdateFrequencySlow) );
}
}

在程序启动时使用以下方法初始化磁力计和加速度计:

    sensorManager = (SensorManager) getSystemService( SENSOR_SERVICE );
accelerometer = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER );
magnetometer = sensorManager.getDefaultSensor( Sensor.TYPE_MAGNETIC_FIELD );

现在上面的代码表明,如果加速度计 == null 或磁力计 == null,则不会发生注册。我很确定磁力计不为空,因为如果是,我们将隐藏罗盘功能。那么这些手机上的加速度计可能为空?

我的 onSensorChanged() 中的代码非常标准,并且基于您可以在网络上找到的无数示例。

那么有人对为什么罗盘代码可能无法在这些设备上工作有任何想法吗?

最佳答案

我确实弄清楚了。事实证明,在 2.2 中,您不能使用标准 SENSOR_DELAY_UI、SENSOR_DELAY_NORMAL 等以外的传感器速率。文档声称您还可以指定通知之间的微秒数,但它们在撒谎。

一旦我使用了标准常量,它就开始在 2.2 上工作

关于android - 指南针在某些设备上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647567/

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