锁屏管理的简单实现
来源:互联网 发布:咸鱼表情出处 知乎 编辑:程序博客网 时间:2024/05/21 10:47
如前面所说,我在方案公司工作,日常负责锁屏的开发。由于设计过很多锁屏,为了能够像小米手机中的主题切换中,实现百变锁屏功能。
再次我简单说下锁屏管理的思路,由于涉及到公司代码机密问题。有的地方我只会简单点到为止,估计细节如果读者有一定的功力的话,也能猜的出来时怎么实现的。
再次我简单说下锁屏管理的思路,由于涉及到公司代码机密问题。有的地方我只会简单点到为止,估计细节如果读者有一定的功力的话,也能猜的出来时怎么实现的。
下面贴现锁屏管理的效果图片。
在锁屏管理中,出现了锁屏预览界面和锁屏的名称,这个类似于Launcher中的图标。我们就可以利用这样的思路来实现相同的功能。
首先在锁屏管理中,要能查询这个手机上面一共安装了多少个锁屏apk。类似于Launcher一样,需要查询出多少应用有图标。
Launcher中识别的条件如下所示。
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".TestlightActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
主要的标签是<category android:name="android.intent.category.LAUNCHER" />
那么我们的锁屏界面如何能查询呢?一般的Apk锁屏,都是在屏幕熄灭的时候,监听广播,然后把系统锁屏给禁止掉,最后显示我们的锁屏Activity,这样就完成了一个最简单锁屏了。
利用上面锁屏的思路,我们可以查询所有锁屏Apk。然后再接受到系统广播后,就选择性的指定某一个apk作为显示的锁屏。
void queryAllLockScreen() {Context context = this;PackageManager pm = context.getPackageManager();Intent it = new Intent("com.locktest.LOCK_SCREEN");it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);List<ResolveInfo> all = pm.queryIntentActivities(lockIntent, 0);for (ResolveInfo info : all) {System.out.println(info.activityInfo.packageName);System.out.println(info.activityInfo.name);}}
/** * 开启activity */private void initIntent() {lockIntent = new Intent("com.fx.locktest.LOCK_SCREEN");String packageName = null; // 数据库中得到,没有具体实现String className = null; // 数据库中得到,没有具体实现lockIntent.setClassName(packageName, className);lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);}
/** * 屏幕变亮的广播 */private BroadcastReceiver screenReceiver = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF) || intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {startActivity(lockIntent);}}};
最后涉及到锁屏指定以及锁屏数据保存问题。根据上面代码可以看出,所有的锁屏最主要的需要保存的数据有package以及activity的路径。这样我们就实现代码了。
由于保存的数据比较少,且是键值对的形式,个人在实现的时候,刚刚开始使用的是cottentprovider,但是这样保存比较麻烦,同时获取数据也是比较麻烦的,最后就使用了Android内置的sharepreference来保存,简单而且使用。
好了,就简单介绍到这边,由于机密问题(当然这个也不是什么大秘密),说的比较简单。
如有疑问,欢迎前来讨教。
- 锁屏管理的简单实现
- 虚拟内存管理的简单实现
- 实现简单的malloc管理
- 频道管理的简单实现
- php 实现 简单的权限管理
- java实现的简单文件管理系统
- 学员成绩管理的简单C实现
- smarty实现简单的新闻管理系统
- 双链表实现简单的学生管理系统
- 简单的图书管理系统php实现
- 一个简单备份管理系统的实现
- Java实现简单的图书管理系统
- [置顶] 实现简单的 DB 迁移管理
- Delphi插件管理框架的简单实现
- JAVA实现简单的图书管理系统
- AngularJs 技术实现简单的表格管理
- 简单图书管理实现
- 简单实现频道管理
- 奖品查询代码
- Error! 'if ($testNgXslt.testDetailsFilter) then $testNgXslt.testDetailsFilter else 'FAIL,PASS,SKIP''
- oracle早期版本
- hdu 4725 (spfa(deque)+建图(建图很难)) 求最短路
- Android不让弹出键盘挡住Views代码
- 锁屏管理的简单实现
- Spring MVC在controller和视图之间传递参数的方法
- Linux yum光盘安装
- POJ-2573-Bridge
- system call
- vnc svn 管理
- ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)
- 浅谈HTTP中Get与Post的区别
- cxf jdk1.5 jboss 冲突