首页 / 专利库 / 信号处理 / 采样频率 / 利用Android系统API的访问代价模型优化移动应用程序的方法

利用Android系统API的访问代价模型优化移动应用程序的方法

阅读:92发布:2022-08-14

专利汇可以提供利用Android系统API的访问代价模型优化移动应用程序的方法专利检索,专利查询,专利分析的服务。并且一种利用Android系统API的 访问 代价模型优化移动应用程序的方法。首先利用功耗测量工具和Sensing API测试程序度量出特定智能手机平台上MSA访问Sensing API的访问代价模型;然后基于该访问代价模型提供能耗优化的访问 接口 ,记为Sensing API*,使之取代相应的Sensing API;MSA通过Sensing API*访问传感数据以节省系统能耗。通过本 发明 所提供的基于Android系统API的访问代价模型优化移动应用程序的方法,可以有效地降低移动传感应用程序的能耗开销;同时,通过代码插桩实现的Sensing API重定向机制使得本发明提出的方法具有更加广泛的适用性。,下面是利用Android系统API的访问代价模型优化移动应用程序的方法专利的具体信息内容。

1.一种利用Android系统API的访问代价模型优化移动应用程序的方法,其特征是,首先利用功耗测量工具和Sensing API测试程序度量出特定智能手机平台上MSA访问Sensing API的访问代价模型;然后基于该访问代价模型提供能耗优化的访问接口,记为Sensing API*,使之取代相应的Sensing API;MSA通过Sensing API*访问传感数据以节省系统能耗;
其中,Sensing API表示移动操作系统提供的访问传感器应用程序编程接口,MSA表示移动传感应用程序;所述访问代价模型包括功耗开销和时间开销。
2.如权利要求1所述的优化移动应用程序的方法,其特征是,获取访问代价模型的方法为:
A1.选定所述手机平台上的SensingAPI集合;
A2.针对选定的Sensing API集合,编写测试程序,该测试程序能够周期性频繁地访问指定的API,并且能够测量访问指定API的时延;
A3.在所述手机平台上运行上述测试程序,由测试程序记录访问每个Sensing API的时延,并且使用Power Monitor等外置功耗测量工具实时测量访问指定API的系统功耗;
A4.利用步骤A3中获得的时延数据和功耗数据,获得该平台上Sensing API的访问代价模型。
3.如权利要求2所述的优化移动应用程序的方法,其特征是,所述的访问代价模型由功耗开销和时间开销组成,分别记为E(Sensing API)和T(Sensing API);E(Sensing API)是访问传感器API的能耗或者功耗开销,T(Sensing API)代表访问传感器API的时延;使用下面的公式计算:
E(Xapi)=(Ptest*Ttest)/Ntest
T(Xapi)=Ttest/Ntest
其中,Xapi表示访问传感器X的Sensing API,是步骤A1中选出的Sensing API集合的成员;Ptest和Ttest表示系统由于运行步骤A3所述的测试程序而增加的系统功耗和总耗时;
Ntest表示时间段Ttest内访问Xapi的总次数。
4.如权利要求1所述的优化移动应用程序的方法,其特征是,所述能耗优化的访问接口Sensing API*的实现方法为:
B1.对于周期性访问的Sensing API,通过自适应调频的方式来动态地调节访问API的频率,编写代码把系统提供的Sensing API封装为经过能耗优化的Sensing API*,二者在接口和语义上保持一致,区别之处在于Sensing API*是低能耗的访问接口;
B2.对于连续性访问的Sensing API,通过由其他低能耗的Sensing API获得的情景信息进行优化,包括:
以下情况时关闭摄像头传感器和声音传感器:手机处于屏状态;手机亮度传感器返回的传感数据表明环境足够黑暗;用户处于高速运动状态;
当检测到环境中无声音时动态降低声音采样频率;
B3.对于提供位置信息的Sensing API,基于手机的状态信息进行能耗优化,并且封装为低能耗的Sensing API*接口;包括:手机处于室内时关闭GPS传感器;手机处于静止状态时可以关闭GPS传感器。
5.如权利要求1所述的优化移动应用程序的方法,其特征是,对于新开发的MSA,直接使用Sensing API*来访问传感器数据;而对于已有的MSA,则通过代码插桩的方式用Sensing API*替换原有系统提供的Sensing API,然后利用应用程序重打包技术发布经过插桩的应用程序。
6.如权利要求4所述的优化移动应用程序的方法,其特征是,所述自适应调频的适用情形为:当Sensing API返回的传感数据变化量小于一个阈值Xapi-Thresholdmin时,自动降低访问Sensing API的频率;当Sensing API返回的传感数据变化量大于另一个阈值Xapi-Thresholdmax时,自动提升访问Sensing API的频率;这些自适应调频的机制实现在Sensing API*代码中,因此该机制对于MSA具有透明性。
7.如权利要求5所述的优化移动应用程序的方法,其特征是,对于已有的MSA,执行如下操作:
D1.把Sensing API*编译为Java类库,并且转换为Android Dalvik字节码文件;
D2.使用反汇编工具把包含了Sensing API*的Dalvik字节码文件转换为中间表示法;
D3.利用APK插桩工具把已有应用程序中的Sensing API重定向到Sensing API*中;
D4.利用APK重打包工具把经过插桩的代码重打包为新的MSA。

说明书全文

利用Android系统API的访问代价模型优化移动应用程序

的方法

技术领域

[0001] 本发明提供了一种优化移动应用程序的方法,具体涉及一种利用Android系统API的访问代价模型优化移动应用程序的方法,属于移动计算领域。

背景技术

[0002] 智能手机促进了移动传感技术的发展和应用。智能手机一般内嵌了丰富的传感器,包括加速度传感器、螺旋仪、距离传感器、GPS、摄像头、麦克等。移动应用程序可以借助这些传感器确定用户的状态、位置和环境信息等,从而增强用户体验,例如:地图、导航应用和社交网络移动应用需要感知用户的位置信息,计步器需要感知用户的移动状态。这类移动传感应用程序通常使用移动操作系统(如:Android,iOS,Windows Phone等)提供的传感器访问接口获取传感数据。对于来自Google Play官方市场的1万多个流行应用程序进行分析发现:超过55%的移动应用程序是移动传感应用程序。
[0003] 但是,移动传感,尤其是连续性的移动传感,会显著地增加系统能耗。 文 献(A Survey of Mobile Phone Sensing.IEEE Communications Magazine,2010,48(9):140–150.)给出的研究数据表明:连续性移动传感应用程序会导致手机待机时间(standby time)从20个小时左右下降到6个小时。一方面,移动传感应用程序获取传感信息时需要访问传感器硬件;而使用这些硬件传感部件会导致手机功耗增加,特别是有些传感器硬件的功耗非常高,例如:摄像头和GPS等。另一方面,部分移动传感应用程序需要持续性频繁地访问传感器,从而导致高能耗。
[0004] 针对移动传感应用程序的高能耗问题,已经有一些能耗优化的技术,主要对特定应用程序使用传感器访问接口的行为进行改善以求降低能耗,例如:通过调节调用传感器访问接口的频率或者缓存最新的传感数据并且在短期内复用,减少对传感器部件的直接访问。已有的这类工作在度量智能手机传感信息获取代价时一般仅考虑功耗开销,而未考虑时间开销。此外,这些技术需要针对移动应用本身进行优化,难以适用于已有的众多移动传感应用程序。

发明内容

