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 또는 처리기를 사용해야합니까? 나는 Android에 아주 익숙하고 조금 혼란 스럽다.
즉시 시작을위한 지연을 0으로 설정하십시오. :) – Calvin
고마워.이게 지금 일하는 것 같아. 단지 두 개의 인자를 가진 다른 myTimer.schedule() 메쏘드가있다. 그래서 나에게 오류를주지 않았다. 어쨌든 Handler 등을 사용할 필요가 없기 때문에 기쁩니다. – ambit
Yup! 두 개의 인수 만 사용하면 원샷 타이머가됩니다. 때로는 유용합니다! –