我想在每个特定时间间隔(例如30秒)更改设备的背景。我一直在寻找类似项目或教程的日子,但我没有找到任何有用的东西。因为我想我要编写的应用程序将是一项服务,因为我希望它在后台运行。我有可绘制文件夹中包含的背景图像。那么任何人都可以帮忙吗?并提前感谢
答案 0 :(得分:3)
有一个很棒的应用程序可以做到这一点,它是开源的。它由Roman Nurik创建,名为Muzei - link。每天一次,此应用程序从Internet获取壁纸并更改您的背景。您可以完全获取此代码并修改后台更改的频率,并删除所有Web调用并重定向到内部图像
您还可以为Muzei编写插件代码。您将只有一小部分代码才能使其正常工作。这会容易得多。但是,另一方面,你对每次换壁纸之间的时间控制较少。
对于您的代码,它将是: AlarmManager run every hour
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += remainingMilisecondsToTopHour;
long a=c.getTimeInMillis();
// Schedule the alarm!
AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME,
c.getTimeInMillis(), 1*60*60*1000, sender);
和Changing Wallpaper。不要忘记在清单中添加更改背景的权限
// to set a background we need to use bitmap
InputStream is = getResources().openRawResource(R.Drawable.myImage);
// we set the phone background to that image.
Bitmap bm = BitmapFactory.decodeStream(is);
try {
getApplicationContext().setWallpaper(bm);
// add permission of background from manifest file
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在后台使用服务将始终使用更多设备电池。
Run one task every hour如果您仍想使用服务;)
最后,您应该注册广播事件屏幕开/关,以便避免在设备空闲时更换壁纸并将电池耗尽