在HTC One X上,当屏幕关闭时,光线传感器将无法工作

时间:2012-05-09 16:21:24

标签: android sensor

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

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上运行时,我发现当屏幕关闭时它不起作用。即当屏幕关闭时,传感器似乎没有被触发。但是当屏幕打开时,它可以正常工作并提供正确的读数。

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

1 个答案:

答案 0 :(得分:1)

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

也就是说,试着抓住部分唤醒锁,这是让传感器关闭屏幕的方法(至少对于加速度计):

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

确保获得唤醒锁定权限:     

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