2011-05-12 11 views
6

Android için basit bir pusula türü uygulama üzerinde çalışıyorum, Xoom WiFi üzerinde test ediyorum. İvmeölçer okumalarının doğruluğu her zaman SensorManager.SENSOR_STATUS_UNRELIABLE'dur. Manyetik alan okumaları her zaman doğruluktur SensorManager.SENSOR_STATUS_ACCURACY_HIGH. Bu Xoom'da bir hata olabilir mi, yoksa kodumda bir sorun mu var?Android Xoom accelererometre doğruluğu her zaman güvenilir değildir.

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) {} 
}; 

cevap

2

Nexus S (jiroskop) ile de bu sorunu vardır ve bu gibi bunun nedeni doğruluğu alanını kurmayı unuttuğu bir tembel sürücü yazar arar: bu yayınları kontrol okuma;)

Veriler iyi olduğu sürece, bu yalnızca kozmetik olmalıdır.

1

Eğer pusula doğruluğuyla ilgili sorunları yaşıyorsanız bilmiyorum, ama ben ben çok fazla Aşağıdaki gibi bir şey kullanarak tavsiye

magSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) 

kullanıldığında benim yaptığımı biliyorum.

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(); 
    } 

ben manyetik alan sensörü, yerine yönlendirme sensörü kullanıldığında, bu benim telefona (Droid Incredible) oldukça iyi çalıştı, ancak bulundu wen eşimin telefonda deli her türlü (Droid Pro) ve iş arkadaşımın telefonu (Samsung Galaxy Tab). Bu yüzden, sadece cihaz uyumluluk sorunları için sensörünüzü değiştirmeyi düşünebilirsiniz. :-)