¿Cómo desactiva Android Wear cuando está en modo de suspensión?
Cuando Android Wear pasa al modo de suspensión (pantalla atenuada), algunas partes de mi código no se ejecutan. Utilizo el temporizador en el servicio de fondo para activar algunas acciones, como el envío de datos de desgaste a móviles, pero los datos no se envían. Se envía cuando toco la pantalla para despertarla.
También intento utilizar Timer para activar una notificación con vibración cuando la pantalla está apagada, pero no aparece hasta que toco la pantalla.
- Temporizador Se ralentiza en Servicio cuando se bloquea la pantalla del dispositivo
- Uso de WakeLock para mantener una reproducción en secuencia
- Corregir el patrón para adquirir un WakeLock en un BroadcastReceiver y liberarlo en un servicio
- ¿Es Wakelock de Android una necesidad para los servicios de fondo?
- PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK en el subproceso de descarga
En el modo de depuración (ya sea Bluetooth o USB), el envío de datos y la notificación funcionan correctamente.
Sospecho que esto se debe a que cuando Android Wear está en modo de suspensión, su CPU funciona a un nivel mínimo porque el temporizador sigue funcionando, pero no para GoogleApiClient, IntentService o Notificación.
He intentado muchas maneras de despertar CPU como AlarmManager, PowerManager, Wakelock, pero no funcionó para Android Wear.
¿Alguien ha encontrado este problema? ¿Cuál es la solución?
- Programación de Android: GCMIntentService Stuck at WakeLock
- El bloqueo de la repetición produce una excepción en Nexus 5
- Despierta Android Phone / tablet?
- OnPause y OnStop () llamados inmediatamente después de iniciar la actividad
- ¿Necesito un bloqueo de despertador en mi transmisor-receptor si no estoy iniciando un servicio o una actividad?
- ¿Debo usar WakeLock en IntentService?
- BroadcastReceiver Vs WakefulBroadcastReceiver
- Android - ¿Cómo puedo despertar el teléfono de un sueño duro para tomar una foto?
Estoy usando PowerManger
para despertar mi dispositivo portátil cada vez que recibo el mensaje del dispositivo manejado. No olvides liberar PowerManager.WakeLock
public abstract class WatchFaceActivity extends Activity { private PowerManager.WakeLock mWakeLock; private Handler mWakeLockHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_clock_watch_face); PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); mWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "MyWakelockTag"); mWakeLockHandler = new Handler(); IntentFilter messageFilter = new IntentFilter("message-forwarded-from-data-layer"); MessageReceiver messageReceiver = new MessageReceiver(); LocalBroadcastManager.getInstance(this).registerReceiver(messageReceiver, messageFilter); } public class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (!mWakeLock.isHeld()) { mWakeLock.acquire(); } mWakeLockHandler.removeCallbacksAndMessages(null); mWakeLockHandler.postDelayed(mReleaseRunnable, 5000); } } private Runnable mReleaseRunnable = new Runnable() { @Override public void run() { mWakeLock.release(); } }; @Override protected void onDestroy() { super.onDestroy(); mWakeLockHandler.removeCallbacksAndMessages(null); mWakeLock.release(); } }
Y permite permiso WAKE_UP en su Manifiesto.
<uses-permission android:name="android.permission.WAKE_LOCK" />
Usted debe utilizar AlarmManager junto con WakefulBroadcastReceiver y startWakefulService (). Vea esta solución de trabajo .
Puede encontrar respuestas para sus preguntas más en el historial de chat en ese post aquí . Esta es la única solución que funcionó para nuestra aplicación.
@SeaDog tiene éxito al hacer llamadas http cuando el dispositivo está en modo de suspensión profunda con esta solución. Intentalo.
- ¿Cómo cambiar el indicador de tablayout de arriba a abajo?
- Cómo identificar qué archivo MP3 terminó en MediaPlayer.OnCompletionListener?