0

我知道这类似于这个问题 android: close off screen when close to face 和许多其他问题。但我找不到任何可行的解决方案。

所以我有一个播放音频的程序。我听接近传感器:

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.values[0] == 0.0){
        //phone close to face
        playAudio();
    }else{
        //phone away
        stopAudio();
    }

我已使用此代码在靠近脸部时禁用屏幕:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 0;
getWindow().setAttributes(params); 

但我不知道如何找回它:) 我试过:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1f; //tried all (1, 100, -1, 0)
getWindow().setAttributes(params); 

还有一些建议:

PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();

但没有任何效果。当我将手机从脸部移开时,音频停止。所以活动不会暂停。

4

1 回答 1

0

将先前的屏幕亮度值保存在变量中,然后使用 setAttributes 恢复它

例如:

// Before changing brightness to 0
WindowManager.LayoutParams params = getWindow().getAttributes();
float oldScreenBrightness = params.screenBrightness; // Save the brightness param
//... Your code

// When u want to restore the brightness
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = oldScreenBrightness;
getWindow().setAttributes(params);
于 2013-02-13T16:50:16.787 回答