【问题标题】:Changing device background each specific interval每个特定间隔更改设备背景
【发布时间】:2015-12-07 08:08:23
【问题描述】:

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

【问题讨论】:

  • 运行延迟后处理程序 - developer.android.com/reference/android/os/…, long)
  • 您要创建动态壁纸吗?
  • @Darpan 确实不是。我想每 30 秒更改一次
  • @AlphaCode 我已经用特定代码更新了我的答案,有帮助吗?
  • @VincentD。它做了 !谢谢

标签: java android eclipse


【解决方案1】:

有一个很棒的应用程序可以做到这一点,而且它是开源的。它被称为Muzei - link,由 Roman Nurik 创建。每天一次,此应用程序从 Internet 获取壁纸并更改您的背景。您完全可以获取此代码并修改背景更改的频率,并剥离所有网络调用并重定向到您的内部图像

您还可以为 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 如果你还想使用服务 ;)

最后,您应该注册到广播事件 Screen On/Off 以避免在设备空闲时更换壁纸和白白耗尽电池

【讨论】:

  • 感谢文森特的帮助。我会寻找它,如果它对我有用,我会将其标记为答案。再次感谢
  • 在我看来,好像您将闹钟设置为 1 小时
  • 是的,每小时一次。问题是关于“每个特定间隔更改设备背景”,即使他举例说 30 秒,上面的链接标题指定它“AlarmManager run everyhour”
  • 有人可以帮我并给我代码吗?我有任务每天更换一次应用程序:(我在网上找不到任何东西
猜你喜欢
  • 2011-09-11
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 2016-06-10
  • 2017-04-24
  • 2017-11-21
  • 2021-12-30
相关资源
最近更新 更多