Cómo activar Internet continuamente en modo doze Marshmallow and Nougat
Estoy trabajando en la aplicación de seguimiento de localización en tiempo real y la actualización de la ubicación actual al servidor mediante el uso de servicios de primer plano.
Ahora soy capaz de mantener la aplicación activa mientras el dispositivo en sueño profundo. Pero debido a que el acceso a la red está suspendido en modo Doze, no puedo actualizarlo en el servidor.
Según la sugerencia de la guía de desarrolladores de Google, podemos resolver este problema mediante mensajes FCM de alta prioridad. Pero en mi caso la forma de notificar al servidor de notificación push, mientras que el acceso a la red está suspendido (necesidad de identificar el acceso a Internet desactivar por el sistema operativo o manualmente).
- Obtener contexto en un servicio
- ¿Comprobar si el servicio se está ejecutando en Android?
- ServiceConnectionLeaked en Android
- ¿Qué papel debe desempeñar un servicio de Android en el patrón MVP?
- ¿Cómo ejecutar un servicio singleton (compartido) en una biblioteca para múltiples aplicaciones?
- Haga que el trabajo se ejecute y se agrupe cada 2 minutos, si la aplicación está cerrada o eliminada de la memoria
- OnStart () y onStartCommand () siguen llamados en 2.0 y superiores
- Vinculación y desvinculación de Android Service a / de Fragment (en ViewPager)
- Android - ¿Cómo es posible que un servicio siga funcionando después de que la Actividad haya sido cerrada?
- Android - Servicio de fondo de juego de Tamagotchi
- Cómo evitar que el servicio enlazado se destruya mientras cambia el tiempo de ejecución de la actividad (por ejemplo: orientación)
- Análisis BLE de Android en el servicio de fondo
- Nombre de la Actividad o Receptor que llama al Servicio
Intente verificar el estado de 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()); }
Una forma es registrar la acción-
"android.os.action.DEVICE_IDLE_MODE_CHANGED"
Esto se transmitirá una vez que los modos de dispositivo cambie y luego averiguar el dispositivo está en doze / non-doze utilizando:
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); boolean isDeviceIdle = pm.isDeviceIdleMode();
- ¿Es posible iniciar la actividad a través de adb shell y recibir su respuesta?
- Pager centrado de la visión con la previsualización siguiente y anterior y pagetransformer