如何在睡眠模式下唤醒Android Wear?

当Android Wear进入睡眠模式(屏幕变暗)时,我的代码的某些部分不会执行。 我在后台服务中使用Timer来触发一些操作,比如将数据从磨损发送到移动设备,但数据不发送。 当我点击屏幕将其唤醒时,它会被发送。

当屏幕closures时,我也尝试使用Timer触发振动通知,但是直到我点击屏幕才会出现。

在debugging模式下(蓝牙或USB),数据发送和通知工作正常。

我怀疑这是因为当Android Wear处于睡眠模式时,它的CPU工作在最低水平,因为Timer仍在运行,但不适用于GoogleApiClient,IntentService或Notification。

我已经尝试了许多方法来唤醒CPU,比如AlarmManager,PowerManager,Wakelock,但是它并不适用于Android Wear。

任何人都遇到过这个问题? 解决办法是什么?

Solutions Collecting From Web of "如何在睡眠模式下唤醒Android Wear?"

每次我从处理的设备收到消息时,我都使用PowerManger来唤醒可穿戴设备。 别忘了释放PowerManager.WakeLock

 public abstract class WatchFaceActivity extends Activity { private PowerManager.WakeLock mWakeLock; private Handler mWakeLockHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_clock_watch_face); PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); mWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "MyWakelockTag"); mWakeLockHandler = new Handler(); IntentFilter messageFilter = new IntentFilter("message-forwarded-from-data-layer"); MessageReceiver messageReceiver = new MessageReceiver(); LocalBroadcastManager.getInstance(this).registerReceiver(messageReceiver, messageFilter); } public class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (!mWakeLock.isHeld()) { mWakeLock.acquire(); } mWakeLockHandler.removeCallbacksAndMessages(null); mWakeLockHandler.postDelayed(mReleaseRunnable, 5000); } } private Runnable mReleaseRunnable = new Runnable() { @Override public void run() { mWakeLock.release(); } }; @Override protected void onDestroy() { super.onDestroy(); mWakeLockHandler.removeCallbacksAndMessages(null); mWakeLock.release(); } } 

并允许您的清单WAKE_UP权限。

 <uses-permission android:name="android.permission.WAKE_LOCK" /> 

你应该使用AlarmManager以及WakefulBroadcastReceiver和startWakefulService()。 见这个工作解决scheme 。
您可以在这篇文章中find有关您在聊天logging中进一步问题的答案。这是我们的应用唯一的解决scheme。

当设备处于深度睡眠模式时,@SeaDog成功地进行http调用。 尝试一下。