Я пытаюсь использовать акселерометр и датчик магнитного поля на моем 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 ...
Удивительно, как я могу использовать магнитный датчик ... но не акселерометр! Может кто-нибудь предложить что-нибудь?