2012-06-07 72 views
1

我有一個相當奇怪的問題。最近我嘗試使用下面的代碼用在我的應用程序激活鎖定:Wakelock只與usb-cable連接使用

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); 
    screenLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 
    button = (Button)findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      System.out.println("Clicked"); 
      try { 
       Thread.sleep(5000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      if (!locked) 
       setKeepScreenOn(WakeupLightActivity.this, true); 
      else setKeepScreenOn(WakeupLightActivity.this, false); 
      System.out.println("Screen will stay on"); 
     } 
    }); 
} 

public void setKeepScreenOn(Activity activity, boolean keepScreenOn) { 
    if(keepScreenOn) {      
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);   
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     this.screenLock.acquire(); 
    } 
    else {         
     activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);    
     activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     this.screenLock.release(); 
    } 
} 

的激活鎖定完美的作品:按下按鈕(和鎖定我的電話),5秒鐘後屏幕打開。然而,這項測試是在我的手機連接到我的筆記本電腦以使用USB電纜進行調試時完成的。

現在來了奇怪的部分。當我沒有使用USB電纜連接手機時,wakelock根本無法打開屏幕。我正在使用的設備是HTC的願望。我實際上已經在另一個HTC的願望上進行了測試,它做了同樣的事情。接下來,我嘗試了HTC Desire HD。並猜測:它再次運作完美!我對此很困惑,並想知道這個問題是否僅僅是我手機類型的一個缺陷,或者如果我在我的代碼中做錯了什麼。有什麼我可以做的嗎?如果任何具有故障電話類型的潛在客戶在購買我的應用程序後會遇到同樣的問題,這將會非常尷尬。

請注意,我也在連接到牆上插頭的電纜給手機充電時嘗試了應用程序。這導致相同的問題,因爲根本沒有連接我的手機。兩個HTC Desires都運行相同的Android版本(2.2.2)。

回答

2

顯然所有這一切都只是因爲我使用了錯誤的標誌。該問題已通過使用以下標誌創建WakeLock解決:

PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP