这个项目是机顶盒桌面,用来播放视频、显示图片、应用管理和其他针对机顶盒产品的设置。目前git和CSDN code上面都没有类似的开源项目,正好本人最近在开发类似产品,网上类似研究还非常少,完全自己实现还是比较困难。所以就把目前的项目开源出来,也有利于其他人少走弯路。
git项目地址
CSDN code项目地址
项目框架结构
UI、adapter、实体类、图片cache、网络层。
这个层级关系还是和大部分项目是类似的。
功能模块的详细实现方式
这个部分主要讲一下机顶盒Launcher实现的几个难点,如还有其他问题请留言。
app管理
1.扫描可启动的应用
因为原项目效果图不符合开源要求所以去掉了。
public ArrayList<AppBean> getLaunchAppList() {
PackageManager localPackageManager = mContext.getPackageManager();
Intent localIntent = new Intent("android.intent.action.MAIN");
localIntent.addCategory("android.intent.category.LAUNCHER");
List<ResolveInfo> localList = localPackageManager.queryIntentActivities(localIntent, 0);
ArrayList<AppBean> localArrayList = null;
Iterator<ResolveInfo> localIterator = null;
if (localList != null) {
localArrayList = new ArrayList<AppBean>();
localIterator = localList.iterator();
}
while (true) {
if (!localIterator.hasNext())
break;
ResolveInfo localResolveInfo = (ResolveInfo) localIterator.next();
AppBean localAppBean = new AppBean();
localAppBean.setIcon(localResolveInfo.activityInfo.loadIcon(localPackageManager));
localAppBean.setName(localResolveInfo.activityInfo.loadLabel(localPackageManager).toString());
localAppBean.setPackageName(localResolveInfo.activityInfo.packageName);
localAppBean.setDataDir(localResolveInfo.activityInfo.applicationInfo.publicSourceDir);
localAppBean.setLauncherName(localResolveInfo.activityInfo.name);
String pkgName = localResolveInfo.activityInfo.packageName;
PackageInfo mPackageInfo;
try {
mPackageInfo = mContext.getPackageManager().getPackageInfo(pkgName, 0);
if ((mPackageInfo.applicationInfo.flags & mPackageInfo.applicationInfo.FLAG_SYSTEM) > 0) {//系统预装
localAppBean.setSysApp(true);
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
String noSeeApk = localAppBean.getPackageName();
//