Androidデバイスの壁紙を一定の間隔で、たとえば1時間ごとに変更するアプリを作成したいと考えています。現在私のコードでは、サービスを開始し、Timerオブジェクトを使用しています。 Timerオブジェクトは定期的に呼び出され、壁紙を変更します。Androidアプリはタイマーを使って定期的に壁紙を変更します
これは現在使用しているコードです。壁紙は一度だけ変更され、それ以降は変更されません。私は何をすべきか教えてください。
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;
}
}
また、これを実現するにはAlarmManagerまたはHandlerを使用する必要がありますか?私はAndroidにはかなり新しいし、少し混乱している。
即時開始の遅延を0に設定します。 :) – Calvin
ありがとうございました。これは現在動作しているようです.2つの引数だけを持つmyTimer.schedule()メソッドがいくつかあります。エラーが発生しませんでした。とにかく、私はハンドラなどを使う必要がないことを嬉しく思っています。 – ambit
うん!引数を2つだけ使用すると、ワンショットタイマーが作成されます。時には便利です! –