我正在使用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)
。然後,我也嘗試了WakefulBroadcastReceiver
和AlarmManager
的其他解決方案,但我仍然有相同的行爲。
您的回答沒有多大幫助。謝謝,但我知道手錶上的顯示通知。手錶打開時,我的應用程序正在正常工作。當手表關閉時,我有這個錯誤。這可能是一個Xamarin Android兼容性問題,但我看到一些與Java SDK有類似的問題。 – nicolas 2014-11-25 07:05:52