[0005] 为了便于表述,本文约定:Sensing API是移动操作系统提供的传感API(访问传感器的应用程序编程接口,API表示应用程序编程接口);MSA表示移动传感应用程序(Mobile Sensing Applications),即使用了Sensing API获取传感器数据的移动应用程序。
[0006] 本发明的目的是提供一种利用Android系统API的访问代价模型优化移动应用程序的方法,用以解决移动传感应用程序的高能耗问题。
[0007] 本发明提供的技术方案如下:
[0008] 一种利用Android系统API的访问代价模型优化移动应用程序的方法,其特征是,首先利用功耗测量工具和Sensing API测试程序度量出特定智能手机平台上MSA访问Sensing API的访问代价模型;然后基于该访问代价模型提供能耗优化的访问接口,记为Sensing API*,使之取代相应的Sensing API;MSA通过Sensing API*访问传感数据以节省系统能耗;
[0009] 其中,Sensing API表示移动操作系统提供的访问传感器的应用程序编程接口,MSA表示移动传感应用程序;所述访问代价模型包括功耗开销和时间开销。
[0010] 所述的优化移动应用程序的方法,其特征是,获取访问代价模型的方法为:
[0011] A1.选定所述手机平台上的SensingAPI集合;
[0012] A2.针对选定的Sensing API集合,编写测试程序,该测试程序能够周期性频繁地访问指定的API,并且能够测量访问指定API的时延;
[0013] A3.在所述手机平台上运行上述测试程序,由测试程序记录访问每个Sensing API的时延,并且使用Power Monitor等外置功耗测量工具实时测量访问指定API的系统功耗;
[0014] A4.利用步骤A3中获得的时延数据和功耗数据,获得该平台上Sensing API的访问代价模型。
[0015] 所述的优化移动应用程序的方法,其特征是,所述的访问代价模型由功耗开销和时间开销组成,分别记为E(Sensing API)和T(Sensing API);E(Sensing API)是访问传感器API的能耗或者功耗开销,T(Sensing API)代表访问传感器API的时延;使用下面的公式计算:
[0016] E(Xapi)=(Ptest*Ttest)/Ntest
[0017] T(Xapi)=Ttest/Ntest
[0018] 其中,Xapi表示访问传感器X的Sensing API,是步骤A1中选出的Sensing API集合的成员;Ptest和Ttest表示系统由于运行步骤A3所述的测试程序而增加的系统功耗和总耗时;Ntest表示时间段Ttest内访问Xapi的总次数。
[0019] 所述的优化移动应用程序的方法,其特征是,所述能耗优化的访问接口Sensing API*的实现方法为:
[0020] B1.对于周期性访问的Sensing API,通过自适应调频的方式来动态地调节访问API的频率,编写代码把系统提供的Sensing API封装为经过能耗优化的Sensing API*,二者在接口和语义上保持一致,区别之处在于Sensing API*是低能耗的访问接口;
[0021] B2.对于连续性访问的Sensing API,通过由其他低能耗的Sensing API获得的情景信息进行优化,包括:
[0022] 以下情况时关闭摄像头传感器和声音传感器:手机处于屏状态;手机亮度传感器返回的传感数据表明环境足够黑暗;用户处于高速运动状态;
[0023] 当检测到环境中无声音时动态降低声音采样频率;
[0024] B3.对于提供位置信息的Sensing API,基于手机的状态信息进行能耗优化,并且封装为低能耗的Sensing API*接口;包括:手机处于室内时关闭GPS传感器;手机处于静止状态时可以关闭GPS传感器。
[0025] 所述的优化移动应用程序的方法,其特征是,对于新开发的MSA,直接使用Sensing API*来访问传感器数据;而对于已有的MSA,则通过代码插桩的方式用Sensing API*替换原有系统提供的Sensing API,然后利用应用程序重打包技术发布经过插桩的应用程序。
[0026] 所述的优化移动应用程序的方法,其特征是,所述自适应调频的适用情形为:当Sensing API返回的传感数据变化量小于一个阈值Xapi-Thresholdmin时,自动降低访问Sensing API的频率;当Sensing API返回的传感数据变化量大于另一个阈值Xapi-Thresholdmax时,自动提升访问Sensing API的频率;这些自适应调频的机制实现在Sensing API*代码中,因此该机制对于MSA具有透明性。
[0027] 所述的优化移动应用程序的方法,其特征是,对于已有的MSA,执行如下操作:
[0028] D1.把Sensing API*编译为Java类库,并且转换为Android Dalvik字节码文件;
[0029] D2.使用反汇编工具把包含了Sensing API*的Dalvik字节码文件转换为中间表示法;
[0030] D3.利用APK插桩工具把已有应用程序中的Sensing API重定向到Sensing API*中;
[0031] D4.利用APK重打包工具把经过插桩的代码重打包为新的MSA。
[0032] 本发明的有益效果:通过本发明所提供的基于Android系统API的访问代价模型优化移动应用程序的方法,可以有效地降低移动传感应用程序的能耗开销;同时,通过代码插桩实现的SensingAPI重定向机制使得本发明提出的方法具有更加广泛的适用性。附图说明
[0033] 图1是本发明的流程图

