Desidero creare un'app, che cambierebbe lo sfondo del dispositivo Android a intervalli fissi, diciamo ogni ora circa. Attualmente nel mio codice, avvio un servizio e sto usando un oggetto Timer. L'oggetto Timer verrebbe invocato a intervalli regolari e cambierà lo sfondo.Applicazione Android per cambiare lo sfondo a intervalli regolari utilizzando Timer
Questo è il codice che sto utilizzando attualmente. Lo sfondo viene cambiato solo una volta e non dopo. Per favore fatemi sapere cosa dovrei fare?
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;
}
}
Inoltre, è necessario utilizzare un AlarmManager o Handler per ottenere questo risultato? Sono abbastanza nuovo per Android e un po 'confuso.
Impostare 0 per il ritardo per l'avvio immediato. :) – Calvin
Grazie ... sembra che stia funzionando ora .. C'è un altro metodo myTimer.schedule() con solo due argomenti, quindi non mi ha dato un errore. Ad ogni modo, sono felice di non dover usare Handler ecc. – ambit
Sì! L'utilizzo di soli due argomenti rende un timer one-shot. A volte utile! –