Частота дискретизации датчика освещенности Android слишком низкая
В настоящее время я пытаюсь сделать демо-версию Android для тестирования уровня освещенности с частотой дискретизации около 50 Гц. Тем не менее, я мог только получить onSensorChanged
Обратный звонок 2-3 раза в секунду. У меня телефон xiaomi mi5s(установлена lineage os 14.1), Android 7.1.
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mLight;
@Override
public final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here if sensor accuracy changes.
}
@Override
public final void onSensorChanged(SensorEvent event) {
// The light sensor returns a single value.
// Many sensors return 3 values, one for each axis.
float lux = event.values[0];
Log.i("zz", lux + "");
// Do something with this sensor value.
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
}
1 ответ
Вы можете использовать SENSOR_DELAY_FASTEST вместо обычного. Это сделало бы это так же быстро, как аппаратное обеспечение дает надежные показания для. Но вполне возможно, что датчик освещенности не работает на частоте 50 Гц. Основные варианты использования для этого не требуют.