【拯救电源键】最详尽的android开发一键锁屏实例 提供免费源码+apk
2014-07-27 19:50
591 查看
现在的手机屏幕越来越大,单手操控起来颇为不便,比如锁屏。电源键一般为实体键,经常按难免损耗。所以一键锁屏软件应运而生,既能方便地锁屏,还能减少电源键损耗。甚至许多手机厂商在自家的rom里集成了这个功能,如MIUI。然而也有没有集成锁屏功能的,比如我的手机,只好自己去网上下载。应用市场里五花八门的锁屏软件,有的下载下来还有广告,或者其他一堆的功能。但是我只需要单纯的锁屏功能。所以索性我自己来写一个,自己用得才踏实。自己还起了个好玩的名字“拯救电源键”。
经过网上查阅资料,并一步步实现了这个小应用。在前辈们的基础上,我将讲解得更加详尽,以供初学者交流学习。还将提供安装包优化的方法(最后我的安装包只有16KB大)。好了,进入项目讲解。
一、项目结构。需要自己写的地方都展开了,如图:
一目了然吧。
二、代码。讲解请看注释。
1、MyLockActivity.java
2、MyReceiver.java
3、在AndroidManifest.xml里注册MyLockActivity和MyReceiver,看名字就知道前面是Activity,后面是Receiver。请记得给MyLockActivity加上属性:
这样可以确保锁屏后屏幕不会闪一下。
三、XML文件。
1.main_layout。很简单,因为不需要界面显示,所以设一个空的线性布局或相对布局都没问题。
2、my_lock_screen.xml。这里设置锁屏的权限,所以不可或缺。这里先提一句,这个文件名要在manifest里导入。需要注意的是这里面的字段不能Alt+/自动提示,需要手动敲。
3、AndroidManifest.xml
至此,项目中所有的代码部分结束了。不出意外,可以在手机上运行了。
下面介绍如何给apk安装包瘦身。
五、优化安装包。
当我写完导出apk后发现安装包有几百KB,然后我又把drawable下的logo图删得只剩一张,还是与网上其他小的一键锁屏软件安装包容量相距甚远。然后我又查了如何给apk瘦身的资料,发现了如下方法:
选中当前项,右键选择“properties”,选择“Java Build Path”,选择“Order and Export”,只勾选中最后那一项(前两项是必选的,会发现点击没有反应),如图:
这样你的安装包就可以变瘦啦。可以与优化前对比效果。
六、源码和apk下载。
源码: http://download.csdn.net/detail/u013724061/7684565
apk:http://download.csdn.net/detail/u013724061/7684569
logo图也贴出来吧,我自己找图P的,感觉还不错。手里没有现成的图的话将就用啦,但记得自己调整分辨率哈。
经过网上查阅资料,并一步步实现了这个小应用。在前辈们的基础上,我将讲解得更加详尽,以供初学者交流学习。还将提供安装包优化的方法(最后我的安装包只有16KB大)。好了,进入项目讲解。
一、项目结构。需要自己写的地方都展开了,如图:
一目了然吧。
二、代码。讲解请看注释。
1、MyLockActivity.java
package app.lockscreen; import xw.onekeylockscreen.R; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Bundle; public class MyLockActivity extends Activity { //设备管理器 DevicePolicyManager mPolicyManager; //ComponentName(组件名称)是用来打开其他应用程序中的Activity或服务的 ComponentName componentName; //requestCode public static final int MY_REQUEST_CODE = 10086; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获得设备管理器服务 mPolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); //这里的MyReceiver是DeviceAdminReceiver的子类 componentName = new ComponentName(this, MyReceiver.class); //先判断是否具备锁屏权限,如果具有,则执行lockNow()方法锁屏并finish()当前Activity //安装后第一次运行都要去获得权限 if (mPolicyManager.isAdminActive(componentName)){ mPolicyManager.lockNow(); finish(); } else { getAdminActive();//获取权限 } //有人说将setContentView()方法放在后面可以避免锁屏后闪一下。 //但我试过放在前后都看不出什么区别,估计是手机处理太快了吧 setContentView(R.layout.main_layout); //锁屏后关闭自己的进程,节约资源 android.os.Process.killProcess(android.os.Process.myPid()); } /** * 获取锁屏权限 */ private void getAdminActive() { // 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); //权限列表 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); //添加描述,在第一次启动需要权限激活时,可以看到自定义的描述 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "点击“激活”后才能使用锁屏功能哦^^"); startActivityForResult(intent, MY_REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //获取权限成功,锁屏并finish(),否则继续获取权限 if (requestCode == MY_REQUEST_CODE && requestCode == Activity.RESULT_OK){ mPolicyManager.lockNow(); finish(); } else { getAdminActive();//继续获取权限 } super.onActivityResult(requestCode, resultCode, data); } }
2、MyReceiver.java
package app.lockscreen; import android.app.admin.DeviceAdminReceiver; public class MyReceiver extends DeviceAdminReceiver { //这个类里可以啥也不写 }
3、在AndroidManifest.xml里注册MyLockActivity和MyReceiver,看名字就知道前面是Activity,后面是Receiver。请记得给MyLockActivity加上属性:
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 或 android:theme="@android:style/Theme.NoDisplay"
这样可以确保锁屏后屏幕不会闪一下。
三、XML文件。
1.main_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" > </LinearLayout>
2、my_lock_screen.xml。这里设置锁屏的权限,所以不可或缺。这里先提一句,这个文件名要在manifest里导入。需要注意的是这里面的字段不能Alt+/自动提示,需要手动敲。
<?xml version="1.0" encoding="utf-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <!-- 强制锁屏 --> <force-lock /> </uses-policies> </device-admin>
3、AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xw.onekeylockscreen" android:versionCode="1" android:versionName="1.01" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <!--注册MyLockActivity的内容 --> <activity android:name="app.lockscreen.MyLockActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--注册MyReceiver的内容 --> <receiver android 4000 :name="app.lockscreen.MyReceiver" android:description="@string/app_name" android:label="@string/app_name" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@layout/my_lock_screen"/> <!--刚才说的需要导入的文件名 --> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver> </application> </manifest>
至此,项目中所有的代码部分结束了。不出意外,可以在手机上运行了。
下面介绍如何给apk安装包瘦身。
五、优化安装包。
当我写完导出apk后发现安装包有几百KB,然后我又把drawable下的logo图删得只剩一张,还是与网上其他小的一键锁屏软件安装包容量相距甚远。然后我又查了如何给apk瘦身的资料,发现了如下方法:
选中当前项,右键选择“properties”,选择“Java Build Path”,选择“Order and Export”,只勾选中最后那一项(前两项是必选的,会发现点击没有反应),如图:
这样你的安装包就可以变瘦啦。可以与优化前对比效果。
六、源码和apk下载。
源码: http://download.csdn.net/detail/u013724061/7684565
apk:http://download.csdn.net/detail/u013724061/7684569
logo图也贴出来吧,我自己找图P的,感觉还不错。手里没有现成的图的话将就用啦,但记得自己调整分辨率哈。
相关文章推荐
- [置顶]▁▂▃ 【2011-9-22日前Himi所有博文锦集-CHM文档】+【Android游戏开发系列源码】+【免费提供打包下载】▃▂▁
- Android一键锁屏开发全过程【源码+附图】
- [置顶]▁▂▃ 【2011-9-22日前Himi所有博文锦集-CHM文档】+【Android游戏开发系列源码】+【免费提供打包下载】▃▂▁
- 正点原子提供免费开源的的连接机智云平台开发教程和实例源码
- Android开发之ListView详解(带按钮布局)【免费提供源码下载】
- Android开发之数据存储之一:haredPreferences【免费提供源码下载】
- Android开发之数据存储之二:SQLite数据库存储方式【免费提供源码下载】
- android Desk桌面一键锁屏 源码
- Android一键锁屏开发全过程
- [Android实例] Android开发 API人脸检测实例教程(内含源码)
- android widget 开发实例 : 桌面便签程序的实现详解和源码 (上)
- android 一键锁屏 开发
- Android开发资料推荐之45个android实例源码
- Android开发环境搭建篇详尽的教程实例汇
- Android一键锁屏程序实例
- Android开发资料推荐之45个android实例源码
- android widget 开发实例 : 桌面便签程序的实现详解和源码 (上)
- android水果连连看开发实例【源码下载有背景音乐、音效】
- Android开发资料推荐之45个android实例源码,很好很强大!!!
- Android开发 API人脸检测实例教程(内含源码)