2014-02-19 7 views
1

Я пытаюсь использовать акселерометр и датчик магнитного поля на моем Nexus 4, но он не работает Я использую следующий код ...Nexus 4 Sensor.TYPE_ACCELEROMETER не работает

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 !! Я пробовал на своем Samsung 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 ...

Удивительно, как я могу использовать магнитный датчик ... но не акселерометр! Может кто-нибудь предложить что-нибудь?

ответ

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 ... Вызов события датчик акселерометра просто не работает ...

Как только я понижен до 4.2.2 .. Это начал работать нормально ...

Кажется, проблема с ошибкой/драйвером, которую Google по-прежнему не исправил!

Смежные вопросы