关闭

android 休眠时间和property设置

632人阅读 评论(0) 收藏 举报
分类:

最近在做一个项目,开机就进入我们自己的launcher,关于电源管理这一块,我们直接调用gotosleep让系统进入sleep模式。但是感觉这样做太不正规了,所以leader决定休眠部分走系统正常流程,通过设置系统screen_off_timeout改变系统超时设置,播放视频等时申请PowerManager.WakeLock阻止系统进入休眠。

  1,设置休眠超时

   Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_OFF_TIMEOUT,15000);

其中getContentResolver需要通过Activity或者service得到(Activity.this.getContentResolver),可以通过Settings.System.getint方法得到超时时间,没有该设置是会抛出SettingNotFoundException异常。该方法包含在包android.provider.Settings中.其他系统中的设置一般已String方式存储,此方法能直接获得转换成Int类型的值。

这种通过SettingsProvider(android.provider.Settings.System。*)来查询/设置,前提是要知道所要修改的值的数据类型与字符串代表的name,对应那么的值和数据类型在framework/base/core/java/provider/Settings.java中。如android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS)获得系统Backlight亮度。

注意,需要添加权限<uses-permission android:name="android.permission.WRITE_SETTINGS" />  ,或者为APP UID为syetem或root。

2:Property

属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个键值对(key/value pair),其类型都是字符串。

首先,getprop查看设备上所有属性状态值。以ro.开关表明该属性是只读的,以persist.”开头,当设置这个属性时,其值也将写入/data/property,属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果。

SystemProperties.set()/SystemProperties.get()设置和读取系统Property.源码位于frameworks\base\core\java\android\os\SystemProperties.java。

通过Socket通信property_service发送消息,property_service在android启动时作为守护进程一直存在,具体实现细节稍后在研究下补上。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3115次
    • 积分:81
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条