Deseo crear una aplicación, que cambiaría el fondo de pantalla del dispositivo Android a intervalos fijos, por ejemplo, cada hora aproximadamente. Actualmente en mi código, inicio un servicio y estoy usando un objeto Timer. El objeto Timer se invocará a intervalos regulares y cambiará el fondo de pantalla.Aplicación de Android para cambiar el fondo de pantalla a intervalos regulares usando el temporizador
Este es el código que estoy usando actualmente. El fondo de pantalla se cambia solo una vez y no después. Por favor, hágame saber qué debo hacer?
public class Wallpaper extends Service {
Timer mytimer;
int interval=60000;
Drawable drawable;
WallpaperManager wpm;
int prev=1;
@Override
public void onCreate() {
super.onCreate();
mytimer=new Timer();
wpm=WallpaperManager.getInstance(Wallpaper.this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mytimer.schedule(new TimerTask() {
@Override
public void run() {
if(prev==1){
drawable = getResources().getDrawable(R.drawable.two);
prev=2;
}
else if(prev==2){
drawable = getResources().getDrawable(R.drawable.three);
prev=3;
}
else{
drawable = getResources().getDrawable(R.drawable.one);
prev=1;
}
Bitmap wallpaper=((BitmapDrawable)drawable).getBitmap();
try {
wpm.setBitmap(wallpaper);
} catch (IOException e) {
e.printStackTrace();
}
}
}, interval);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
Además, ¿necesito usar un AlarmManager o Handler para lograr esto? Soy bastante nuevo en Android y estoy un poco confundido.
Set 0 para la demora para el inicio inmediato. :) – Calvin
Gracias ... esto parece estar funcionando ahora ... Hay algún otro método myTimer.schedule() con solo dos argumentos, por lo que no me estaba dando un error. De todos modos, estoy feliz de no tener que usar Handler, etc. – ambit
¡Sí! El uso de solo dos argumentos crea un temporizador de una sola vez. ¡A veces es útil! –