java - Android,使用硬件罗盘

标签 java android sensors

我在 Android 的硬件罗盘上找不到太多信息。我一直在尝试设置我的标准来强制 Android 使用硬件罗盘。基本上我的问题是即使设备静止时我也希望轴承更新。

据我了解,GPS 只会在您移动时更新您的方位。无论您是否移动,我都希望方位更新。我尝试通过将速度设置为恒定的 10 来欺骗设备,使其认为它正在移动,但轴承始终返回 0.0。

我的测试设备(目前)是 HTC Tattoo。它有一个指南针,所以这不是问题。所以我的问题是,有没有办法使用硬件罗盘来更新方位?不管你搬不搬?

最佳答案

你见过this example code吗? ?这里使用了一个SensorListener来查询方向:

mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mListener = new SensorListener() {
    public void onSensorChanged(int sensor, float[] values) {
        if (Config.LOGD) Log.d(TAG, "sensorChanged (" + values[0] + ", " + values[1] + ", " + values[2] + ")");
        mValues = values;
        if (mView != null) {
            mView.invalidate();
        }
    }
mSensorManager.registerListener(mListener, 
                    SensorManager.SENSOR_ORIENTATION,
                    SensorManager.SENSOR_DELAY_GAME);

好的,这是已弃用的代码。现在 SensorManager 有一个可以使用的 getOrientation() 方法。不过这确实需要一个旋转矩阵。参见 here for an example .

关于java - Android,使用硬件罗盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974185/

相关文章:

Java生成不重复2 ^ 48周期的 "random"数字

java - 找不到taskdef类org.apache.tools.ant.taskdefs.可选.junit.JUnitTask

java - addAccount 未从 MainActivity 的 AbstractAccountAuthenticator 实现中调用

windows-phone-8 - WP8 应用程序使用传感器恢复

java - 对于 OpenHab Zwave Bundle,MultiLevelSensor 显示读数的底层代码在哪里?

java - 为 displaytag 表装饰器指定自定义属性

java - 在应用计费和替换公钥中。这有什么大不了的?

android - 以编程方式完成 Device Farm 交互式测试

android - Android Studio中文件中的Gradle nexus密码-创建全局属性

android - 是否可以仅使用加速度计让智能手机移动距离?