如何知道我的Android设备是否清醒

时间:2014-11-18 18:38:29

标签: android google-cloud-messaging

我正在构建一个使用GCM与服务器进行某些通信的应用程序。它工作得很好,但一个。 我已经实现了即时聊天功能,可以向其他Android设备发送通知,告知有新消息。 如果其他设备点击了noti,它将进入即时聊天室进行回复,或者只看到新更新的消息。

我通过比较服务器的标志来做到这一点;如果消息是第一个发送消息并且应用或设备正在休眠,它将创建一个可以链接到新聊天室的消息。 如果消息来自当前正在运行的聊天室,则只会更新它。

但是你可以很容易地看到,如果收到消息的设备没有醒来,它就无法做任何事情。

所以我想知道设备状态是否清醒,不确定消息是来自新的聊天室,还是来自当前的聊天室。 如果它来自一个新设备(当设备正在休眠时),它将显示一个noti,它将通向新建的聊天室,如果它来自当前的聊天室,它将只是更新聊天记录。

2 个答案:

答案 0 :(得分:0)

我认为您需要为Android学习PowerManager API。 PowerManager Link

据我所知,你可以使用方法isInteractive()isScreenOn(),具体取决于你所使用的android版本(isScreenOn在API级别20中被弃用并被isInteractive取代)来检查屏幕关闭。

但我建议不要使用 isScreenOn() ,无法保证设备在屏幕关闭后进入休眠状态。这取决于OEM

您可以做的最好的事情就是使用Wakelock让设备保持清醒状态 Wakelock Link

答案 1 :(得分:0)

我通过以下链接解决了这个问题。 How can I tell if Android app is running in the foreground?

通过Gadenkan的回答,我创建了一个activityManager对象来检查我的应用程序是否在前台运行。

因此,如果它没有在前台运行,它将调用整个应用程序从主活动开始到聊天室。 如果没有,它将告诉broadcastlistener由GCM附加新消息。