0

我目前正在尝试制作一个 Android 演示,以大约 50Hz 的采样率测试光照水平。但是,我每秒只能onSensorChanged回调 2-3 次。我的手机是小米mi5s(安装了lineage os 14.1),安卓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);
    }
}
4

1 回答 1

0

您可以使用 SENSOR_DELAY_FASTEST 代替正常。这将使其与硬件提供可靠读数一样快。但完全有可能光传感器不能在 50 赫兹下工作。它的主要用例不需要这样做。

于 2017-12-18T04:27:24.243 回答