每个特定间隔更改设备背景

时间:2014-11-12 13:41:53

标签: java android eclipse

我想在每个特定时间间隔(例如30秒)更改设备的背景。我一直在寻找类似项目或教程的日子,但我没有找到任何有用的东西。因为我想我要编写的应用程序将是一项服务,因为我希望它在后台运行。我有可绘制文件夹中包含的背景图像。那么任何人都可以帮忙吗?并提前感谢

1 个答案:

答案 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如果您仍想使用服务;)

最后,您应该注册广播事件屏幕开/关,以便避免在设备空闲时更换壁纸并将电池耗尽