主动触发系统广播的方法与装置的制造方法

文档序号:9452952阅读:463来源:国知局
主动触发系统广播的方法与装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术领域,特别涉及一种主动触发系统广播的方法和装置。
【背景技术】
[0002]目前,操作系统如安卓(Android)系统广泛用于终端设备,如手机、平板电脑等之 中。其中,广播(Broadcast)是在系统组件之间传播信息的一种机制,起到进程间通信的作 用。应用开发者在开发应用产品的过程中通常需要获取系统信息,比如网络状态变化信息、 电池变化信息、系统设置变化信息等,这类系统信息便是通过广播提供给应用开发者的。
[0003] 以系统广播电池变化信息为例进行说明,电池变化信息的相关变量主要包括电 池状态Battery Status(如:UNKNOW,CHARGING,DISCHARGING,N0T_CHARGING,FULL)、电 池状况Battery Heath(如:UNKNOW,GOOD,OVERHEAT,DEAD,0VER_0VLTAGE,UNSEPCIFIED_ FAILURE,CLOD)、电池电量Battery level、电池电压Battery Voltage、电池温度Battery Temperature等。上述变量存放在类BatteryService. java中,其路径为frameworks/base/ services/java/com/android/server/BatteryService. java。针对电池变化信息的相关 处理过程是在BatteryService. java中完成,BatteryService由SystemServer创建,在 系统中提供电池相关服务,在SystemServer创建BatteryService的构造函数时,会注册 与电池数据变化相关的UEvent事件,当电池相关数据发生变化时,UEvent事件即被触发, 系统调用mPowerSupplyObserver的onUEvent函数,在onUEvent函数中调用update函 数,再通过JNI调用native_update函数,从/sys/class/power_supply中读取电池相关 数据,并保存到BatteryService的相关变量中,随后调用processValue函数通过广播发 送电池变化信息发送至应用程序层以供应用开发者使用,与电池变化信息相关的广播项目 包括ACTI0N_BATTERY_CHANGED、ACTI0N_P0WER_C0NNECTED、ACTI0N_P0WER_DISC0NNECTED、 ACTI0N_BATTERY_L0W、ACTI0N_BATTERY_0KEY,其中,ACTI0N_BATTERY_CHANGED使用较多。 [0004] 而应用开发者若要获取系统广播的电池变化信息,则需要在系统中通过应用程 序在Activity组件或者Service组件注册BroadcastRecerver,例如,可先通过设置new BroadcastReceiver对象,实现onReceive函数,以完成收到要求监听的广播后对广播数据 的处理,然后在onCreate构造函数中进行注册。当应用开发者注册BroadcastRecerver之 后,便可通过BroadcastRecerver获取系统广播的相关信息。
[0005] 然而,通过上述方式只能被动获取系统广播的信息,也就是说,只有系统发出广播 时,应用开发者才能获取到相关信息,而系统未发出广播时,应用开发者则不能主动触发系 统发出广播。因此,上述方式无法满足应用开发者想主动获取系统广播的信息的需求。

【发明内容】

