Точность всегда равна 0 в SENSOR_ACCELEROMETER (Android) - PullRequest
2 голосов
/ 16 мая 2011

Я программирую приложение, которое должно получать данные от датчика акселерометра.

Я перезаписал функции onAccuracyChanged () и onSensorChanged ().Предполагается, что эти функции вызываются только при изменении точности или значений датчика, но в моем случае они меняются много раз в секунду и всегда возвращают одни и те же значения.

    @Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    if(sensor.getType()==Sensor.TYPE_ACCELEROMETER){
        Log.d(TAG, "Accuracy has changed: "+accuracy);
    }
}

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
        x = event.values[SensorManager.DATA_X];
        y = event.values[SensorManager.DATA_Y];
        z = event.values[SensorManager.DATA_Z];
        Log.d(TAG, "Sensor changed: "+ event.accuracy+", "+x+", "+y+", "+z);
    }       
}

Это раздражает, нотакже раздражает, что точность всегда равна 0 (SensorManager.SENSOR_STATUS_UNRELIABLE), поэтому я не могу доверять этому.

Что может происходить?Устройство Samsung Galaxy S, поэтому в нем есть акселерометр.

Спасибо!

1 Ответ

0 голосов
/ 09 августа 2011

вы можете вернуть возвращаемое значение в формате с плавающей запятой и очень точно, вы можете просто преобразовать их в целое или даже использовать условие, чтобы получить результат, только когда телефон находится в определенном положении

@Override
public void onSensorChanged(SensorEvent event) {

    if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){

        x = event.values[SensorManager.DATA_X];

        y = event.values[SensorManager.DATA_Y];

        z = event.values[SensorManager.DATA_Z];

        if( x > -3 && x < 3  && y > -3 && y < 3  && z < -7 && z > -13  ){
         // this will return value only when the phone is upside down on the table
         // u can set as ur own liking
         Log.d(TAG, "Sensor changed: "+ event.accuracy+", "+x+", "+y+", "+z);
        }
    }       
}
...