音频通话过程中,考虑到靠近耳朵,为了避免误触,需要在靠近的时候关闭屏幕。大部分Android手机上有各种各样的传感器,这里就用到了距离传感器。
下面的代码可以获取到传感器对象,注册添加接口。
manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
if (manager != null){
mProximitysensor = manager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
注册:
manager.registerListener(sensorEventListener,mProximitysensor,SensorManager.SENSOR_DELAY_FASTEST);
sensorEventListener
有两个回调,分别是onSensorChanged
和onSensorChanged
,前者是传感器检测到的数据的变化,后者是精度的变化。这里我们用到了前者。在回调回来时,判断靠近的距离,来关闭或者打开屏幕,代码如下:
SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float value = sensorEvent.values[0];
isPickUp = value < sensorEvent.sensor.getMaximumRange();
//打开或者关闭屏幕
if (listener != null){
listener.onPickupDetected(isPickUp);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
};
最后在不需要使用的时候,一定要及时释放掉。
manager.unregisterListener(sensorEventListener);