2011-05-12 4 views
6

Xoom WiFi에서 테스트 한 Android 용 간단한 나침반 유형 응용 프로그램에서 작업하고 있습니다. 가속도계 판독 값의 정확도는 항상 SensorManager.SENSOR_STATUS_UNRELIABLE입니다. 자기장 판독 값은 항상 정확도 SensorManager.SENSOR_STATUS_ACCURACY_HIGH입니다. 이것이 Xoom의 버그 일 수 있습니까, 아니면 내 코드에 문제가 있습니까?Android Xoom accelererometer 정확도는 항상 신뢰할 수 없습니다.

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

은 내가 자기장 센서보다는 방향 센서를 사용하는 경우, 내 전화 (이드 인크 레 더블)에 꽤 잘 작동하지만, 발견 원자바오 내 아내의 전화에 미친 모든 종류의 (드로이드 프로) , 직장 동료 (삼성 갤럭시 탭). 따라서 장치 호환성 문제 만 해결하면 센서를 변경하는 것이 좋습니다. :-)