zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

开发一个android桌面

Android开发 一个 桌面
2023-09-11 14:21:06 时间

要开发一个自己的桌面,作为程序员,觉得好多的应用都在偷偷的跑流量。
开发一个桌面程序,然后常驻系统服务,定时检查服务。
对系统的其他应用网络进行监控。把一些常用的功能集成进来。
做一个讯飞的语音服务。实现一些简单的人机交互。
参考一个哥们写的:
http://blog.csdn.net/sljjyy/article/details/11927713

2,修改配置文件
category android:name="android.intent.category.HOME" / category android:name="android.intent.category.DEFAULT" / action android:name="android.intent.action.MAIN" / category android:name="android.intent.category.LAUNCHER" / /intent-filter /activity

然后这个默认的activity程序就成桌面了。按home的时候。
会弹出一个选择框选择桌面。

3,进行优化
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

 mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

 new ImageView(MainActivity.this);

 apps = getPackageManager().queryIntentActivities(mainIntent, 0);

 if (apps != null) {

 for (ResolveInfo resolveInfo : apps) {

 Log.v(TAG, resolveInfo.toString());

 }

把返回的app显示到主界面中。
实现一个BaseAdapter 类。实现getView 方法。


View convertView = LayoutInflater.from(mContent).inflate(R.layout.text_img_view, null); ImageView image = (ImageView) convertView.findViewById(R.id.image); TextView text = (TextView) convertView.findViewById(R.id.text); //设置文字和图片。 text.setText(info.loadLabel(getPackageManager())); image.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); // convertView.setScaleType(ImageView.ScaleType.FIT_CENTER); //使用dp进行参数设置。进行分辨率适配。 convertView.setLayoutParams(new GridView.LayoutParams( (int) mResources.getDimension(R.dimen.app_width), (int) mResources.getDimension(R.dimen.app_height))); //返回一个图文混合。 return convertView;

定义了一个layout


 ?xml version="1.0" encoding="utf-8"? 

 LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 android:layout_width="match_parent"

 android:layout_height="match_parent"

 android:orientation="vertical" 

 ImageView

 android:id="@+id/image"

 android:layout_width="50dp"

 android:layout_height="50dp"

 android:layout_gravity="center_horizontal" / 

 TextView

 android:id="@+id/text"

 android:layout_width="match_parent"

 android:layout_height="wrap_content"

 android:gravity="center" / 

 /LinearLayout 

上面是图片,下面是文字。
还定义了宽度和高度


import com.google.android.gms.appindexing.Action; import com.google.android.gms.appindexing.AppIndex; import com.google.android.gms.appindexing.Thing; import com.google.android.gms.common.api.GoogleApiClient; import java.security.AccessControlContext; import java.util.List; import static java.security.AccessController.getContext; public class MainActivity extends AppCompatActivity { public static final String TAG = "Lancher"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //加载app应用。 loadApps(); GridView gridView = (GridView) findViewById(R.id.apps_list); //设置默认适配器。 mContent = getApplicationContext(); mResources = getResources(); gridView.setAdapter(new AppsAdapter()); gridView.setOnItemClickListener(clickListener); private AdapterView.OnItemClickListener clickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView ? adapterView, View view, int i, long l) { ResolveInfo info = apps.get(i); //该应用的包名 String pkg = info.activityInfo.packageName; //应用的主activity类 String cls = info.activityInfo.name; ComponentName componet = new ComponentName(pkg, cls); Intent intent = new Intent(); intent.setComponent(componet); startActivity(intent);
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); new ImageView(MainActivity.this); apps = getPackageManager().queryIntentActivities(mainIntent, 0); if (apps != null) { for (ResolveInfo resolveInfo : apps) { Log.v(TAG, resolveInfo.toString()); public class AppsAdapter extends BaseAdapter { public AppsAdapter() { @Override public int getCount() { return apps.size(); @Override public Object getItem(int i) { return apps.get(i); @Override public long getItemId(int i) { return i; @Override public View getView(int i, View view, ViewGroup viewGroup) { ResolveInfo info = apps.get(i); View convertView = LayoutInflater.from(mContent).inflate(R.layout.text_img_view, null); ImageView image = (ImageView) convertView.findViewById(R.id.image); TextView text = (TextView) convertView.findViewById(R.id.text); //设置文字和图片。 text.setText(info.loadLabel(getPackageManager())); image.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); // convertView.setScaleType(ImageView.ScaleType.FIT_CENTER); //使用dp进行参数设置。进行分辨率适配。 convertView.setLayoutParams(new GridView.LayoutParams( (int) mResources.getDimension(R.dimen.app_width), (int) mResources.getDimension(R.dimen.app_height))); //返回一个图文混合。 return convertView; }

全部代码不过130 行。但是很有意思。


本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53363731 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

开发一个自定义桌面还是挺有意思的。
想咋控制就咋控制呢。一页显示多少app,文字大小,图标。


从零开发一款Android RTMP播放器 当时在做一款游戏SDK,SDK主要提供了游戏画面声音采集、音视频编解码、直播推流、直播拉流播放等,SDK为游戏提供直播功能,播放也是采用了现成的ijkplayer播放器。但是SDK推广的时候遇到了问题,游戏厂家嫌弃SDK体积大(其实总共也就3Mb左右),我们需要一款体积小,性能高的播放器,由于开发成本的原因一直没有时间做,后面换工作期间,花了一个月时间把这款播放器开发出来,并开源了出来。oarplayer 是基于MediaCodec与srs-librtmp,完全不依赖ffmpeg,纯C语言实现的播放器。本文主要介绍这款播放器的实现思路。
Android组件化开发(七)--从零开始教你分析项目需求并实现 前面几篇文章我们封装了几个组件化功能组件:包括:**网络请求组件,图片加载请求组件,应用保活组件,音乐播放组件封装。** 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
Android组件化开发(六)-- 短视频播放组件封装 前面几篇文章我们封装了几个组件化功能组件: 包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`,`音乐播放组件封装`。 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
Android组件化开发(五)--完整版音乐播放组件的封装 前面几篇系列文章我们讲解了`组件化开发`中几个常用功能组件的开发,包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`。今天我们来封装一个`音乐播放组件`。
Android组件化开发(四)--进程保活组件的封装 前面文章我们封装了网络请求组件`lib_nework`和图片加载组件`lib_image_loader`,今天我们来封装一个进程保活的组件`lib_pull_alive`
Android组件化开发(二)--网络请求组件封装 前面一篇文章我们讲解了`maven私服`的搭建,maven私服在`组件化框架`中有一个很重要的地位就是可以将我们的`lib`库放到局域网中,供公司其他开发者使用,实现类库的分享。 下面是这个系列准备实现的一个`组件化实战项目框架`: