提问者:小点点

如何在打瞌睡模式下持续活跃互联网Marshmallow和牛轧糖


我正在开发实时位置跟踪应用程序,并通过使用前台服务将当前位置更新到服务器。

现在我可以在设备深度睡眠时保持应用程序处于活动状态。但是由于网络访问在打瞌睡模式下暂停,我无法在服务器上更新它。
根据谷歌开发者指南的建议,我们可以通过使用高优先级的FCM消息来解决这个问题。但在我的情况下,如何在网络访问暂停时通知服务器推送消息(需要识别OS或手动禁用互联网访问)。


共2个答案

匿名用户

一种方法是登记行动-

"android.os.action.DEVICE_IDLE_MODE_CHANGED" 

这将广播一旦设备模式将改变,然后找出设备是在打瞌睡/非打瞌睡使用:

PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);

boolean isDeviceIdle = pm.isDeviceIdleMode();

匿名用户

尝试检查NetworkInfo状态

public static boolean isNetBlocked(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();

    return networkInfo != null && networkInfo.getDetailedState().name().equals(NetworkInfo.DetailedState.BLOCKED.name());
}