android 休眠时间和property设置

最近在做一个项目,开机就进入我们自己的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启动时作为守护进程一直存在,具体实现细节稍后在研究下补上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值