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).
- Android - Notificación incorrecta publicada - No se pudo expandir RemoteViews para: StatusBarNotification
- ¿Cómo se puede ejecutar servicio indefinidamente y también permitir la vinculación en android?
- Diferencia entre RTC y RTC_WAKEUP en android
- ¿Pueden los servicios iniciados y enlazados vivir "para siempre"?
- Servicio de fondo de stop android después del bloqueo de actividad
- ¿cuál es el mejor enfoque para escanear filesytem para archivos mp3 en android?
- Android: mantener vivo el servicio incluso el proceso padre es asesinado
- No se puede iniciar el servicio con null
- ¿Puedo llamar a stopSelf () en Service.onStartCommand?
- Android: escucha los mensajes SMS entrantes
- ¿Diferencia entre START_STICKY y START_REDELIVER_INTENT?
- ¿Necesito un servicio en mi aplicación Android?
- Android: ¿Cómo puedo mostrar un brindis desde un hilo que se ejecuta en un servicio remoto?
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