0

これは、この質問 android: turn 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 に答える