android - 无法访问 Android 中的传感器

标签 android sensors

我正在编写一个指南针应用程序,但由于某种原因无法访问所需的传感器。 我已经实现了 SensorEventListener 接口(interface)并以这种方式注册我的传感器:

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

在我的 onSensorChange() 方法中:

public void onSensorChanged(SensorEvent event) {
    Toast t = Toast.makeText(this, "onSensorChanged", Toast.LENGTH_LONG);
    t.setGravity(Gravity.TOP, 0, 0);
    t.show();
    if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
        mGravity = event.values;
    }
    if(event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
        mGeomagnetic = event.values;
    }

    if(mGravity !=null && mGeomagnetic !=null){
        float [] R = new float[9];
        float [] I = new float [9];
        boolean success = sensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
        if(success){
            float [] orientation = new float [3];
              sensorManager.getOrientation(R, orientation);
            north = orientation[0];
        }
    }
}

Toast 消息不会显示在屏幕上,当我尝试将北方值放入 TextView 时,输出为 0 .如果有人可以向我解释为什么我无法访问 onSensorChanged() 方法,那就太好了。 list 中的权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

最佳答案

sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_NORMAL);

不要忘记注销它们。

更多:http://developer.android.com/reference/android/hardware/SensorManager.html

关于android - 无法访问 Android 中的传感器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970065/

相关文章:

php - 基本 PHP SQL - 从 URL 查询多个内容

android - 关于调试器安全的问题

android - 为什么有些用户在 SQLiteDatabase.dbopen() 中得到 SQLiteException?

javascript - 英特尔 Edison node.js 示例代码不适用于 BMP 180 - gy68 气压计

android - 是否可以通过随时间积分加速度计数据来计算速度?

android - 如何使不同颜色的列表行的选择突出显示?

android ScrollView 最小化我的项目高度

android - 如何检查安卓设备中 TYPE_SIGNIFICANT_MOTION 传感器的可用性?

android - 使用 react-native-sensors 检测摇动设备事件?