音頻通話過程中,考慮到靠近耳朵,為了避免誤觸,需要在靠近的時候關(guān)閉屏幕。大部分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有兩個回調(diào),分別是onSensorChanged和onSensorChanged,前者是傳感器檢測到的數(shù)據(jù)的變化,后者是精度的變化。這里我們用到了前者。在回調(diào)回來時,判斷靠近的距離,來關(guān)閉或者打開屏幕,代碼如下:
SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float value = sensorEvent.values[0];
isPickUp = value < sensorEvent.sensor.getMaximumRange();
//打開或者關(guān)閉屏幕
if (listener != null){
listener.onPickupDetected(isPickUp);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
};
最后在不需要使用的時候,一定要及時釋放掉。
manager.unregisterListener(sensorEventListener);