Nexus 4 Sensor.TYPE_ACCELEROMETER无法正常工作

时间:2014-02-19 00:57:27

标签: android accelerometer sensor nexus-4

我正在尝试在我的Nexus 4上使用加速度计和磁场传感器,但它无法正常工作 我使用以下代码...

protected Sensor compass;
protected Sensor accelerometer;
protected SensorManager sensorManager;

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

    try {
        sensorManager.registerListener(this, compass, SensorManager.SENSOR_DELAY_UI);
        sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI);
        Log.d(TAG, "Registered CompassSensorWatcher");
    } catch (Exception e) {
        Log.e("could not register listener", e.toString());


public void onSensorChanged(SensorEvent event) {

    // Logger.d("sensor changed "+event);
    // we use TYPE_MAGNETIC_FIELD to get changes in the direction, but use SensorManager to get directions
    if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
        return;

    // Gets the value of the sensor that has been changed
    switch (event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
        gravity = event.values.clone();
        Log.d(TAG, "Accelerometer onSensorChanged() ");
        Log.d(TAG,String.valueOf(gravity[0]) );
        break;
    case Sensor.TYPE_MAGNETIC_FIELD:
        geomag = event.values.clone();

        break;
    }
}

我能够很好地获得磁传感器值......但不是加速度计值......

我在多款手机上试过这个...但问题似乎只出现在我的Nexus 4上!! 我尝试了我的三星S4,它在那方面工作得很好......但不是在Nexus 4上......

Nexus 4使用Android 4.3。

然后我升级到Android 4.4.2但仍然加速度计没有工作..

我尝试过使用Play商店中使用加速计(SensorBox)的其他几个应用程序..它有效 在Nexus 4上很好,但不是我的代码...

我也把它放在我的AndroidManifest.xml中:

 <uses-feature android:name="android.hardware.sensor.accelerometer" />
<uses-feature android:name="android.hardware.sensor.compass" />

问题似乎只有Nexus 4 ......

令人惊讶的是我如何才能使用磁传感器,但不是加速度计! 任何人都可以建议吗?

1 个答案:

答案 0 :(得分:0)

好的,我的手机闪了5次以上..我找到了解决方案.. 这个问题是一个已知问题: http://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=62876

https://productforums.google.com/forum/#!topic/mobile/b0duELH-tV0

通过将我的Nexus降级为4.2.2来解决问题

以下是降级说明: http://www.cultofandroid.com/46632/downgrade-nexus-4-to-android-4-3-jelly-bean-from-kitkat/2/ (您可以按照4.2.2的相同说明进行操作)

我尝试了Android 4.3,4.4.2 .. CyanogenMod 4.4.2 ......对于Accelerometer的传感器事件调用只是不起作用...

我一降级到4.2.2 ......它开始正常工作......

Google似乎仍然没有修复一些错误/驱动程序问题!