Launcher及Statusbar学习小结

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之后屏幕息屏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值