2017-02-15 9 views
7

Я работаю над приложением отслеживания местоположения в реальном времени и обновляю текущее местоположение на сервере с помощью службы переднего плана.

Теперь я могу поддерживать активное приложение в режиме глубокого сна. Но из-за отключения доступа к сети в режиме «Доза» я не могу обновить его на сервере.
В соответствии с предложением руководства Google по разработке мы можем решить эту проблему, используя высокоприоритетные сообщения FCM. Но в моем случае как уведомить сервер о push-уведомлении, когда сетевой доступ приостановлен (необходимо определить, что доступ в Интернет отключен либо ОС, либо вручную).Как постоянно работать в режиме «Доза» Зефир и нуга

+0

Вы нашли решение? – nAkhmedov

+0

Пока нет, но все же я ищу подходящие альтернативные решения. –

+0

Если вы найдете, пожалуйста, сделайте меня настороже. Спасибо заранее – nAkhmedov

ответ

0

Попробуйте проверить 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()); 
} 
+0

Он возвращает 'Blocked', когда устройство является _Battery на saver_ и _Restrict background data_ режимами – nAkhmedov

+0

, когда интернет отключен ОС или вручную, то в обоих условиях« networkInfo »возвращает null. –

0

Один из способов зарегистрировать Action-

"android.os.action.DEVICE_IDLE_MODE_CHANGED" 

это будет транслировать один раз режимы устройства изменится, а затем выяснить, что прибор находится в дремоту/не- доза с использованием:

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

boolean isDeviceIdle = pm.isDeviceIdleMode(); 
Смежные вопросы