2013-02-13 23 views
0

我知道這與這個問題相似 android: turn off screen when close to face 和其他許多人。但我找不到任何工作解決方案。我希望我的程序能夠完成android在通話和接近時所做的操作。

所以我有一個播放音頻的程序。我聽接近傳感器:

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

我已經使用這個代碼,以禁用creen時所面臨的接近:

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(); 

但沒有任何工作。當我將手機從臉上移開時,音頻會停止。所以活動不會暫停。

回答

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); 
+0

它不工作。只有當我將屏幕亮度(當接近臉部時)設置爲更大的像0.1f(僅暗淡顯示)時,該工作纔是。如果我將屏幕亮度設置爲0,您的代碼無法使用。 – klonitklonit 2013-02-14 01:00:12

相關問題