Upload
vuongdiep
View
287
Download
0
Embed Size (px)
Citation preview
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 1 页, 共 25 页
高能效通讯助手(Bastet)开发指导书
文档版本:V1.0.0
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 2 页, 共 25 页
版权所有 © 华为技术有限公司2015。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以
任何形式传播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分
产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内
容不做任何明示或默示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使
用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 3 页, 共 25 页
修订记录
日期 修订版本 修改描述
2016.03.07 V1.0.0 初稿
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 4 页, 共 25 页
目录
1 概述 ................................................................................................................................... 5
2 系统框架 ........................................................................................................................... 6
2.1 系统应用概况 ............................................................................................................ 6
2.2 接口交互形式 ............................................................................................................ 6
3 基本使用流程 ................................................................................................................... 7
3.1 服务功能概况 ............................................................................................................ 7
3.2 SDK 使用准备 ............................................................................................................ 7
3.3 HwBastet 存在检测 ................................................................................................... 8
4 永远在线服务 ................................................................................................................... 9
4.1 心跳托管基本流程 .................................................................................................... 9
4.2 心跳托管服务变更流程 .......................................................................................... 11
4.3 托管重建使用方法 .................................................................................................. 14
4.3.1 基本适配流程 .................................................................................................. 14
4.3.2 终止托管重建流程 .......................................................................................... 16
4.3.3 恢复托管重建流程 .......................................................................................... 16
4.4 相关 API 使用说明 .................................................................................................. 18
4.4.1 构造函数 .......................................................................................................... 18
4.4.2 方法调用 .......................................................................................................... 18
4.4.3 消息通知 .......................................................................................................... 20
5 定制信道技术 ................................................................................................................. 22
5.1 基本功能 .................................................................................................................. 22
5.2 初始化说明 .............................................................................................................. 22
5.3 相关 API 使用说明 .................................................................................................. 22
6 网络质量测量技术 ......................................................................................................... 24
6.1 基本功能 .................................................................................................................. 24
6.2 初始化 ...................................................................................................................... 24
6.3 相关 API 使用说明 .................................................................................................. 24
6.4 相关消息通知 .......................................................................................................... 24
7 附录 ................................................................................................................................. 25
7.1 应用消息通知 ID ..................................................................................................... 25
7.2 网络可用性 .............................................................................................................. 25
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 5 页, 共 25 页
1 概述
华为Bastet技术是Android智能终端数据业务功耗/性能提升一揽子解决方案,致力
于解决用户在线体验、数据业务功耗、无线网络传输性能等核心问题,为移动互联网应
用保驾护航。
Bastet立足于3GPP/LTE协议及现网特性,综合映射到TCP/IP协议栈及应用程序,采
用了闭环控制、信号质量评估、无线信道控制、TCP/IP优化等主流技术。 Bastet为应用
程序提供API接口,用于配置心跳socket链路托管、选择信道;同时提供消息通知应用
程序,知会网络可用情况,预报信道质量等信息。
本文档预期读者为Android应用程序开发人员,了解并应用Bastet提供的各类接口实
现上述功能。
Bastet支持华为Mate8及其以后发布的华为P系列、D系列、Mate系列、荣耀部分机
型,建议使用华为Mate8进行开发调试,并在手机设置中打开被测应用的“受保护应用”
开关,和“始终连接数据业务”开关。
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 6 页, 共 25 页
2 系统框架
2.1 系统应用概况
Native Layer
Android Framework Bastet SDK
Application
Bastet Daemon
Libcore
Linux KernelBastet Driver
Bastet Hardware
API
Network
SubSystem
图1 Bastet技术系统框架
2.2 接口交互形式
Bastet系统与应用采用如下形式交互:
1. 采用SDK方式,对应用程序提供相应API接口,提供JAR包供应用进行开发编译;
2. 提供永远在线服务(AOL Always-On-Line)API,多种发送信道API,网络质量测量API;
3. 为应用提供Socket状态,无线网络状态等信息的查询API,亦具备由Handler通知应用的
交互方式;
4. WIFI网络、电信模式(即主、副卡槽之一或全部插入电信卡)下暂不支持本方案API,
交互方式按原Android方式进行。出于功耗性能平衡考虑,WIFI状态下网络较稳定;而
电信模式下硬件暂未支持。因此这两种情况下托管心跳功能会自动失效,由应用自行管
理心跳,同时网络状态默认为良好,任何调用信道发送接口均按原Android机制进行处
理。
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 7 页, 共 25 页
3 基本使用流程
3.1 服务功能概况
Bastet系统提供以下服务:
1. 永远在线服务(AOL Always-On-Line)
应用程序可以设置托管心跳Socket,适用于各种后台service与服务器保持长连接;
被托管的Socket空闲超时后,Bastet处理固定格式心跳收发,保持链路;
如果使能,当Socket异常断开后,将以Handle方式通知应用,并在合适时机立即重
建Socket,通知应用Socket恢复;
在手机深度睡眠后,被托管Socket数据收到网络数据,将以最高优先级到达应用。
2. 定制信道技术
高速信道,单次API调用可承载5KB(应用层)以内数据一次高优先级发送,以最
快速度到达服务器;
低功耗信道,对于一次收发均可确认为小于1KB的小包,提供低功耗收发;
非实时信道。非实时数据选择此API进行发送,将在预定时间内到达,功耗最低。
3. 网络状态通知
可通过API查询;
亦可由Handler方式通知应用。
3.2 SDK 使用准备
本接口以Jar包的形式提供,jar包内部实现接口类HwBastet,该类定义相应接口的成员
函数供应用调用。
1. 使用接口前将hwframework.jar包导入应用开发的eclipse工程,导入后如下图所示:
图2 Jar包导入示意图
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 8 页, 共 25 页
2. 加载此jar包时,Order and Export选择如下:
图3 工程配置示意图
3. 代码文件中导入接口类:
图4 接口类导入示意图
3.3 HwBastet 存在检测
为保证应用代码一致性,建议应用程序确认当前系统是否存在 Bastet 功能 JAVA 库,
若找不到相关库,则直接抛异常退出或不适用 HwBastet 相关接口,代码实例如图 5。
图5 检测类存在方法建议图
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 9 页, 共 25 页
4 永远在线服务
4.1 心跳托管基本流程
心跳托管功能实现了应用程序Client与Server心跳数据自动收发特性。区别于使用
Android提供的Alarm特性,华为心跳托管的收发由硬件实现,因此在应用TCP长连接空
闲超时后,无需应用唤醒手机,减少功耗开销的同时,提高了链路稳定性,基本操作流
程,如图6所示:
图 6心跳托管使用流程
注:红色字体为应用程序需修改流程,蓝色部分为Bastet反馈至应用的消息类型。
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket()<<create>>
2 : Connect()
3 : HwBastet()<<create>>
4 : PrintWriter: :println()
5 : Send
6 : Receive7 : BufferedReader: :readLine()
8 : isBastetAvailable()
9 : setAolHeartbeat()
10 : NewHeartbeat
11 : Send
12 : Receive
13 : Send
14 : Receive15 : BASTET_HEARTBEAT_CYCLE()
16 : Receive()
17 : judgeNotHeartBeat()18 : Received()19 : BufferedReader: :readLine()
20 : Error/closed() 21 : Stop
22 : Socket()<<create>>
23 : Connect
24 : HwBastet()
<<create>>
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 10 页, 共 25 页
初始化流程(1~7)
1) 应用在创建Socket成功后,调用HwBastet类构造托管;
2) 第4~7步,应用完成与服务器交互过程,应用程序可保留原流程;
启动流程(8~15)
1) 第8步,判断当前网络情况是否支持Bastet心跳托管服务,如果支持则转入9;如果
不支持心跳托管服务,应用可沿用原流程处理心跳及链路托管等工作;
2) 第9步,调用setAolHeartbeat方法配置心跳信息,心跳托管功能将自动开启;
3) 第10~14步,如果所托管Socket空闲超时,Bastet硬件将自动收发心跳与服务器交互,
确保在线;
4) 同时如果心跳收发异常,将采用Android系统原生机制告知应用Socket断开(接收
线程readline函数异常返回);
5) 第15步,当Bastet经过数段心跳,获悉网络可以容忍的最大心跳值。当探测值小于
步骤8中设置值(例如应用设置心跳为15分钟,实际探测网络心跳时长为10分钟):
a) 为了避免心跳周期过长导致的Socket异常断开,Bastet平台会采用探测的周期
为实际心跳间隔(15min变为10min);
b) Bastet平台通过BASTET_HEARTBEAT_CYCLE消息知会应用实际心跳周期。
业务数据(非心跳包)收发(16~19)
1) 第16~17步,Bastet硬件检测到所托管Socket收到一条网络下行数据,经判断,为非
心跳数据包;
2) 第18~19步,保留全部Android原有机制,应用程序可接收Server端数据包;
3) 与接收相同,应用程序亦可随时主动发起数据发送,无需理会心跳数据收发。
Socket异常处理A(20~24,针对异常后生成新的Socket类)
1) 第20步,应用程序接收线程Socket类对象的IO流readline函数异常返回,说明Socket
已经异常断开;
2) 第21步,当Socket断开后(异常/正常),Bastet平台将自动停止心跳动作;
3) 第22步,应用实例化新的Socket类对象(例如选用新的Server地址)并完成Connect;
4) 第24步,应用实例化新的HwBastet类对象,再次执行4~9步骤初始化登陆认证及心
跳新配置,托管将再次启动;
Socket异常处理B(针对异常后不生成新的Socket类对象,沿用原有Socket实例,图7)
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 11 页, 共 25 页
图 7非重新实例化心跳托管恢复流程
1) 第1步,应用程序接收线程Socket类对象的IO流readline函数异常返回,说明Socket
已经异常断开;
2) 第2步,当Socket断开后(异常/正常),Bastet平台将自动停止心跳动作;
3) 第3~4步,与图3中20~25步区别在于,应用未实例化新的Socket对象,而是采用
connect方法恢复原Socket对象与服务器之间的TCP长连接;
4) 第5步,判断当前网络情况是否支持Bastet心跳托管服务,如果支持则转入6;如果
不支持心跳托管服务,应用可沿用原流程处理心跳及链路托管等工作;
5) 第6步,由于Socket对象未重新实例化,因此仅需调用resumeHeartbeat方法,而无
需再次配置心跳间隔,心跳内容等信息,即可恢复原托管心跳的工作流程。
4.2 心跳托管服务变更流程
在Wi-Fi或某些未知网络接入场景,Bastet平台将不再支持心跳托管服务,该情况下,需
要应用自行通过Alarm等方法控制心跳收发机制,进而完成心跳动作。对于这些情况,Bastet
会通过Handler方式通知应用,下面对于各场景进行处理流程介绍:
应用首次调用时,不支持心跳托管
图 8初始化不支持托管
APK Android hwBastet-API hwBastet-Hardware Server
1 : Error/closed()2 : Stop
3 : connect()
4 : Connect
5 : isBastetAvailable()
6 : resumeHeartbeat()
7 : ReStart
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket()
<<create>>2 : connect()
3 : HwBastet()<<create>>
4 : isBastetAvailable()
5 : false
6 : ConfigHB()
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 12 页, 共 25 页
1) 第1~3步,完成Socket及HwBastet类对象实例化;
2) 第4~5步,调用isBastetAvailable方法后,返回false,表示不支持心跳托管;
3) 第6步,应用程序采用自身原有心跳策略收发心跳包即可。
初始化配置心跳托管成功,中途发生托管不支持;
图 9托管中途出现心跳托管失效
1) 第1~7步,完成Socket及HwBastet类对象实例化、心跳配置;
2) 第8~9步,Bastet硬件托管心跳收发动作;
3) 第10步,网络状态变化至无法托管场景,通过BASTET_HB_NOT_AVAILABLE消
息通知应用程序,之前心跳托管失效,应用需自行处理心跳收发;
4) 第11步,应用配置自身程序(如操控AlarmManagerService等) 启动原有心跳控制
流程;
5) 第12~15步,应用完成心跳收发处理。
在心跳托管失效状态下,再次启用托管流程;
此状态首先在启动初始化调用isBastetAvailable方法返回false(图8)或者托管过程中出
现托管失效(图9)。Bastet平台未提供类似于BASTET_HB_NOT_AVAILABLE 消息的“支
持通知功能”,因为托管失效后,到下次托管有效时,原HwBastet类对象有可能已被JAVA
回收。以心跳托管中途被取消(图9)为例,这里给出下面两种建议方法:
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket()<<create>>
2 : connect
3 : HwBastet()<<create>>
4 : isBastetAvailable()
5 : true
6 : setAolHeartbeat()7 : NewHeartbeat
8 : send
9 : received
10 : BASTET_HB_NOT_AVAILABLE
11 : ConfigHB()
12 : PrintWriter: :println()13 : send
14 : BufferedReader: :readLine()
15 : received
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 13 页, 共 25 页
方法一 应用每次自行收发心跳成功后,查询一次托管是否可用:
图 10应用自行心跳收发后恢复托管
1) 第1步,应用程序收到BASTET_HB_NOT_AVAILABLE消息通知,心跳托管失效,
应用需自行处理心跳收发;
2) 第2步,应用配置自身程序(如操控AlarmManagerService等) 启动原有心跳控制
流程;
3) 第3~6步,Socket数据空闲超时后,应用自行收发心跳成功;
4) 第7~9步,实例化HwBastet类对象,采用isBastetAvailable方法返回true,说明托管
功能已经恢复,可以继续承担心跳托管任务;
5) 第10步,应用程序完成自行心跳流程暂停;
6) 第11~14步,配置托管心跳,Bastet硬件将自行进行后续心跳托管功能;
7) 如果第9步返回false,则应用程序无需理会HwBastet类对象,按原有应用心跳流程
继续进行即可。
方法二 当应用Socket断开后,恢复心跳托管:
APK Android hwBastet-API hwBastet-Hardware Server
1 : BASTET_HB_NOT_AVAILABLE
2 : ConfigHB()
3 : PrintWriter: :println()
4 : send
5 : BufferedReader: :readLine()
6 : received
7 : HwBastet()
<<create>>
8 : isBastetAvailable()
9 : true
10 : StopAppHB()
11 : setAolHeartbeat()
12 : NewHeartbeat
13 : send
14 : received
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 14 页, 共 25 页
图 11 Socket断开后恢复托管
1) 第1步,应用程序收到BASTET_HB_NOT_AVAILABLE消息通知应用程序,之前心
跳托管失效,应用需自行处理心跳收发;
2) 第2步,应用配置自身程序(如操控AlarmManagerService等) 启动原有心跳控制
流程;
3) 第3~6步,Socket数据空闲超时后,应用自行收发心跳成功;
4) 第7~9步,与方法一(图7)不同在于,应用程序将托管心跳启动重试在Socket断开
后进行, 应用程序再次创建Socket类对象或者采用原Socket类对象connect方法恢
复与服务器之间的TCP长连接;
5) 第10~17步,与之前保持一致,这里需要说明的是,7~9步无论采用再次实例化Socket
类对象或者采用原类对象connect方法恢复TCP连接,这里均需再次实例化HwBastet
对象,因为之前的对象可能因长期不可用而已被系统回收。
4.3 托管重建使用方法
4.3.1 基本适配流程
托管重建用于解决Socket异常断开(非应用主动断开)场景下的托管重建。目的在于选
取网络最佳联网时机完成链路重建,避免应用反复重试导致的功耗异常、实时性较差等问题。
APK Android hwBastet-API hwBastet-Hardware Server
1 : BASTET_HB_NOT_AVAILABLE
2 : ConfigHB()
3 : PrintWriter: :println()
4 : send
5 : BufferedReader: :readLine()
6 : received
7 : Error/closed
8 : Socket()<<create>>
9 : connect
10 : HwBastet()
<<create>>
11 : isBastetAvailable()
12 : true
13 : StopAppHB()
14 : setAolHeartbeat()
15 : NewHeartbeat16 : send
17 : received
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 15 页, 共 25 页
由于Bastet平台在应用Socket异常断开后发起重建,因此仅针对原Socket设定的Server IP地址
及Port,不适用于频繁更换Server端IP地址的场景。具体流程见图12:
图 12 托管重建基本流程
1) 第1~9步,完成Socket、HwBastet对象创建及适配,启用心跳托管;
2) 第10步,应用调用reconnectSwitch(true)方法打开托管重建流程(默认关闭);
3) 第11~13步,由HwBastet硬件平台完成与服务器的心跳/业务交互流程;
4) 第14步,由于网络、服务器、手机自身原因,导致了Socket被Close,Reset,Abandon
等形式的异常断开;
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket()<<create>>
2 : Connect()
3 : HwBastet()<<create>>
4 : PrintWriter: :println()
5 : Send
6 : Received7 : BufferedReader: :readLine()
8 : isBastetAvailable()
9 : setAolHeartbeat()
10 : reconnectSwitch()
11 : NewHeartbeat
12 : Send
13 : Received
14 : FIN/RST/ABD15 : Closed
16 : Close()
17 : Closed/Error
18 : BASTET_CONNECTION_CLOSED()
19 : ProcessClosed()
20 : HookNetState()
21 : Connect22 : RepairSocket()
23 : Connected24 : connected_ind
25 : BASTET_CONNECTION_ESTABLISHED()
26 : ProcessEsted()
27 : PrintWriter: :println()
28 : Send
29 : Received30 : BufferedReader: :readLine()
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 16 页, 共 25 页
5) 第15~16步,上述断开信息被Bastet硬件平台所识别,并通知Android系统,对当前
Socket进行Close关闭;
6) 第17步,按照Android原生机制,如果Socket异常断开,那么接收线程所监控的
IOStream调用的readline将异常返回,但是为了便于应用区别处理,这里将不再返
回异常,即第17步在实际使用中不会发生;
7) 取而代之,Bastet平台采用Handler消息BASTET_CONNECTION_CLOSED通知应用,
应用程序此刻应该认为Socket断开(类似于网络不可用),不再进行任何发送动作,
等待Socket重建;
8) 第20~24步,Bastet平台在最合适时机重建Socket连接,并修复原Android系统的
Socket数据结构,使之可以继续为应用程序所使用;
9) 第25步,Bastet平台采用Handler消息BASTET_CONNECTION_ESTABLISHED通知
应用Socket已经重建成功,可以继续使用;
10) 第26~30步,应用恢复网络,完成登录认证等流程(类似于Socket连接完成);
11) 由于全部重建工作均由Bastet完成,因此无需调用任何接口,心跳托管,自动重建
等功能自动启动。
4.3.2 终止托管重建流程
在某些场合,应用不再希望Bastet进行托管重建,而是需要断开连接,整理内部数据,
此刻需要断开重建动作,Bastet平台提供了两种途径均可确保托管重建终止:
1) 应用主动调用Socket类Close方法,Bastet认为是应用程序已知行为,不会托管重建;
2) reconnectSwitch(false)方法。
4.3.3 恢复托管重建流程
应用在调用close方法关闭Socket后,如果希望恢复托管重建功能,则可以通过适当的操
作完成。
情况1:close以后,应用未实例化新的Socket对象,而是重新connect服务器。
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 17 页, 共 25 页
图 13 托管重建恢复流程1
如图13所示,在建立Socket成功后,可调用之前实例化的HwBastet对象resumeHeartbeat
方法,在恢复心跳托管的同时,Socket重建也将被开启。
情况2:close以后,应用实例化新的Socket对象恢复长连接(例如:更换Server地址)。
图 14 托管重建恢复流程2
如图14所示,在建立Socket构造成功且与服务器完成连接后,需再次实例化HwBastet对
象并调用相关配置方法,则可恢复托管重建流程。
情况3:采用reconnectSwitch(false)方法关闭托管重建。
图 15 托管重建恢复流程3
如图15,只能采用reconnectSwitch(true)方法恢复,但在调用前需要采用isBastetAvailable
检测托管是否支持。
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket: :close()
2 : Stop
3 : Connect()
4 : connect
5 : resumeHeartbeat()
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket()
<<create>>
2 : connect
3 : HwBastet()<<create>>
4 : isBastetAvailable()
5 : setAolHeartbeat()
6 : reconnectSwitch()7 : NewHeartbeat()
APK Android hwBastet-API
1 : reconnectSwitch()
2 : isBastetAvailable()
false
3 : true
4 : reconnectSwitch() true
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 18 页, 共 25 页
4.4 相关 API 使用说明
4.4.1 构造函数
1. HwBastet构造函数
原型:HwBastet(String license, Socket socket, Handler handler, Context context)
参数:
String license:应用身份许可证书,目前未启用
Socket socket:应用通信套接字,构造时需确保该Socket已经处于connected状态;
Handler handler:消息通知接收对象
Context context:应用Activity上下文
返回值:
HwBastet类对象
说明:
HwBastet类对象和应用长连接Socket一一对应,建议应用在创建完长连接Socket后实
例化本对象,并传参长连接Socket对象。
4.4.2 方法调用
1. isBastetAvailable
功能:检查永远在线托管功能是否可用;
原型:boolean isBastetAvailable ()
参数:
无
返回值:
true :可用
false:不可用
说明:
a) 该方法返回不可用并不意味在线托管功能永远不可用,网络配置导致的临时状态;
b) 在启用心跳托管、自动重建等功能前,需先调用该接口进行必要检查。
2. setAolHeartbeat
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 19 页, 共 25 页
功能:配置启用心跳托管;
接口函数名:void setAolHeartbeat(int interval, byte[] send, byte[] reply)
参数:
int interval:服务器容忍最大时间档位,1代表5分钟、2代表10分钟、3代表15分
钟,其它值默认为15分钟
byte[] send:心跳数据
byte[] reply:期待的远端回复
返回值:
无
说明:
a) 该接口功能为永远在线子功能,单独调用无效;
b) 应用使能心跳托管功能后,Bastet在参数interval时间内定期发送心跳包出去,并
等待远端答复;
c) 若远端答复和参数reply不一致,则应用会接收到该远端答复;
d) 若等待远端答复超时(10秒),则应用收到超时通知消息;
e) 调用该接口传参都为null,则关闭心跳托管功能,默认功能关闭;
f) 若当前网络(Wifi、蓝牙等)不支持该功能,调用此接口会抛出异常。
3. pauseHeartbeat
功能:暂停心跳托管;
原型:void pauseHeartbeat()
参数:
无
返回值:
无
说明:当应用有大量数据需要与服务器交互时,或者需要更新心跳信息,可以暂时
关闭心跳托管功能,正常数据收发无需此接口调用。
4. resumeHeartbeat
功能:恢复心跳托管;
原型:void resumeHeartbeat()
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 20 页, 共 25 页
参数:
无
返回值:
无
说明,该方法在以下两种情况下使用:
a) 曾调用pauseHeartbeat暂停心跳托管;
b) Socket断开后,心跳托管自动停止,恢复连接后需再次启用该对象托管心跳收发。
5. reconnectSwitch
功能:自动重连开关;
原型:void reconnectSwitch (boolean enable)
参数:
true: 打开自动重连功能
false:关闭自动重连功能
返回值:
无
说明:
a) 该接口功能为永远在线子功能,单独调用无效;
b) 永远在线功能关闭的情况下,该接口设置无效。
4.4.3 消息通知
1. BASTET_CONNECTION_ESTABLISHED
含义:Socket托管重建完成
说明:
a) 永远在线功能使能情况下,当Socket重连后,应用会接收到该消息;
b) 本消息ID存在Message.what变量中;
c) 应用通过Hander对象接收该消息。
2. BASTET_CONNECTION_CLOSED
含义:Socket异常断开
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 21 页, 共 25 页
说明:
a) 永远在线功能使能情况下,当Socket断开,应用会接收到该消息;
b) 本消息ID存在Message.what变量中;
c) 应用通过Handler对象接收该消息;
d) 应用收到该消息后应停止网络业务直到链路重建。
3. BASTET_HEARTBEAT_CYCLE
含义:已探测网络心跳周期
说明:
a) 应用启用托管心跳功能后,Bastet会进行心跳探测;
b) 寻找当前网络Socket最大容忍度,寻找的容忍值须小于等于应用通过接口
setAolHeartbeat设置的最大周期值;
c) 当Bastet探测结束后,若探测值和应用最大周期值不一致,则发送此消息给应用;
d) 本消息ID存在Message.what变量中;
e) 应用通过Hander对象接收该消息。
4. BASTET_HB_NOT_AVAILABLE
含义:链路托管不支持
说明:
如果已经启用托管心跳,该消息意味着Bastet平台不再托管心跳需应用自行处理;
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 22 页, 共 25 页
5 定制信道技术
5.1 基本功能
针对应用对功耗/性能的需求不同,华为Bastet平台提供了多样化信道供应用程序调用:
1. 高速信道(Hrt):提供高速数据发送技术,用于应用保证关键用户数据的稳定、高
速收发,尤其在无线网络拥塞情况下表现突出;
2. 非实时信道(Nrt):提供了一种非实时发送机制,Bastet平台承诺在应用要求的时间
范围内,将数据送达服务器,类似于“攒包”,降低功耗及网络信令压力;
3. 低功耗信道(Lpw):对于应用程序可以预知的小包数据(接收、发送均小于1KB),
那么可调用该接口进行发送,应用数据将以最小带宽占用发送数据到网络。
5.2 初始化说明
图 16 托管重建初始化流程
如图16所示,首先应用程序需要保证链路托管、心跳托管功能被正确配置,方可采用该
相关函数进行数据收发。
5.3 相关 API 使用说明
1. sendNrtData
功能:发送非实时数据
原型:void sendNrtData(byte[] data, long timeout, Socket socket)
参数:
byte[] data:应用数据
long timeout:延迟最大值,单位毫秒
APK Android hwBastet-API hwBastet-Hardware Server
1 : Socket()
<<create>>
2 : connect
3 : HwBastet()<<create>>
4 : isBastetAvailable()
5 : setAolHeartbeat()
6 : sendXxxData()
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 23 页, 共 25 页
Socket socket:数据发送Socket,可以为非HwBastet构造时传参的socket对象。若
传入null,则使用HwBastet构造时的socket对象。
返回值:
无
备注:
a) 应用数据会在参数timeout范围内任意时间点发送;
b) 若当前信道不可用,将自动分流数据按Android原生机制发送。
2. sendHrtData
功能:发送高性能信道数据
原型:void sendHrtData(byte[] data, Socket socket)
参数:
byte[] data:应用数据,注意:一次发送长度最大为5KB;
Socket socket:数据发送Socket,可以为非HwBastet构造时传参的socket对象。
返回值:
无
备注:
a) 应用数据以高优先级和高资源分配发送;
b) 当数据长度超过5KB或当前信道不可用,将自动分流数据按Android原生机制发送。
3. sendLpwData
功能:发送低功耗数据
原型:void sendLpwData(byte[] data, Socket socket)
参数:
byte[] data:应用数据
Socket socket:数据发送Socket,可以为非HwBastet构造时传参的socket对象。
返回值:
无
备注:
a) 应用层数据发送长度、可预期接收长度均小于1KB;
b) 当数据长度超过1KB或当前信道不可用,将自动分流数据按Android原生机制发送。
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 24 页, 共 25 页
6 网络质量测量技术
6.1 基本功能
华为Bastet平台,根据无线网络协议、IP协议等多项指标,综合评估当前移动网络情况
的可用度,提供查询及消息通知接口。
6.2 初始化
同5.2。
6.3 相关 API 使用说明
1. inquireNetworkQuality
功能:信道质量查询
原型:int inquireNetworkQuality()
参数:
无
返回值:
int:当前网络数据发送质量
说明:
应用在发送数据前可以调用此接口查看当前数据发送质量,若质量好,可立即
发送,若质量差,可以不发送或选择其它策略发送。
6.4 相关消息通知
1. BASTET_NET_QUALITY_NOTICE
含义:通知应用当前网络质量等级发生变化
说明:
a) 本消息ID存在Message.what变量中;
b) 网络质量分为不可用、可用两个值,详见附录7.2,该值存在Message. arg1变量中;
c) 当应用收到网络不可用消息时,应停止网络业务,直到收到网络可用通知;
d) 应用定义出HwBastet对象后,当网络变化时,即可收到本消息。
高能效通讯助手(Bastet)开发指导书
版权所有©华为技术有限公司 第 25 页, 共 25 页
7 附录
7.1 应用消息通知 ID
名称 值 描述
BASTET_CONNECTION_ESTABLISHED 1 永远在线:链路重建完毕
BASTET_CONNECTION_CLOSED 2 永远在线:链路已断开
BASTET_NET_QUALITY_NOTICE 3 网络质量通知
BASTET_HEARTBEAT_CYCLE 4 探测心跳周期
BASTET_HB_NOT_AVAILABLE 5 链路托管不可用
7.2 网络质量
名称 值 描述
BASTET_NQR_UNAVAILABLE 0 数据无法发送
BASTET_NQR_AVAILABLE 1 数据可以发送