我正在尝试在我的 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 ...
令人惊讶的是,我可以很好地使用磁性传感器……但不能使用加速度计!任何人都可以提出一些建议吗?