Cómo hacer la aplicación WhiteList en modo Doze Android 6.0

Esta pregunta está relacionada con la versión preliminar de Android 6.0 3 que será lanzada a finales de este mes.

Estoy probando algunas cosas en Android 6.0 en la vista previa 3 de Google en Nexus 5 'hammerhead'.

La nueva característica es el "modo de espera" – algo así como el modo de suspensión profunda cuando la red está deshabilitada y el teléfono duerme, sólo los SMS, llamadas o mensajes de GCM de alta prioridad pueden despertarlo. Pero como WhatsApp – en el modo doze recibe los mensajes después de 2 horas o más depende de los temporizadores. Pero hay una lista de "no optimizado" aplicaciones llamadas "lista blanca" donde u puede añadir manualmente la aplicación.

Ok, me gustaría encontrar una manera de agregar mi aplicación mediante programación sin la interacción del usuario a la "Lista de aplicaciones de lista blanca" que existe en el dispositivo en la configuración de la batería.

Tratando de usar la reflexión para entrar en ella encontré:

Dentro del android.os.IDeviceIdleController hay un método:

public abstract void addPowerSaveWhitelistApp (String packageNameOfApp)

Pero esto es una interfaz … Así que no podemos hacer una instancia de interfaz.

Todavía no hay documentación sobre esta Interfaz o sobre métodos, o cualquier árbol de herencia.

Tal vez usted tiene alguna idea de dónde debo buscar la posibilidad de agregar programaticamente mi aplicación?

También hay un método

público resumen booleano isPowerSaveWhitelistApp (String packageName)

¿Qué creo que debería ser posible acceder de alguna manera ?! para comprobar si la aplicación existe en la lista blanca y tal vez al final espero que el usuario ASK para añadirlo a la lista blanca.

Así que mi pregunta es, ¿alguien de ustedes ha intentado hacer algo con mejor resultado? porque estoy atascado y creo que es un callejón sin salida.

para más información: https://newcircle.com/s/post/1739/2015/06/12/diving-into-android-m-doze

5 Solutions collect form web for “Cómo hacer la aplicación WhiteList en modo Doze Android 6.0”

No es posible desactivar las optimizaciones de la batería (= aplicación de lista blanca para el modo doze) sin interacción del usuario en Android M preview 3.

Se puede hacer con la interacción del usuario de esta manera:

Intent intent = new Intent(); String packageName = context.getPackageName(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (pm.isIgnoringBatteryOptimizations(packageName)) intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); else { intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); } context.startActivity(intent); 

Añadir permiso

 <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/> 

solicita una lista blanca a tu aplicación

  if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Intent intent = new Intent(); String packageName = getPackageName(); PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); if (!pm.isIgnoringBatteryOptimizations(packageName)) { intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); startActivity(intent); } } 

Por lo que sé, no puedes hacerte una lista blanca de Doze. Ignorar las optimizaciones de la batería no inhabilita doze. Vea aquí: https://code.google.com/p/android-developer-preview/issues/detail?id=2225 ACTUALIZACIÓN: En la versión de M, puede solicitar ignorar las optimizaciones de la batería que al menos le darán normal acceso a Internet mientras está en modo Doze.

Si tenemos permisos de root, la lista blanca puede hacerse mediante programación. Para agregar el dispositivo en las aplicaciones de la lista blanca, ejecute el siguiente comando de la aplicación:

 adb shell dumpsys deviceidle whitelist +<package_name> 

Para quitar el dispositivo de las aplicaciones de la lista blanca, ejecute el siguiente comando de la aplicación:

 adb shell dumpsys deviceidle whitelist -<package_name> 

ACTUALIZAR

Cuando el dispositivo está parado de nuevo, con la pantalla apagada y la batería durante un período de tiempo, Doze aplica la CPU completa y las restricciones de red en PowerManager.WakeLock, alarma AlarmManager y exploraciones GPS / Wi-Fi .

Visita casos de uso para listas blancas para obtener más detalles.

La siguiente tabla muestra los casos de uso aceptables para solicitar o estar en la lista blanca de excepciones de optimizaciones de la batería. En general, su aplicación no debe estar en la lista blanca a menos que Doze o App Standby rompan la función principal de la aplicación o si existe una razón técnica por la que su aplicación no puede usar mensajes de alta prioridad de GCM.

desarrollador android n dice

Doze es particularmente probable que afecte a las actividades que las alarmas y temporizadores de AlarmManager administran , porque las alarmas en Android 5.1 (API nivel 22) o inferior no se disparan cuando el sistema está en Doze .

Android 6.0 (API nivel 23) introduce dos nuevos métodos de setAndAllowWhileIdle() : setAndAllowWhileIdle() y setExactAndAllowWhileIdle() . Con estos métodos, puede establecer alarmas que se dispararán incluso si el dispositivo está en Doze.

Nota : Ni setAndAllowWhileIdle() ni setExactAndAllowWhileIdle() pueden disparar alarmas más de una vez por cada 15 minutos por aplicación.

Pruebas con Doze y Standby de aplicación

  • Ver la vista previa del cajón de navegación
  • Teclado personalizado sombra clave de teclado eliminar
  • Android: Acceso a los datos del marco de vista previa de cámara de hardware sin dibujarlos
  • Android Camera 2, cómo recortar tamaño de vista previa
  • ¿Cómo obtener 720p Android Camera Preview Data?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.