您的位置:首页 > 其它

Launcher及Statusbar学习小结

2015-05-30 22:34 106 查看
Launcher及Statusbar学习小结
一、定制Launcher

最近在做多媒体相关的项目,我主要负责Launcher界面定制模块,启动的时候数据初始化,从数据库Launcher.db中获取桌面快捷方式,widget,livefolder等元素,注册ContentProvider监听器,主要UI布局如下图所示:



布局文件主要修改了Launcher.xml,对Launcher类进行了很大地修改,屏蔽了所有与workspace相关的方法,去掉了滑屏效果和hotseat区域,屏蔽了桌面长按事件,在主功能区放n个App应用,在营销功能区放3个App应用,在辅助功能区放一个天气预报和一个政府公告。其中一个难点是主功能区的App应用可以在服务端进行配置,考虑可以用XML文件对应用列表进行配置,终端管理发送一个更新的通知给Launcher,Launcher再从设备管理服务器上下载应用更新列表及相应的App应用,将应用列表中的数据同步到数据库欠考虑,与系统中的处理方式相差太大。修改相关类及方法如下表所示:

类/配置文件
方法
属性
备注
Launcher.xml

新增两个LinearLayout,去掉Workspace组件,对布局进行大改

Launcher.java

Setupview

setApps

findApp

mModel.addItemTodatabase

获取布局控件,从配置文件中过滤App应用,将应用列表数据插入到数据库中

LauncherModel.java

deleteItemDatabase

批量删除favorite表中的数据

二、修改StatusBar

根据客户需求要将Statusbar原有的一些通知消息去掉,例如USB拔插,电量多少,3G图标,信号的强弱等,对于其它应用发过来的通知消息,采用上下循环滚动的方式来展示。主要修改framework下面的StatusBarService这个类以及NotificationData这个类,在StatusBarService类中定义一个动画,启动一个线程开始动画让消息上下循环滚动。要屏蔽手动下拉状态栏,就需要在StatusBarView类中注释掉onTouch方法,要让通知栏上不更新图标,就要修改StatusBarPolicy类中的构造函数,将那些icon设置为不可见,且修改参数为false,最后注释掉广播消息里的Action即可。

三、锁屏播放广告

需要修改framework层的PowerManagerService这个类中的setTimeoutLocked方法,Android待机时长的值存储在Settings.db数据库中System数据库表里,系统息屏的时间也是需读取该数据表中的字段screen_off_timeout。在setTimeoutLocked方法里注释mhandler.postAtTime(mTimeoutTask,when)代码,定义handler接收PLAY_AD的消息,向上层发送一个播放广告的广播消息,新增代码如下:

Handler.removeMessages(PLAY_AD);

Handler.sendEmptyMessageDelayed(PLAY_AD,mScreenOffTimeoutSetting);

当用户活动例如点击触摸屏后,通过执行PowerManagerService.userActivity()重新设置系统的电源状态之后,再次通过执行mHandler.post(TimeoutTask,delayTime)设置在mLockScreenTimeout之后屏幕息屏。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: