获取到所有的表盘信息
关于表盘的获取,网上的资料也少,也只是怎么获取当前壁纸(表盘)。这里呢,就从思路上尝试去获取表盘。
思路:原理上来讲,表盘就是一个服务,动态壁纸,在后台不断地刷新。这样子的话,我们可以通过获取所有的服务,添加过滤即获取表盘。
1、拿到包管理器
2、通过包管理器去获取所有的服务,但是要添加过滤
3、还是看码吧,已经定了注释,相信聪明的你一定可以的
private void getAllWallpapers() {
//拿到包管理器
final PackageManager mPackageManager = getPackageManager();
//获取到包管理器(第二个参数过代表过滤形式,过滤形式有两种,一种是Intent,一种是Resolved)
List servicesLists = mPackageManager.queryIntentServices(new Intent(WallpaperService.SERVICE_INTERFACE),PackageManager.GET_META_DATA);
//获取到集合的长度
int size = servicesLists.size();
//创建一个用来保存壁纸信息的集合
mWallpaperInfos = new ArrayList<>(size);
//看看获取到的和手表上的表盘数量是否一样
Log.d(TAG, "size == " + size);
//遍历服务数据
for (int i = 0; i < size; i++) {
//集合内容
ResolveInfo resolveInfo = servicesLists.get(i);
//使用组件信息来创建壁纸服务,当然,也可以先不new,用的时候再New,反正已经获取到了嘛。
WallpaperInfo info;
try {
info = new WallpaperInfo(this, resolveInfo);
} catch (XmlPullParserExcept