Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 04/02/15, 10:48:34
Avatar de mpiero
mpiero mpiero no está en línea
Usuario muy activo
Mensajes: 812
 
Fecha de registro: jun 2010
Localización: Galicia
Mensajes: 812
Modelo de smartphone: Motorola Edge 40 neo
Versión de ROM: La última oficial
Tu operador: Simyo
Mencionado: 16 comentarios
Tagged: 0 hilos
Pausar/controlar servicio en un Widget con pantalla apagada y actualización forzada

Hola a todos,
Escribo este hilo ya que soy novato en programación en Android, estoy empezando, aunque tengo amplia experiencia en programación en varios lenguajes...
El caso es que he creado mi primer widget, para empezar he optado por un reloj digital.

Si quereis verlo/probarlo el enlace es:
https://play.google.com/store/apps/d...android.widget

Es gratuito.
Es bastante simple, hora minutos y fecha y se le puede asignar una acción a cada una de ellas de forma independiente. También se puede cambiar la tipografía, y espero en próximas versiones que también se pueda elegir un skin.

Dudas me van surgiendo bastantes, pero googleando las voy solucionando.
Pero ahora me ha surgido un par de ellas que no he obtenido respuesta.

Resumo a groso modo la estrutura que tiene la app para luego preguntar.
La app consta de un Activity principal que es el que permite configurar el widget:
Código:
public class AccionesActivity extends Activity {
...
}
, luego tiene otros Activity secundarios, un AppWidgetProvider que es el que se encarga de actualizar el wiget periodicamente mediante un Service (primero use un timer, pero a veces se trababa y no se actualizaba, googleando vi la posibilidad de crear un servicio y ahora si funciona bien):
Código:
public class Digital_Clock_Simplicity extends AppWidgetProvider {
    ...
    public static final class UpdateService extends Service {
    ...
    }
...
}
1) Bien mi 1a duda es, cuando apago la pantalla del tfno, el servicio sigue ejecutándose, pero me imagino que intentará o actualizará el reloj igual aún con la pantalla apagada ¿como puedo hacer para que en el widget se detecte si la pantalla está apagada y no se actualize el widget? O incluso igual se puede pausar el servicio mientras la pantalla esta apagada y reanudarlo cuando se encienda...
Con el betterbattery stats he visto además que el wiget ha provocado bastantes wakelock mientras la pantalla estaba apagada, lo cual en este caso no tiene sentido...

2) Actualización del aspecto del widget. ¿Como puedo forzar la actualización del widget al cambiar la configuración? El Activity lo que hace es permitir configurar el widget, elegir la tipografía, las acciones al pulsar en hora y minutos y fecha,..., el tema es que, una vez que he cambiado algo del aspecto, para forzarlo a actualizar el widget, lo que he hecho es, en la clase AppWigetProvider he creado una función que actualiza el aspecto:
Código:
public class Digital_Clock_Simplicity extends AppWidgetProvider {
    ...
    public static void ActualizaReloj(Context context) {
        // TODO Auto-generated method stub
        relojcambiado=true;
        context.startService(new Intent(UpdateService.ACTION_UPDATE));
    }
    ...
}
Y luego en el Activity hago:
Código:
public class AccionesActivity extends Activity {
   ...
   @override
   protected void onStart() {
        super.onStart();
        com.digitalclocksimplicity.android.widget.Digital_Clock_Simplicity.ActualizaReloj(this);
}
   ...
}
Es decir llamo a la función de AppWidgetProvider para forzar a actualizar los cambios en pantalla, y aunque funciona, no se si esto es correcto o se podría hacer de otra manera.

Gracias de antemano y saludos a todos.

Última edición por mpiero Día 04/02/15 a las 10:54:02
Responder Con Cita


  #2  
Viejo 11/02/15, 21:24:53
Avatar de mpiero
mpiero mpiero no está en línea
Usuario muy activo
Mensajes: 812
 
Fecha de registro: jun 2010
Localización: Galicia
Mensajes: 812
Modelo de smartphone: Motorola Edge 40 neo
Versión de ROM: La última oficial
Tu operador: Simyo
Mencionado: 16 comentarios
Tagged: 0 hilos
Nadie??
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 05:14:51 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007