2011-05-12 6 views
6

私はXoom WiFiでテストして、Android用の単純なコンパスタイプのアプリケーションを開発しています。加速度計の読み取り値の精度は常に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

ネクサス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(); 
    } 

、および私の同僚の電話(サムスンギャラクシータブ)。したがって、デバイスの互換性の問題だけでセンサーを変更することを検討することもできます。 :-)

関連する問題