[0006] 有鉴于此,本发明提供一种主动触发系统广播的方法及装置,以满足用户主动获 取系统广播信息的需求。
[0007] 具体地,本发明的一实施例提供一种主动触发系统广播的方法,该方法包括在数 据库中设置监听对象;监听所述监听对象;以及当所述监听对象的值发生变化时,发出广 播。
[0008] 优先地,所述在数据库中设置监听对象包括增加与系统信息相关的字段作为所述 监听对象,其中,所述系统信息包括网络状态变化信息、电池变化信息或者系统设置变化信 息。
[0009] 优选地,所述监听所述监听对象包括:创建内容观察者;以及所述内容观察者监 听所述监听对象。
[0010] 优选地,在处理所述系统信息的服务组件中监听所述监听对象。
[0011]优选地,所述服务组件包括ConnectivityService或者BatteryService。
[0012] 优选地,所述数据库为Settings数据库。
[0013] 优选地,所述方法还包括:设置允许写所述数据库中的数据的权限;以及修改所 述监听对象的值以触发所述广播。
[0014] 优选地,所述方法还包括:注册广播接受者以接收所述广播。
[0015] 本发明的一实施例提供一种主动触发系统广播的装置,该装置包括:监听对象设 置模块,用于在数据库中设置监听对象;监听模块,用于监听所述监听对象;以及广播模 块,用于当所述监听对象的值发生变化时发出广播。
[0016] 优选地,所述监听对象设置模块包括字段增加模块,用于增加与系统信息相关的 字段作为所述监听对象,其中,所述系统信息包括网络状态变化信息、电池变化信息或者系 统设置变化信息。
[0017] 优选地,所述监听模块包括创建模块,用于创建内容观察者,以由所述内容观察者 监听所述监听对象。
[0018] 优选地,所述监听模块进一步用于在处理所述系统信息的服务组件中监听所述监 听对象。
[0019] 优选地,所述装置还包括:权限设置模块,用于设置允许写所述数据库中的数据的 权限;以及修改模块,用于修改所述监听对象的值以触发所述广播。
[0020] 优选地,所述装置还包括注册模块,用于注册广播接受者以接收所述广播。
[0021] 由于本发明实施例所提供的主动触发系统广播的方法及装置通过在数据库中设 置监听对象,监听该监听对象,当该监听对象的值发生变化时,系统便发出广播,因此,当用 户想要获取相关系统信息时,只要通过系统界面修改数据库中的监听对象的值,便可主动 触发系统发出相关系统信息的广播,简单方便。
[0022] 为使本发明的上述技术方案和优点能更明显易懂,下文特举实施例,并结合附图 详细说明如下。
【附图说明】
[0023]图1是本发明的第一实施例所提供的一种主动触发系统广播的方法的流程示意 图。
[0024] 图2是图1所示的主动触发系统广播的方法的一步骤的主要子步骤流程示意图。
[0025]图3是图1所示的主动触发系统广播的方法的进一步步骤的流程示意图。
[0026]图4是本发明的第二实施例所提供的一种主动触发系统广播的装置的结构框图。
[0027] 图5是本发明所提供的一实例的应用环境示意图。
【具体实施方式】
[0028] 为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合 附图及较佳实施例,对依据本发明提出的【具体实施方式】、方法、步骤、结构、特征及功效,进 行详细说明。
[0029] 本发明的实施例所提供的主动触发系统广播的方法及装置主要用于终端设备的 操作系统之中。所述终端设备包括手机、平板电脑、个人电脑等,所述操作系统例如可以是 安卓系统。
[0030] 第一实施例
[0031] 第一实施例提供一种主动触发系统广播的方法,该方法适用于一操作系统。图1 所示为上述方法的流程示意图。请参考图1,本实施例的方法包括以下步骤:
[0032] 步骤SI1,在数据库中设置监听对象;
[0033] 在本步骤中,在系统的一数据库中根据所需广播的系统信息设置一监听对象。其 中,该数据库可以是系统的Settings数据库,该系统信息可包括网络状态变化信息、电池 变化信息或者系统设置变化信息等方便用户(如应用开发者)了解系统底层状态的信息。 具体地,可通过增加与系统信息相关的字段作为该监听对象。
[0034] 以所需广播的系统信息为电池变化信息为例进行说明,在本步骤中,可在 Settings数据库中增加字段GET_BATTERY_INFO,该字段及相关代码的存放路径为 frameworks/base/core/java/android/provider/Settings.java,相关代码如下:
[0035] publicstaticfinalStringGET_BATTERY_INFO= "get_battery_info"
[0036] 步骤S12,监听所述监听对象;
[0037] 在本步骤中,可在处理系统信息的服务组件中监听所述监听对象。该服 务组件包括例如ConnectivityService或者BatteryService等。其中,服务组件 ConnectivityService主要用于处理网络状态变化信息,比如监听、广播网络状态变化信 息;服务组件BatteryService主要用于处理电池变化信息,比如监听、广播电池变化信息。
[0038] 请一并参考图2,该步骤S12包括以下子步骤:
[0039] 子步
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1