标题基于Android Tv制作一个Tv桌面(二)

这里是获取APP的各种信息,不知道为什么这一步只能在主类MainActivity 上进行,不能在其他的类进行此操作,也许是我见识短浅的原因吧,因为其他文件需要使用这些信息,我就把他们都设为public static final,虽然说尽量少用静态全局变量,而且其他地方也有几个双层循环,不过循环次数加起来也就21次,写完后打开应用的加载速度的确慢了些,桌面出来后加载应用图标大概需要0.5s酱紫,但是我目前还没有其他的办法,只能将就一下了。直接上代码
(MainActivity.java)

package com.example.androidtv;import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;/** Main Activity class that loads {@link MainFragment}.*/
public class MainActivity extends Activity {private static final String TAG ="Lancher" ;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);apps.clear();try {loadApps();} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}get_app_info();}public static final List<ResolveInfo> apps = new ArrayList<>();            //app列表public static final List<Drawable>icon = new ArrayList<>();             //图标列表public static final List<String>pak = new ArrayList<>();             //包名列表public static final List<String>cla = new ArrayList<>();             //主类列表public static final List<String> system_app_name = new ArrayList<>();    //系统应用包名列表public static final List<String> my_app_name = new ArrayList<>();        //第三方应用包名列表public static final List<String> name = new ArrayList<>();              //应用名称列表//获取APP列表private void loadApps() throws PackageManager.NameNotFoundException {Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);List<ResolveInfo> list = getPackageManager().queryIntentActivities(mainIntent, 0);if (list != null) {for (ResolveInfo resolveInfo : list) {//将一些不想加进去的APP过滤掉String pkgName = resolveInfo.activityInfo.packageName;switch (pkgName) {case "应用包名":case ......continue;}apps.add(resolveInfo);//Log.v(TAG, "apps size======================= " + apps.size());}}}//将APP的信息分别存起来private void get_app_info(){icon.clear();pak.clear();cla.clear();name.clear();system_app_name.clear();my_app_name.clear();for(int i = 0; i < apps.size(); i++){icon.add(apps.get(i).activityInfo.loadIcon(getPackageManager()));pak.add(apps.get(i).activityInfo.packageName);cla.add(apps.get(i).activityInfo.name);name.add(String.valueOf(apps.get(i).loadLabel(getPackageManager())));switch (apps.get(i).activityInfo.packageName){case "com.android.deskclock":case "com.android.music":case "com.android.vending":case "com.android.chrome":case "com.android.documentsui"://case "com.android.settings":case "com.droidlogic.FileBrower":case "com.droidlogic.miracast":case "com.droidlogic.appinstall":case "com.droidlogic.otaupgrade":system_app_name.add((String) apps.get(i).loadLabel(getPackageManager()));continue;}my_app_name.add(String.valueOf(apps.get(i).loadLabel(getPackageManager())));//            Log.d(TAG, "pak=========================== " + pak.get(i));
//            Log.d(TAG, "cla=========================== " + cla.get(i));}//pak.toString();}}

(MovieList.java)
很多地方我没有改,原因是我太懒了

package com.example.androidtv;import android.graphics.drawable.Drawable;
import android.util.Log;import java.util.ArrayList;
import java.util.List;import static android.content.ContentValues.TAG;public final class MovieList {public static final String MOVIE_CATEGORY[] = {"SYSTEM APP","MY APP"};private static List<Movie> list;private static long count = 0;private static List<String> apps_name = MainActivity.name;private static List<String> sys_apps_name = MainActivity.system_app_name;private static List<String> my_apps_name = MainActivity.my_app_name;private static String title[] = new String[apps_name.size()];public static List<Movie> getList() {if (list == null) {list = setupMovies();}return list;}public static List<Movie> setupMovies() {list = new ArrayList<>();int sys_app_num = sys_apps_name.size();for(int i = 0; i < apps_name.size(); i++){if(i<sys_app_num){title[i] = sys_apps_name.get(i);}else{title[i] = my_apps_name.get(i - sys_app_num);}}String description = "Fusce id nisi turpis. Praesent viverra bibendum semper. "+ "Donec tristique, orci sed semper lacinia, quam erat rhoncus massa, non congue tellus est "+ "quis tellus. Sed mollis orci venenatis quam scelerisque accumsan. Curabitur a massa sit "+ "amet mi accumsan mollis sed et magna. Vivamus sed aliquam risus. Nulla eget dolor in elit "+ "facilisis mattis. Ut aliquet luctus lacus. Phasellus nec commodo erat. Praesent tempus id "+ "lectus ac scelerisque. Maecenas pretium cursus lectus id volutpat.";String studio[] = {"Studio Zero", "Studio One", "Studio Two", "Studio Three", "Studio Four"};String videoUrl[] = {"com.android.deskclock","com.droidlogic.FileBrower","com.android.music","com.droidlogic.otaupgrade","com.droidlogic.appinstall"};String bgImageUrl[] = {""
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/Zeitgeist/Zeitgeist%202010_%20Year%20in%20Review/bg.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/Demo%20Slam/Google%20Demo%20Slam_%2020ft%20Search/bg.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/April%20Fool's%202013/Introducing%20Gmail%20Blue/bg.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/April%20Fool's%202013/Introducing%20Google%20Fiber%20to%20the%20Pole/bg.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/April%20Fool's%202013/Introducing%20Google%20Nose/bg.jpg",};String cardImageUrl[] = {""
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/Zeitgeist/Zeitgeist%202010_%20Year%20in%20Review/card.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/Demo%20Slam/Google%20Demo%20Slam_%2020ft%20Search/card.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/April%20Fool's%202013/Introducing%20Gmail%20Blue/card.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/April%20Fool's%202013/Introducing%20Google%20Fiber%20to%20the%20Pole/card.jpg",
//                "http://commondatastorage.googleapis.com/android-tv/Sample%20videos/April%20Fool's%202013/Introducing%20Google%20Nose/card.jpg"};List<String> app_apk = apps_name;list.clear();for (int index = 0; index < apps_name.size(); ++index) {Log.d(TAG, title.length+"setupMovies: ++++++++++++++++++++++++++++++++++++" + index);list.add(buildMovieInfo(title[index],description,studio[0],videoUrl[0],cardImageUrl[0],bgImageUrl[0]));}return list;}private static Movie buildMovieInfo(String title,String description,String studio,String videoUrl,String cardImageUrl,String backgroundImageUrl) {Movie movie = new Movie();movie.setId(count++);movie.setTitle(title);movie.setDescription(description);movie.setStudio(studio);movie.setCardImageUrl(cardImageUrl);movie.setBackgroundImageUrl(backgroundImageUrl);movie.setVideoUrl(videoUrl);return movie;}
}

基于Android Tv制作一个Tv桌面(二)相关推荐

  1. 基于C#制作一个ChatGPT桌面助手

    基于C#制作一个ChatGPT桌面助手,在工作或者学习时提升自己的效率,工欲善其事,必先利其器. 一.前言 1.1.什么是ChatGPT 1.2.ChatGPT官网及key申请 二.后台项目 2.1. ...

  2. 物联网控制APP入门专题(四)---使用android studio制作一个控制页面的APP框架

    摘要:上篇文章讲了如何用阿里云IoT Studio快速制作一个网页版的手机端,以及通过第三方平台将这个网页打包成一个APK文件,使它可以安装到手机实现APP的功能.但是使用第三方平台做的APP是需要收 ...

  3. 怎么用Android做登录界面,利用Android怎么制作一个APP登录界面

    利用Android怎么制作一个APP登录界面 发布时间:2020-12-02 17:09:10 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关利用Android怎么制作一 ...

  4. 基于Android的便签设计(二)

    承接基于Android的便签设计(一)链接: link. 便签功能的实现 参考设计: Android开发便签APP:https://blog.csdn.net/qq_38442065/article/ ...

  5. 如何使用android studio制作一个阿里云物联网APP

    摘要:要想学会物联网技术,需要掌握的知识真的有太多了,其中一个关键的技能,也是决定物联网技能等级的,就是移动端开发能力.当然,现在有很多平台都提供了各种各样的移动端应用,但是都相对封闭,我们无法掌握其 ...

  6. 蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

    前言:蓝牙聊天App设计全部有三篇文章(一.UI界面设计,二.蓝牙搜索配对连接实现,三.蓝牙连接聊天),这篇文章是:二.蓝牙搜索配对连接实现. 课程1:Android Studio小白安装教程,以及第 ...

  7. 如何制作一个漂亮的二维码 QRBTF

    作者 ciaochaos CPunisher 置顶:我们的二维码生成网站 qrbtf.com 有人说,二维码是 线下向线上转化最重要的入口,无论是对于线下商家.自媒体运营者.策展人还是纸媒编辑,二维码 ...

  8. 基于小程序制作一个ChatGPT聊天机器人

    在AI技术日新月异的浪潮中,将ChatGPT与实战开发相结合,制作一个随身携带的聊天机器人,紧贴前沿的同时稳固基础. 一.前言 1.1.什么是ChatGPT 1.2.什么是文本完成 二.API 2.1 ...

  9. 基于Java+SpringBoot制作一个论坛小程序

    制作一个论坛互动平台,让兴趣志同道合者用户聚集在这里交流话题.展示自我.结交朋友. 一.小程序 1.1 项目创建 1.2 首页 1.3 论坛板块页 1.4 个人中心页 1.5 帖子详情页 二.API ...

最新文章

  1. 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)
  2. 自定义视图 视图控制器(UIViewController)
  3. 工作233:定义有对话框的按钮
  4. 4-4Pytorch解决数字识别MNIST
  5. 51单片机实现c语言字母滚动,基于51单片机的led点阵滚动显示上下左右c语言程序.docx...
  6. HTML5 css3 阴影效果
  7. 126邮箱登录html,126邮箱登陆界面
  8. 如何测试电脑网速情况
  9. english 后缀
  10. 【调剂】关于开通上海第二工业大学2022年硕士研究生招生预调剂系统的通知
  11. 面试题之细胞分裂问题
  12. 论坛数据库的几种建表----年度项目拙计有感(前半部分转)
  13. 透过全球首个知识增强千亿大模型,看到中国AI差异化发展之路
  14. DHU数据结构-循环单链表-ADT应用-圆桌问题
  15. 高通 qca-wifi 移植
  16. Python环境搭建—安利Python小白的Python和Pycharm安装详细教程
  17. 达人评测 雷神911mr怎么样
  18. (三)独立集、支配集及匹配——图论笔记系列
  19. python制作网页系统_使用python静态网页生成工具pelican快速在github上部署网站博客...
  20. 怎么自己做markdown目录?

热门文章

  1. 奇迹MU虚拟机 游戏多开无法登陆和登录错误的问题如何解决?
  2. 毕业设计日志(18)
  3. ADB 最常用命令集合及各种问题解决方式
  4. Java 算法 矩阵求和
  5. (附源码)ssm高校学生档案信息管理系统 毕业设计 010936
  6. 安妮的50句经典[转贴]
  7. java计算机毕业设计宁夏红色旅游管理系统源代码+数据库+系统+lw文档
  8. html内容被背景图片遮住怎么办_定义BODY背景图后,DIV的背景图片显示不全(已解决)...
  9. 多御安全浏览安卓版升级尝鲜,新增下载管理功能
  10. 数码相机常用CCD/CMOS尺寸对比