2011-05-12 31 views
6

我正在開發一款適用於Android的簡單指南針類型應用程序,用於測試Xoom WiFi。加速計讀數的準確度始終爲SensorManager.SENSOR_STATUS_UNRELIABLE。磁場讀數總是準確的SensorManager.SENSOR_STATUS_ACCURACY_HIGH。這可能是Xoom中的錯誤,還是我的代碼中存在問題?Android Xoom加速計精度始終不可靠

onCreate: 
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
accelGravitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
magSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); 

onResume: 
mSensorManager.registerListener(accelListener, accelGravitySensor, SensorManager.SENSOR_DELAY_NORMAL); 
mSensorManager.registerListener(magListener, magSensor, SensorManager.SENSOR_DELAY_NORMAL); 

private final SensorEventListener accelListener = new SensorEventListener() { 
    public void onSensorChanged(SensorEvent event) { 
    Log.d(TAG, "accel (" + event.values[0] + ", " + event.values[1] + ", " + event.values[2] + ") accuracy=" + accuracyTag(event.accuracy)); 
    } 
    public void onAccuracyChanged(Sensor sensor, int accuracy) {} 
}; 

回答

2

的歌Nexus S有這個問題太(帶陀螺儀),它看起來就像是由於懶惰司機作家誰忘記了設置的準確性領域閱讀;)

只要數據很好,這應該是純粹的美容。

1

我不知道你是否有與羅盤精度的問題,但我知道我沒有當我使用

magSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) 

我強烈建議使用更多的東西像下面這樣。

mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
    List<Sensor> mySensors = mySensorManager.getSensorList(Sensor.TYPE_ORIENTATION); 
    if(mySensors.size() > 0){ 
     mySensorManager.registerListener(mySensorEventListener, mySensors.get(0), SensorManager.SENSOR_DELAY_NORMAL); 
     sersorrunning = true; 
     Toast.makeText(this, "Start ORIENTATION Sensor", Toast.LENGTH_LONG).show(); 
    } 

我發現,當我使用的磁場傳感器,而不是方向感應器,它的工作非常好我的手機(Droid難以置信),但文我妻子的手機上的各種瘋狂(Droid的臨) ,和我的同事的手機(三星Galaxy Tab)。所以你可能會考慮改變你的傳感器,僅僅爲了設備兼容性問題。 :-)