2011-10-06 45 views
1

我有一些WindowManager.LayoutParams的問題。我需要使用接近傳感器對屏幕進行斷電和電源操作。接近傳感器正常,但layoutParams不起作用WindowManager.LayoutParams和screenBrightness

public void setBright(float value) { 
    Window mywindow = getWindow(); 
    WindowManager.LayoutParams lp = mywindow.getAttributes(); 
    lp.screenBrightness = value; 
    lp.buttonBrightness = value; 

    if (value != WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF) { 
     lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
    } 

    mywindow.setAttributes(lp); 
} 

屏幕正確關閉。但是,如果我使用setBright(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE)屏幕保持黑屏。

PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(
      PowerManager.SCREEN_DIM_WAKE_LOCK 
      | PowerManager.ON_AFTER_RELEASE, 
      "MY_TAG"); 

,但它仍然無法正常工作:我使用激活鎖定

private void powerOnScreen() { 
    setBright(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE); 

    onResume(); 
    if (!wakeLock.isHeld()) 
     wakeLock.acquire(); 
} 

其中激活鎖定也試過。任何想法?目標平臺是Android 2.2

回答

0

似乎應該將標誌PowerManager.ACQUIRE_CAUSES_WAKEUP添加到newWakeLock調用中。

編輯: 片斷代碼爲我工作:。

 boolean isScreenOff = !powerManager.isScreenOn(); 
     if (isScreenOff) { 
      Window window = getWindow(); 

      if (window != null) { 
       window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
         | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
      } 

      stopTimeDialogListener.wakeLock = powerManager 
        .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK 
          | PowerManager.ACQUIRE_CAUSES_WAKEUP 
          | PowerManager.ON_AFTER_RELEASE, "TIMING_ALARM"); 
      stopTimeDialogListener.wakeLock.acquire(); 

      try { 
       long screenOffDelay = Settings.System.getLong(
         getContentResolver(), 
         Settings.System.SCREEN_OFF_TIMEOUT); 

       new Timer().schedule(
         stopTimeDialogListener.releaseWakeLock, 
         screenOffDelay); 

      } catch (SettingNotFoundException e) { 
      } 
     } 
+0

不......這不工作:( – Sarbyn

+0

看到最近編輯的片斷它可以在2.2和2.3 – slkorolev

+0

我使用但是如果我使用lp.screenBrightness = 0.0f,那麼wakelock不起作用,所以它不是wakelock的問題,而是LayoutParams的一個bug? – Sarbyn

相關問題