具体实施方式

[0034] 本发明的实施方式如下:
[0035] A.获取特定Android手机平台中Sensing API的访问代价模型,实现方法为:
[0036] A1.选定该手机平台上的SensingAPI集合(即一组用于收集传感器数据的系统API);
[0037] A2.针对选定的Sensing API集合,编写测试程序,该测试程序能够周期性频繁地访问指定的API,并且能够测量访问指定API的时延;
[0038] A3.在该手机平台上运行上述测试程序,由测试程序记录访问每个Sensing API的时延,并且使用Power Monitor等外置功耗测量工具实时测量访问指定API的系统功耗;
[0039] A4.利用步骤A3中获得的时延数据和功耗数据,获得该平台上Sensing API的访问代价模型;
[0040] B.基于步骤A所获得的访问代价模型,编写代码实现经过能耗优化的访问接口(即Sensing API*),实现方法为:
[0041] B1.对于周期性访问的Sensing API(例如:螺旋仪、加速度传感器、磁场强度传感器等),通过自适应调频的方式来动态地调节访问API的频率,编写代码把系统提供的Sensing API封装为经过优化的Sensing API*。二者从接口上保持一致,语义也保持一致,区别之处在于Sensing API*是低能耗的访问接口。自适应调频的适用情形:当Sensing API返回的传感数据变化量小于一个阈值(Xapi-Thresholdmin)时,自动降低访问Sensing API的频率;当Sensing API返回的传感数据变化量大于另一个阈值(Xapi-Thresholdmax)时,自动提升访问Sensing API的频率。这些自适应调频的机制实现在Sensing API*代码中,因此该机制对于MSA具有透明性;下面B2和B3中都使用类似的代码封装机制;
[0042] B2.对于连续性访问的Sensing API(例如:摄像头,麦克风等),通过由其他低能耗的Sensing API获得的情景信息进行优化。当满足一些预定义的情景时,可以关闭摄像头传感器,包括:手机处于锁屏状态;手机亮度传感器(brightness sensor)返回的传感数据表明环境足够黑暗;用户处于高速运动状态;其他适用的情形。对于麦克风(声音传感器),也用同样的方法进行能耗优化。当满足一些预定义的情景时,可以动态降低声音采样频率,例如:检测到环境中无声音;
[0043] B3.对于提供位置信息的Sensing API(即Location API),基于手机的状态进行能耗优化,并且封装为低能耗的Sensing API*接口。用于优化Location API的手机状态信息包括:手机处于室内(通过Wi-Fi热点扫描来推断)时可以关闭GPS传感器;手机处于静止状态(可以通过访问能耗较低的加速度传感器来获得)时可以关闭GPS传感器;其他可以优化的情形;
[0044] C.对于新开发的移动传感应用程序(MSA),直接使用Sensing API*来访问传感器数据即可,而对于已有的(或者遗留的)MSA,转至步骤D进行处理;
[0045] D.使用Sensing API*插桩已有的应用程序,然后重打包为新的MSA,实现方法为:
[0046] D1.把Sensing API*编译为Java类库,并且转换为Android Dalvik字节码文件;
[0047] D2.使用反汇编工具(例如:baksmali)把包含了Sensing API*的Dalvik字节码文件转换为中间表示法(例如:smali格式);
[0048] D3.利用APK(Android应用程序包)插桩工具(例如:APKIL)把已有应用程序中的Sensing API重定向到Sensing API*中;
[0049] D4.利用APK重打包工具把经过插桩的代码重打包为新的MSA。
[0050] 其中,步骤A中所述的访问代价模型由功耗开销和时间开销组成,分别记为E(Sensing API)和T(Sensing API)。E(Sensing API)是访问传感器API的能耗或者功耗开销,可用毫焦(mJ)或毫瓦(mW)计量,而T(Sensing API)代表访问传感器API的时延,可以用毫秒(ms)计量。具体地,可以使用下面的公式计算:
[0051] E(Xapi)=(Ptest*Ttest)/Ntest (公式1)
[0052] T(Xapi)=Ttest/Ntest (公式2)
[0053] 上述公式1和公式2中的Xapi表示访问传感器X的Sensing API,是步骤A1中选出的Sensing API集合的成员。Ptest和Ttest表示系统由于运行步骤A3所述的测试程序而增加的系统功耗和总耗时,而Ntest表示时间段Ttest内访问Xapi的总次数。
[0054] 实施例1:
[0055] 下面通过一个具体的实施例对本发明作进一步的阐述。
[0056] 本实施例针对的智能手机平台是Google Nexus S,运行Android2.3.6操作系统。在访问代价模型的测量过程中,使用外置的Power Monitor电表设备实时地监测手机的电流和功耗。测试过程中,手机使用外部供电,电压恒定为3.7V,屏幕保持常亮且亮度不变,测试某种传感器时无其他应用同时运行,亦无其他传感器同时开启。
[0057] Android平台上获取传感信息主要是通过查询各类内置的传感器和网络接口的输出值和相关状态来实现的。下面列出了Android平台中主要的内置传感器和一些网络接口。
[0058]
[0059] 本实施例的目的是利用本发明提供的方法优化一个Android定位应用程序(一个特定的MSA),主要包括如下步骤:
[0060] 1)获得Google Nexus S(Android2.3.6)平台上获取传感数据的访问代价模型。下面的两个表格分别展示了Android系统API所以定义的传感器(由android.hardware.SensorManager定义)的功耗开销和其他广义传感器(如:GPS,摄像头,Wi-Fi,3G等)的功耗开销,单位均为毫瓦(mW)。第三个表格展示了访问Sensing API的时间开销,单位是毫秒(ms)。
[0061]
[0062]
[0063]
[0064]
[0065] 2)基于步骤1)中提供的Google Nexus S平台的Sensing API访问代价模型,可以发现访问GPS的能耗非常高,本实施例针对GPS进行能耗优化,具体方法参考B3。基于手机的移动状态进行优化:首先,通过低能耗的加速度传感器访问接口(参考上面的访问代价模型)获取手机的移动状态;其次,通过GPS和加速度传感器结合的方式为应用提供位置信息。这种GPS结合加速度传感器获取位置信息的工作流程如下:初始,应用通过GPS获取位置信息,定义此时用户所处位置为原点并且暂时不再使用GPS;之后,应用对加速度传感器的值在平方向(与地面水平)上进行积分,计算出用户当前位置与原点的距离,如果距离大于50米,则开启GPS获取位置信息,更新位置信息与原点位置。
[0066] 3)这是一个新开发的应用程序,直接编译后生成一个MSA,记为GPSLocator。
[0067] 通过对上述GPSLocator应用程序的实际运行和能耗测量发现:GPSLocator的平均功耗是502mW,而直接使用Sensing API(即直接访问GPS)的具有相同功能的应用程序的平均功耗是571mW。可见,使用了经过能耗优化的Sensing API*的GPSLocator节省了约14%的功耗。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