2014-07-16 32 views
1

我正在爲Android Wear寫一個自定義手錶面部,並且我能夠從手機發送設置數據到手錶就好。但是,當手表處於環境模式且用戶從手機更改設置時,我想從Ambient Mode中喚醒手錶以顯示手錶的更新更改。伴侶移動應用程序從環境模式醒來穿戴設備

我一直使用的Power Manager試過,但我得到這個異常:

java.lang.IllegalArgumentException: Must specify a valid wake lock level. 
      at android.os.PowerManager.validateWakeLockParameters(PowerManager.java:442) 
      at android.os.PowerManager.newWakeLock(PowerManager.java:427) 

,因爲我設置newWakeLock喚醒鎖級別我不明白這條消息。

這裏是我的代碼:

private PowerManager.WakeLock mWakeLock; 
private void wakeUpScreen(){ 
    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    if(mWakeLock == null) { 
     mWakeLock = powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, 
      "CubeWatch"); 
     Log.d(TAG, "WAKE UP!!!!"); 
     mWakeLock.acquire(); 
    } 
    if(!mWakeLock.isHeld()) mWakeLock.acquire(); //if called a second time and isn't locked 
    mHandler.removeCallbacks(mRunReleaseLock); //if already waiting, then we'll start the time over 
    mHandler.postDelayed(mRunReleaseLock, 3000); 
} 
Handler mHandler = new Handler(); 
Runnable mRunReleaseLock= new Runnable() { 
    @Override 
    public void run() { 
     mWakeLock.release(); 
    } 
}; 
+0

您是否找到針對您的問題的解決方案? – Umair

回答

1

ACQUIRE_CAUSES_WAKEUP必須始終FULL_WAKE_LOCK,SCREEN_BRIGHT_WAKE_LOCK,SCREEN_DIM_WAKE_LOCK和/或PARTIAL_WAKE_LOCK結合。

我目前使用

mWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE), "wakeLock"); 

其作品,但警告我約SCREEN_BRIGHT_WAKE_LOCK和FULL_WAKE_LOCK貶值。 SCREEN_DIM_WAKE_LOCK也折舊。也許新的Wake Lock狀態爲未來的Android Wear版本做好了準備?像AMBIENT_WAKE_LOCK和INTERACTIVE_WAKE_LOCK會很好。目前,SCREEN_BRIGHT_WAKE_LOCK和FULL_WAKE_LOCK工作得很好。

相關問題