2012-05-09 53 views
1

光线感应器将不工作我有听光传感器的变化和读取其值码:在HTC One X的,当屏幕关闭

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

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

这就是说,试图抓住一个局部唤醒锁,是让传感器与屏幕关闭(至少为加速度计)的工作方式:

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

确保你得到唤醒锁的权限:

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