1

我正在使用Android Wear應用程序,它以某種方式顯示一個計時器,該計時器在時間流逝並顯示通知時重新開始。通知在手錶上顯示一條消息並使設備振動。在睡眠模式下從服務中喚醒Android Wear?

除非手錶處於睡眠模式,否則該應用工作正常。在這種情況下,用戶需要觸摸屏幕以便手錶振動並且定時器再次啓動。

通知從WearableListenerService創建並顯示。我嘗試了許多解決方案,例如喚醒鎖。該代碼是用C#與Xamarin.Android但我認爲任何Java開發也將能夠閱讀:

static PowerManager.WakeLock sWakeLock; 
static object LOCK = new object(); 

void DisplayNotification() 
{ 
    //create the wake lock 
    lock (LOCK) 
    { 
     if (sWakeLock == null) 
     { 
      // This is called from BroadcastReceiver, there is no init. 
      var pm = (PowerManager)GetSystemService(Context.PowerService)); 
      sWakeLock = pm.NewWakeLock(
      WakeLockFlags.ScreenBright | WakeLockFlags.Full | WakeLockFlags.AcquireCausesWakeup, "My WakeLock Tag"); 
     } 
    } 

    sWakeLock.Acquire(); 

    //display the notification 
    //.... 

    //release the wake lock 
    lock (LOCK) 
     { 
      //Sanity check for null as this is a public method 
      if (sWakeLock != null) 
       sWakeLock.Release(); 
     } 

} 

我的問題是,手錶會在某個點立即醒來(幾分鐘後),但不當被要求時。我試圖延遲喚醒鎖的釋放,或者爲了使喚醒鎖在2秒後自動釋放而作出sWakeLock.Acquire(2000)。然後,我也嘗試了WakefulBroadcastReceiverAlarmManager的其他解決方案,但我仍然有相同的行爲。

回答

-1

我會避免Xamarin for Wear,因爲它可能會導致一些衝突,並且不能很好地工作,因爲它沒有設計。

此外,如果您創建了在Android Wear上觸發的服務 - 我會說Message API是正確的方法,您應該在創建通知(在手錶本身上)時使用振動(無需觸摸屏) )並更新來自您的服務的通知 - 更新計時器值。

不需要喚醒鎖。

可能會有幫助:How can I create notification that is different on device and wear?

+0

您的回答沒有多大幫助。謝謝,但我知道手錶上的顯示通知。手錶打開時,我的應用程序正在正常工作。當手表關閉時,我有這個錯誤。這可能是一個Xamarin Android兼容性問題,但我看到一些與Java SDK有類似的問題。 – nicolas 2014-11-25 07:05:52

0

我只是在我的活動是由服務調用的的onCreate添加一行做了類似的東西在移動。

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //add this below getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); }

相關問題