我有一个代码可以监听光传感器的变化并读取它的值:
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上运行时,我发现当屏幕关闭时它不起作用。即当屏幕关闭时,传感器似乎没有被触发。但是当屏幕打开时,它可以正常工作并提供正确的读数。
想知道这是否是硬件问题,以至于我无能为力。或者它只是一个设置问题?我已经在设置中打开了自动亮度,但它没有帮助。 谢谢!
答案 0 :(得分:1)
传感器不需要关闭屏幕。由于光传感器通常用于调整屏幕亮度,因此设备制造商在关闭屏幕时不启用它是合理的。
也就是说,试着抓住部分唤醒锁,这是让传感器关闭屏幕的方法(至少对于加速度计):
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Light sensor");
wl.acquire();
确保获得唤醒锁定权限:
确保在完成后释放唤醒锁。