首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指南针在某些设备上不工作

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

Stack Overflow用户
提问于 2011-12-28 01:39:59
回答 2查看 2K关注 0票数 1

我们最近发布了一个iPhone应用的安卓移植。该应用程序的一些功能依赖于数字罗盘。这在大多数设备上都工作得很好,但也有一些指南针不起作用。根据描述,设备似乎没有向我们提供任何onSensorChanged()消息。

几个看起来有问题的设备是: Android 2.2上的HTC Desire,Android 2.2.3上的Motorola Droid

他们声称,其他使用指南针的应用程序运行良好。

我们使用以下命令启动指南针:

代码语言:javascript
复制
    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) );
        }
    }

其中磁力计和加速计在程序启动时使用以下命令初始化:

代码语言:javascript
复制
    sensorManager = (SensorManager) getSystemService( SENSOR_SERVICE );
    accelerometer = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER );
    magnetometer = sensorManager.getDefaultSensor( Sensor.TYPE_MAGNETIC_FIELD );

现在,上面的代码表明,如果加速计==为空或磁力计==为空,则不会进行配准。我很确定磁力计不是空的,因为如果是空的,我们就隐藏了指南针的特征。所以可能这些手机上的加速度计是空的?

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

那么,有没有人知道为什么指南针代码可能在这些设备上不起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-29 23:09:00

我确实想通了。在2.2中,除了标准的SENSOR_DELAY_UI、SENSOR_DELAY_NORMAL等,你不能使用传感器速率。文档声称你也可以指定两次通知之间的微秒数,但他们是在撒谎。

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

票数 1
EN

Stack Overflow用户

发布于 2011-12-28 19:25:33

你还没解释那是什么意思,指南针不工作了。

如果您未获得有效数据,则此设备可能存在众所周知的问题。对于我的,我需要always在手中(水平和垂直)滚动它来解锁指南针。一些应用程序称它为校准,但对我来说,这是一件荒谬的事情……我有HTC的欲望。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8647567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档