Android5.0去掉开机锁屏和休眠
来源:互联网 发布:手机淘宝返利网怎么用 编辑:程序博客网 时间:2024/06/16 09:33
先说以下需求吧:
1. 开机不锁屏
2. 开机后不锁屏
3. 开机后按了电源键只熄屏不锁屏
4. 以上功能的修改不影响设置熄屏时间
需求分析
由于我的应用是唯一的Launcher,也就是开机系统会自动启动的前端界面,那么可以使用DISABLE_KEYGUARD的方式实现开机不出现锁屏界面。但是仅仅是开机不出现锁屏界面是不够的,在进入到其他应用的时候,时间一长,还是会锁屏,你可能会说,那我就把所有的应用DISABLE_KEYGUARD。
嗯,听起来可行,不过如果用户按了电源键,那么这种方式还是不够靠谱。
应用程序开机不锁屏
这种方式是开机不出现锁屏,直接进入到指定应用(比如我这里的是替换了系统Launcher的自定义Launcher)。
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
onCreate中加入,最好在setContentView(R.layout.main)之前
getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD, WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
应用程序全屏显示
在配置文件的《application》中加入
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
不休眠实现
不休眠可以修改系统源码,去掉休眠功能,但是这种代价太大,我们不知道改了之后会不会引起其他问题。因此从侧面入手,我发现可以修改休眠时间的方式达到效果。
主要在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml中修改 ,
将def_screen_off_timeout休眠时间修改为最大值,最大值就是永不休眠。
<integer name="def_screen_off_timeout">2147483647</integer>
在修改休眠时间的时候我发现也可以通过配置的方式实现第一种效果,开机不锁屏。
我们来看一下SettingProvider中的源码:
vim frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
if (SystemProperties.getBoolean("ro.lockscreen.disable.default", false) == true) { loadSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, "1"); } else { loadBooleanSetting(stmt, Settings.System.LOCKSCREEN_DISABLED, R.bool.def_lockscreen_disabled); }
这里的意思是说,如果从系统属性中读到的禁用锁屏为true则执行禁用锁屏,否则采用def_lockscreen_disabled的配置,而def_lockscreen_disabled在SettingsProvider/res/values/defaults.xml 当中;
我们先来修改SettingsProvider/res/values/defaults.xml 试试
vim frameworks/base/packages/SettingsProvider/res/values/defaults.xml
修改def_lockscreen_disabled为true
<bool name="def_lockscreen_disabled">true</bool>
修改完成之后,记得把文件推过去
Z:\nexus_source\out\target\product\mako\system\priv-app\SettingsProvider>adb push SettingsProvider.apk /system/priv-app/SettingsProvider/SettingsProvider.apkZ:\nexus_source\out\target\product\mako\system\priv-app\SettingsProvider>adb reboot
嗯,我的设备不行,毛线效果都没有,因此,修改第一句:
修改源代码:
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
if (SystemProperties.getBoolean("ro.lockscreen.disable.default", false) == true) 改为if (SystemProperties.getBoolean("ro.lockscreen.disable.default", true) == true)
这里要注意,如果ro.lockscreen.disable.default默认是false的,我们可以先改成默认true,如果默认的配置配置的也是false,那么我们进入到配置文件里面改成true;
ss
电源键不锁屏
如何实现按下电源键不休眠呢?想不到这个也能配置,修改def_screenshot_button_show为false可以屏蔽电源键锁屏功能,若是没有这个参数可以手动添加
位于:
frameworks/base/packages/SettingsProvider/res/values/default.xml
<bool name="def_screenshot_button_show">false</bool>
锁定休眠时间
到了这里基本差不多了,但是为了防止用户手动设置休眠时间,我们还可以通过修改源码的方式,让用户的修改失效,这个是从源码里面看到的,当作参考:
/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
@Override public boolean onPreferenceChange(Preference preference, Object objValue) { final String key = preference.getKey(); if (KEY_SCREEN_TIMEOUT.equals(key)) { try { int value = Integer.parseInt((String) objValue); value = Integer.MAX_VALUE;//larsonzhong@163.com added Settings.System.putInt(getContentResolver(), SCREEN_OFF_TIMEOUT, value); updateTimeoutPreferenceDescription(value); } catch (NumberFormatException e) { Log.e(TAG, "could not persist screen timeout setting", e); } } if (KEY_FONT_SIZE.equals(key)) { writeFontSizePreference(objValue); } if (preference == mAutoBrightnessPreference) { boolean auto = (Boolean) objValue; Settings.System.putInt(getContentResolver(), SCREEN_BRIGHTNESS_MODE, auto ? SCREEN_BRIGHTNESS_MODE_AUTOMATIC : SCREEN_BRIGHTNESS_MODE_MANUAL); } if (preference == mLiftToWakePreference) { boolean value = (Boolean) objValue; Settings.Secure.putInt(getContentResolver(), WAKE_GESTURE_ENABLED, value ? 1 : 0); } if (preference == mDozePreference) { boolean value = (Boolean) objValue; Settings.Secure.putInt(getContentResolver(), DOZE_ENABLED, value ? 1 : 0); } return true; }
- Android5.0去掉开机锁屏和休眠
- android5.1去掉开机锁屏
- android4.0去掉锁屏和休眠
- android4.0去掉锁屏和休眠 Power键按钮
- android4.0去掉锁屏和休眠 Power键按钮
- android4.0.4系统里去掉锁屏和休眠
- android5.0 开机横屏修改
- Android 去掉Power键按钮 锁屏界面 休眠时间
- Android 去掉Power键按钮 锁屏界面 休眠时间
- 关于Android5.0+去掉标题栏的研究
- android5.0上去掉按钮阴影
- Android5.0以上去掉阴影效果
- Android5.0 开机设置静态IP地址
- MTK Android5.0 settings休眠模式中添加永不休眠(Never)选项
- android 禁止休眠和锁屏
- Android5.1开机动画更换和制作流程
- windows去掉休眠功能
- Android4.2 在开机时去掉锁屏
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 学习笔记6:mysql多从读负载均衡读写分离
- 滚动条事件
- pandas-1:Series && DataFrame
- 搭建高可用的redis集群,避免standalone模式带给你的苦难
- Android5.0去掉开机锁屏和休眠
- 谈谈document.ready和window.onload的区别
- 鼠标放上放下图片改变
- [BZOJ]3597: [Scoi2014]方伯伯运椰子 01分数规划+spfa
- 如何使用Tomcat部署多个项目
- jenkins+gradle+git构建Android自动打包
- spring boot Batch 的简单学习
- asp.net c# 打开新页面或页面跳转
- Qt 学习之路 2(41):model/view 架构