1

我有一个监听光传感器变化并读取其值的代码:

SensorManager sensorManager  = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mLightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

//light sensor listener
private SensorEventListener lightSensorEventListener = new SensorEventListener(){

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
            //my reading code
    }

这个简单的代码段在 Nexus S、Nexus One 和 Galaxy Nexus 上运行良好,无论屏幕是打开还是关闭。

但是在 HTC One X 上运行时,我发现它在关闭屏幕的情况下无法运行。即屏幕关闭时传感器似乎未触发。但是当屏幕打开时,它可以正常工作并给出正确的读数。

想知道这是否是硬件问题,所以我无能为力。还是只是设定问题?我已经在设置中打开了自动亮度,但它没有帮助。谢谢!

4

1 回答 1

1

传感器不需要在屏幕关闭的情况下工作。由于光传感器通常用于调整屏幕亮度,因此设备制造商在屏幕关闭的情况下不启用它可能是合理的。

也就是说,尝试抓住部分唤醒锁定,这是让传感器在屏幕关闭的情况下工作的方式(至少对于加速度计):

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
    PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Light sensor");
    wl.acquire();

确保您获得唤醒锁定权限:

并确保在完成后释放唤醒锁。

于 2012-10-11T05:33:36.837 回答