手机壁纸设置相关
来源:互联网 发布:淘宝借贷延期 编辑:程序博客网 时间:2024/05/19 13:30
framework 服务
frameworks\base\core\java\android\app\IWallpaperManager.aidl
与设置获取墙纸相关的服务端接口
frameworks\base\core\java\android\app\IWallpaperManagerCallback.aidl
oneway interface IWallpaperManagerCallback { /** * Called when the wallpaper has changed */ void onWallpaperChanged();}
当服务端墙纸内容准备好,准备显示时,会回调onWallpaperChanged通知客户端。
frameworks\base\core\java\android\app\WallpaperManager.java
墙纸服务管理类,其内部类
static class Globals extends IWallpaperManagerCallback.Stub { private IWallpaperManager mService; private Bitmap mCachedWallpaper; private int mCachedWallpaperUserId; private Bitmap mDefaultWallpaper; Globals(Looper looper) { IBinder b = ServiceManager.getService(Context.WALLPAPER_SERVICE); mService = IWallpaperManager.Stub.asInterface(b); forgetLoadedWallpaper(); }
// Private completion callback for setWallpaper() synchronizationprivate class WallpaperSetCompletion extends IWallpaperManagerCallback.Stub { final CountDownLatch mLatch; public WallpaperSetCompletion() { mLatch = new CountDownLatch(1); }
内部类Globals 获取墙纸服务,并实现客户端回调接口
内部类WallpaperSetCompletion 用于服务内部使用,设置墙纸完成回调。
frameworks\base\services\core\java\com\android\server\wallpaper\WallpaperManagerService.java
public class WallpaperManagerService extends IWallpaperManager.Stub { static final String TAG = "WallpaperManagerService"; static final boolean DEBUG = false; public static class Lifecycle extends SystemService { private WallpaperManagerService mService; public Lifecycle(Context context) { super(context); } @Override public void onStart() { mService = new WallpaperManagerService(getContext()); publishBinderService(Context.WALLPAPER_SERVICE, mService); }
实现墙纸服务客户端,并发布服务。
应用端
frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\LockscreenWallpaper.java
public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implements Runnable { private static final String TAG = "LockscreenWallpaper"; private final PhoneStatusBar mBar; private final WallpaperManager mWallpaperManager; private final Handler mH; private boolean mCached; private Bitmap mCache; private int mCurrentUserId; // The user selected in the UI, or null if no user is selected or UI doesn't support selecting // users. private UserHandle mSelectedUser; private AsyncTask<Void, Void, LoaderResult> mLoader; public LockscreenWallpaper(Context ctx, PhoneStatusBar bar, Handler h) { mBar = bar; mH = h; mWallpaperManager = (WallpaperManager) ctx.getSystemService(Context.WALLPAPER_SERVICE); mCurrentUserId = ActivityManager.getCurrentUser(); IWallpaperManager service = IWallpaperManager.Stub.asInterface( ServiceManager.getService(Context.WALLPAPER_SERVICE)); try { service.setLockWallpaperCallback(this); } catch (RemoteException e) { Log.e(TAG, "System dead?" + e); } }
锁屏墙纸实现了 onWallpaperChanged接口并继承runnable ,这样当壁纸准备好可以显示时就会调用该接口,而该接口将该类post 到主线程,从而执行该类中run 函数。当加载完壁纸,这更新状态栏,mBar.updateMediaMetaData。
frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBar.java
if (ENABLE_LOCKSCREEN_WALLPAPER) { mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);}
桌面背景壁纸服务类
frameworks\base\core\java\android\service\wallpaper\WallpaperService.java
- 手机壁纸设置相关
- Android设置手机壁纸(WallPaper)
- 手机壁纸
- Android设置图片为手机壁纸,并且全屏显示。
- 增加手机壁纸
- android手机壁纸
- 手机壁纸获取和判断
- 安卓中改变手机壁纸
- Android手机壁纸(静态)
- Android 手机壁纸(动态1)
- 可爱兔斯基手机壁纸这样的卡通动漫手机壁纸喜欢吧
- Android 手机壁纸(动态2)
- 相关设置
- Android手机壁纸(Android学习随笔二)
- 2012北京车展大尺度宝贝 手机壁纸
- 喜迎世界杯,2014世界杯手机壁纸下载
- JBoss及相关设置
- BIOS 相关设置
- 3、<meta>标记、标题标记<h1>-<h6>标记及滚动字幕标记<marquee></marquee>
- 【补充】NAND FLASH大页和小页的区别
- 窗体部件之QComboBox
- Eclipse 使用的一些设置---持续更新
- oop面向对象--第十五天
- 手机壁纸设置相关
- spring 自动装配 default-autowire="byName/byType"
- HDU 1073 Online Judge(水~)
- 多个".h"文件中声明及定义 全局变量和函数
- oracle驱动加载的区别
- tensorflow学习笔记(1):编程风格,基本原理,入门教程(更新中...)
- 微信小程序大全:767个小程序
- 算法练习笔记(十七)——汉明距离的计算
- Java基础算法练习五题——(4)