去锁修改屏幕休眠(andorid4.0)

1.去掉开机锁

vim workdir/i.MX53-QSB-Android-Release3.3/src/frameworks/base/packages/SettingsProvider/res/values/defaults.xml


 // <integer name="def_screen_off_timeout">60000</integer>

   <integer name="def_screen_off_timeout">-1</integer>
   //60000改成想要的时间,不锁为-1

2.去掉休眠
sudo vim workdir/i.MX53-QSB-Android-Release3.3/src/frameworks/policies/base/phone/com/android/internal/policy/impl
/KeyguardViewMediator.java

sudo vim workdir/imx53_android2.3/i.MX53-QSB-Android-Gingerbread-Release4.0/src/frameworks/base/policy/src/com/android/internal/policy/impl$ /KeyguardViewMediator.java
 // private boolean mExternallyEnabled = true;

          private boolean mExternallyEnabled = false;

  修改成false,这样就不会再进入休眠状态了





=================================================================================================================================

Introduction

 

常常我们开 发程序的时候我们不需要系统唤醒系统锁屏功能,比如我们在做xxxNowTV或XXX播放器这样的程序,用户有时候在看电视或视频的时候不希望系统的锁屏 功能启动,既不想锁频,然而系统却在我们看电视或者视频的时候出来个锁屏的界面进行锁频拉,我们还要想继续看的话还要去解锁,这样好麻烦,不是我们想要 的,那我们该怎么做呢,其实很简单,我这里只讲其中的两种

 

 :我们只要在程序中用代码实现。代码如下:  

[java:showcolumns:firstline[1]]  view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. //方法一   
  2. getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.main);   
  3. //方法二   
  4.     @Override  
  5.     protected void onResume() {  
  6.         super.onResume();  
  7.         pManager = ((PowerManager) getSystemService(POWER_SERVICE));  
  8.         mWakeLock = pManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK  
  9.                 | PowerManager.ON_AFTER_RELEASE, TAG);  
  10.         mWakeLock.acquire();  
  11.     }  
  12.       
  13.     @Override  
  14.     protected void onPause() {  
  15.         super.onPause();  
  16.           
  17.         if(null != mWakeLock){  
  18.             mWakeLock.release();  
  19.         }  
  20.     }  
  21. //方法三  
  22.     public void unLock(){  
  23.         mContentResolver = getContentResolver();  
  24.         //不建议使用  
  25.         //setLockPatternEnabled(android.provider.Settings.System.LOCK_PATTERN_ENABLED,false);  
  26.           
  27.         //推荐使用  
  28.         setLockPatternEnabled(android.provider.Settings.Secure.LOCK_PATTERN_ENABLED,false);  
  29.     }  
  30.       
  31.     private void setLockPatternEnabled(String systemSettingKey, boolean enabled) {  
  32.          //不建议使用  
  33.          //android.provider.Settings.System.putInt(mContentResolver,systemSettingKey, enabled ? 1 : 0);  
  34.           
  35.          //推荐使用  
  36.          android.provider.Settings.Secure.putInt(mContentResolver, systemSettingKey,enabled ? 1 : 0);  
  37.     }  
  38.     //但注意要加权限AndroidManifest.xml文件中加入  
  39.     //<uses-permission android:name="android.permission.WRITE_SETTINGS" />  
  40.     //还要特别注意的是要加入 android:sharedUserId="android.uid.system",但有一个问题,  
  41.     //如果加入了sharedUserId后就不能使用eclipse编译了,一定要手动通过 mm -B进行编译,然后把apk install到模拟器或设备中  
  42.       

 

二:禁用系统的锁频功能,这方法不建议使用,只有在设当的环境下适当使用既可,我们只要知道这样我们也可以达到这样的功能实现就OK。

我们知道Android系统的锁屏时间存放在Setting数据库中,字段为Settings.System.SCREEN_OFF_TIMEOUT。我们可以查看SettingsProvider源码,查看如下文件的源码如下:

~/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java






查看loadSystemSettings()函数的代码如下

我们通过查看源码便知道, Settings.System.SCREEN_OFF_TIMEOUT没有初始化的话(系统首次启动,这个字段肯定是没 有初始化的),系统将会利用资源中的R.integer.def_screen_off_timeout来初始化。我们为了让系统永不锁屏,只需要把资源 R.integer.def_screen_off_timeout设为-1即可。查看文件在这里:

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

可以找到R.integer.def_screen_off_timeout的定义 

[xhtml:showcolumns:firstline[1]]  view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. <integer name="def_screen_off_timeout">60000</integer>  

发现默认值为60000ms,也就是60s。我们只需要把这个参数改为-1。然后重新编译SettingsProvider模块,就OK了。

但有时候也会有这样的情况发生,用户进入系统后,修改锁屏时间,为了这样的情况发生我们得在Setting模块中删除对锁屏时间的设置。这样Android设备就不锁屏了。

我们这里还要处理一种情况,就是让系统一启动我们就禁用锁屏的功能,很简单,我们只要把系统锁  功能的的初始默认开关给改以下就可以了,如下找到这个类:

frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewMediator.java






该文件中有一个变量定义如下:



 
 
[java:showcolumns:firstline[1]] view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. /** 
  2.  * External apps (like the phone app) can tell us to disable the keygaurd. 
  3.  */  
  4. private boolean mExternallyEnabled = true  
mExternallyEnabled是用来管理是否开启屏幕锁的关键。默认值是打开屏锁,根据注释可以知道他是希望应用程序来修改这个 值,我们可以把这个值改成false就可以了。 有时候我们不想修改这个初始值,那我们看看这个类有没有提供相应的方法来供外部修改这个值的,不出我们所料,看下面这段代码就是的了:
[java:showcolumns:firstline[1]] view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. /** 
  2.  * Same semantics as {@link WindowManagerPolicy#enableKeyguard}; provide 
  3.  * a way for external stuff to override normal keyguard behavior.  For instance 
  4.  * the phone app disables the keyguard when it receives incoming calls. 
  5.  */  
  6. public void setKeyguardEnabled(boolean enabled) {  
  7.     synchronized (this) {  
  8.         if (DEBUG) Log.d(TAG, "setKeyguardEnabled(" + enabled + ")");  
  9.   
  10.         mExternallyEnabled = enabled;  
  11.   
  12.         if (!enabled && mShowing) {  
  13.             if (mExitSecureCallback != null) {  
  14.                 if (DEBUG) Log.d(TAG, "in process of verifyUnlock request, ignoring");  
  15.                 // we're in the process of handling a request to verify the user  
  16.                 // can get past the keyguard. ignore extraneous requests to disable / reenable  
  17.                 return;  
  18.             }  
  19.   
  20.             // hiding keyguard that is showing, remember to reshow later  
  21.             if (DEBUG) Log.d(TAG, "remembering to reshow, hiding keyguard, "  
  22.                     + "disabling status bar expansion");  
  23.             mNeedToReshowWhenReenabled = true;  
  24.             hideLocked();  
  25.         } else if (enabled && mNeedToReshowWhenReenabled) {  
  26.            ...  
  27.            ...  
  28.         }  
  29.     }  
我们可以在我们需要修改这个值的地方来调用这个函数去修改,挺简单的吧,OK,锁频就讲到这里,其实锁屏这块还有挺多的知识点. 要想深入的了解其实挺麻烦的,如果大家对锁频有了个比较深入的了解的话,可以尝试自己开发一个琐屏的程序看看。


### 回答1: Kodi是一个流媒体播放器,也是一种开源的媒体中心软件。Android 4.0是一个操作系统版本,通常被称为Ice Cream Sandwich。结合两者,意味着你可以在Android 4.0操作系统上安装和使用Kodi。 Android 4.0Android操作系统的一个重要版本,于2011年发布。它带来了一些用户界面和设计上的改进,使得使用起来更加流畅和直观。同时,Android 4.0也引入了一些新的功能和性能优化,提升了系统的稳定性和响应速度。 而Kodi则是一个功能强大的媒体中心软件。你可以通过Kodi来管理和播放你的媒体文件,包括影片、音乐、照片等。同时,Kodi也支持第三方插件和附加功能,让你可以通过网络流媒体服务观看电视、体育赛事等。 在Android 4.0上安装Kodi也是非常简单的。你只需要在Google Play商店中搜索"Kodi",然后点击安装即可。一旦安装完成,你就可以在Android 4.0设备上打开并使用Kodi来播放你的媒体文件了。 总的来说,结合Kodi和Android 4.0可以带给你一个完整的媒体中心体验。你可以将你的Android 4.0设备变成一个多媒体播放器,随时随地享受你喜爱的电影、音乐和其他媒体内容。 ### 回答2: Kodi是一款自由开源的媒体中心软件,可以在不同的操作系统上运行,包括Android系统4.0及以上版本。Android 4.0是Ice Cream Sandwich(冰淇淋三明治)版本,于2011年发布。Kodi在Android 4.0上的运行主要依赖于硬件和软件的兼容性。 Android 4.0的系统要求较低,因此在大多数Android设备中都可以安装和运行Kodi。要在Andorid 4.0上使用Kodi,首先需要确保设备的操作系统版本满足要求,并且有足够的存储空间来安装应用程序和媒体文件。 Kodi可以在Android 4.0上提供许多功能,包括播放音频和视频文件,浏览图片库,访问在线流媒体内容,创建和管理媒体播放列表等。Kodi还支持各种插件和附加组件,用户可以根据自己的需求和喜好进行自定义设置和扩展。 然而,由于Android 4.0较旧,可能会有一些限制和兼容性问题。某些最新的Kodi功能和插件可能需要更高版本的Android操作系统才能正常运行。此外,旧版硬件设备的处理能力和存储容量可能有限,对于较大的媒体文件和复杂的任务可能会有一些性能上的限制。 总之,尽管Kodi可以在Android 4.0上运行,但考虑到功能和性能的限制,建议在尽可能新的Android版本上使用Kodi以获得更好的体验和兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值