Android TV Launcher开源项目

这个项目是机顶盒桌面,用来播放视频、显示图片、应用管理和其他针对机顶盒产品的设置。目前git和CSDN code上面都没有类似的开源项目,正好本人最近在开发类似产品,网上类似研究还非常少,完全自己实现还是比较困难。所以就把目前的项目开源出来,也有利于其他人少走弯路。 
git项目地址 
CSDN code项目地址

项目框架结构

Android TV Launcher开源项目_第1张图片 
UI、adapter、实体类、图片cache、网络层。 
这个层级关系还是和大部分项目是类似的。

功能模块的详细实现方式

这个部分主要讲一下机顶盒Launcher实现的几个难点,如还有其他问题请留言。

app管理

1.扫描可启动的应用

Android TV Launcher开源项目_第2张图片
因为原项目效果图不符合开源要求所以去掉了。

    public ArrayList getLaunchAppList() {
        PackageManager localPackageManager = mContext.getPackageManager();
        Intent localIntent = new Intent("android.intent.action.MAIN");
        localIntent.addCategory("android.intent.category.LAUNCHER");
        List localList = localPackageManager.queryIntentActivities(localIntent, 0);
        ArrayList localArrayList = null;
        Iterator localIterator = null;
        if (localList != null) {
            localArrayList = new ArrayList();
            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();

            // 

你可能感兴趣的:(Android,TV,+,机顶盒开发,Android,开发,管理,开源项目,launcher,机顶盒,电视)