搜索
开发文档
应用开发
快应用开发
快游戏开发
开发文档/应用开发/服务能力/光子引擎/应用加速器接入文档
应用加速器接入文档更新时间: 2025-02-21 10:48:00

一、SDK下载

https://github.com/MiCode/MiBridge

二、调试权限申请

 申请接入调试权限需提供以下信息并发送邮件到 mispeed-help@xiaomi.com。

 邮件主题:xx公司申请接入小米应用加速器调试权限

正文:

应用简介:(必填)

xxxxxxxxxxxxxxxxxxx

调试信息(必填)

应用包名公司名称申请人手机型号MIUIVAID号
com.miXX张三Redmi K20 MIUI 11 20.3.5ec8ec830b8e8031c

 预期接入功能(选填):

1. 在xx界面进行提频

2. 接入智能刷新率

米方将会回复您一个鉴权码,供前期接入SDK调试使用。

 备注:什么是VAID,如何获得VAID号?
          VAID是MAS移动安全联盟统一的开发者匿名设备标识符,请参考 http://msa-alliance.cn/col.jsp?id=120 ,也可参考示例代码(TestMiBridge)中的Testing getVAID.

三、接入方式

1. 手动下载Jar包

2.使用maven在线依赖

打开Android Studio项目级“build.gradle”文件。在“allprojects > repositories”中配置小米应用加速器的Maven仓地址。

allprojects {
repositories {
google()
jcenter()
maven {
url "https://repos.xiaomi.com/maven"
credentials {
username 'mi-bridge'
password 'AKCp8nH4XbDQshne9w5PgaLroZ7kozqtAPo6Kw6pfZLBWzPEtAJoFzU73RHryxXkmcL5biUL2'
}
}
}
}

打开应用级的“build.gradle”文件。

dependencies { ... //1.0.5是mibridge的版本号,后续升级也要修改对应版本号。 implementation "com.xiaomi.mibridge:mibridge:1.0.5" ... }

四、接口定义

1、权限检查接口

①boolean checkDebugPermission(Context context, String pkg, int uid, String auth_key)

    介绍:通过申请获得的鉴权码,检查应用是否有调试权限。

    参数:

    context: 应用上下文

    pkg: 应用包名

    uid: android.os.Process.myUid()

    auth_key: 上一步中申请获得的鉴权码

    返回结果:

    true: 权限检查通过

    false: 权限检查失败,无接口使用权限

②boolean checkPermission(String pkg, int uid)

    介绍:检查应用是否有正式权限,正式权限的申请参考“五、正式权限申请“

    获得正式权限后,使用此接口检查权限,无需使用上一个接口的鉴权码。

    参数:

    pkg: 应用包名

    uid: android.os.Process.myUid()

    返回结果:

    true: 权限检查通过

    false: 权限检查失败,无接口使用权限

2、系统资源申请接口

① int requestCpuHighFreq(int uid, int level, int timeoutms)

    介绍:向系统申请cpu频率资源的接口

    参数:

    uid: android.os.Process.myUid()

    level: 需要的cpu频率level,系统将会根据不同机型设置不同的cpu频率

    timeoutms: 申请cpu资源的持续时间(单位:ms)

Level级别解释timeouts
1Level 1 将会设置系统当前最小频率为系统最高频率 <=10 000ms
2Level 2 将会设置系统当前最小频率为系统较高频率 <=5 000ms
3Level 3 将会设置系统当前最小频率为系统正常频率以上 <=1 500ms

注意:请谨慎使用Level 1级别。Level 1级别使用场景数量限制为5,

     Level 2级别使用场景数量限制为20,Level 3 不做限制。

    返回结果:

    -0: Success

    -1: Fail

    -2: Permission not granted!

② int cancelCpuHighFreq(int uid)

介绍:取消申请的cpu频率资源

    参数:

    uid: android.os.Process.myUid()

    返回结果:

    0: Success

    -1: Fail

    -2: Permission not granted!

③int requestThreadPriority(int uid , int req_tid, int timeoutms)

    介绍:申请线程获得高优先级,将会优先得到调度运行。

    参数:

    1)uid: android.os.Process.myUid()

    2)req_tid: 申请的线程id

    3)timeoutms: 申请的时长(单位:ms)

    返回结果:

    0: Success

    -1: Fail

    -2: Permission not granted!

④int cancelThreadPriority (int uid , int req_tid)

介绍:取消申请的线程优先级

    参数:

    uid: android.os.Process.myUid()

    req_tid: 取消的线程id

    返回结果:

    0: Success

    -1: Fail

    -2: Permission not granted!

⑤int requestGpuHighFreq(int uid, int level, int timeoutms)

介绍:向系统申请gpu频率资源的接口 

    参数: uid : android.os.Process.myUid()

    level : 需要的gpu频率level,系统将会根据不同机型设置不同的gpu频率 

    timeoutms : 申请gpu资源的持续时间 (单位:ms)

Level级别解释timeouts
1Level 1 将会设置系统当前最小频率为系统最高频率 <=10 000ms
2Level 2 将会设置系统当前最小频率为系统较高频率 <=5 000ms
3Level 3 将会设置系统当前最小频率为系统正常频率以上 <=1 500ms

返回结果: 

    0: Success 

    -1: Fail 

    -2: Permission not granted!

⑥int cancelGpuHighFreq(int uid) 

    介绍:取消申请gpu频率资源的接口 

    参数: uid : android.os.Process.myUid() 

    返回结果: 

    0: Success 

    -1: Fail 

    -2: Permission not granted!

⑦int requestDdrHighFreq(int uid, int level, int timeoutms) 

    介绍:向系统申请ddr频率资源的接口 

    参数: uid : android.os.Process.myUid() 

    level : 需要的ddr频率level,系统将会根据不同机型设置不同的ddr频率 

    timeoutms : 申请ddr资源的持续时间 (单位:ms)

Level级别解释timeouts
1Level 1 将会设置系统当前最小频率为系统最高频率 <=10 000ms
2Level 2 将会设置系统当前最小频率为系统较高频率 <=5 000ms
3Level 3 将会设置系统当前最小频率为系统正常频率以上 <=1 500ms

    返回结果:

    0: Success 

    -1: Fail 

    -2: Permission not granted!

⑧int cancelDdrHighFreq(int uid)

    介绍:取消申请ddr频率资源的接口 

    参数: uid : android.os.Process.myUid() 

    返回结果: 

    0: Success 

    -1: Fail 

    -2: Permission not granted!

⑨int requestIOPrefetch(int uid, String filePath) 

    介绍:申请IO预读取接口 

    参数: 

    uid : android.os.Process.myUid() 

    filePath : 预读取的文件路径 

    返回结果: 

    0: Success 

    -1: Fail 

    -2: Permission not granted!

⑩int requestBindCore(int uid, int[] tids, int level, int timeoutms)

    介绍:申请线程绑核运行接口 

    参数: 

    uid : android.os.Process.myUid() 

    tids : 申请的线程id 

   level : 需要的线程优先大核运行level

Level级别解释
1Level 1 将线程绑定小核运行
2Level 2 将线程绑定大核运行
4Level 4 将线程绑定超大核运行

timeoutms : 申请绑核的持续时间 (单位:ms)

    返回结果: 

    reqId(一个大于等于0的整数): 申请成功得到的申请id

    -1: Fail 

    -2: Permission not granted!

⑪int cancelBindCore(int uid, int reqId)

    介绍:取消申请绑核资源的接口 

    参数:

  uid : android.os.Process.myUid() 

  reqId: 申请线程绑核运行接口成功时得到的申请id

    返回结果: 

    0: Success 

    -1: Fail 

    -2: Permission not granted!

3、智能帧率调节接口

①public int setScene( int uid,String pkgName,int sceneId)

介绍:设置目标场景接口,以调节帧率

参数:依次为调用者的 uid 包名 场景参数值

返回结果:

0: Success

-1: Fail

-2: Permission not granted!

②谷歌官方接口文档:https://developer.android.google.cn/guide/topics/media/frame-rate

4、机型等级判定接口

引入import com.mi.mibridge.DeviceLevel

①int getDeviceLevel(int version)

    介绍:根据RAM/CPU/GPU的不同标准,获取当前设备的机型细分等级,从而决定调用系统资源接口的level 

    参数:

  version : 机型等级定义的版本,目前为1

    返回结果: 

    - DeviceLevel.LOW:入门机

 - DeviceLevel.MIDDLE:中端机

 - DeviceLevel.HIGH:高端机

 - DeviceLevel.UNKNOWN:未知类型

②int getDeviceLevel(int version, int type)

    介绍:根据CPU/GPU的不同标准,获取当前设备的机型细分等级,从而决定调用系统资源接口的level 

    参数:

  version : 机型等级定义的版本,目前为1

  type : 表示机型细分等级的类型,目前有2类:

     - DeviceLevel.CPU

     - DeviceLevel.GPU

    返回结果: 

    - DeviceLevel.LOW:入门机

 - DeviceLevel.MIDDLE:中端机

 - DeviceLevel.HIGH:高端机

 - DeviceLevel.UNKNOWN:未知类型

5、系统状态接口

①int getSystemState(int uid, Context context, int type)

    介绍:如开发者所知,在设备温度升高的时候,系统常常会为了降低温度/减缓温度升高的速度,保护硬件进行限频、限帧等限制。同时,系统续航模式切换到省电模式或超级省电的时候,系统也会为了延长续航进行限频、限帧等限制。限制后可能会导致应用出现卡顿等状况让设备使用体验不佳,因此当设备温控限频即将发生变化时,系统可调用预定义的回调函数通知三方应用,同时系统也为三方应用提供了温控level的查询接口及当前续航模式的查询接口,在温控level变化时应用可收到警报,或者应用要进行复杂操作时,可查询下用户当前的温控level及续航模式,如果温控限频严重或续航模式为省电模式/超级省电,建议应用可在保障基本操作流畅的前提下,动态调整代码执行负载和代码复杂度,配合手机系统协同优化,提高整机使用体验。

    参数:

    uid : 调用者UID

    context : 应用上下文

    type : 查询的系统状态类型,目前有两类:

        1 : 设备壳温

        2 : 系统省电模式

    返回结果: 

        当查询设备壳温时(type = 1),返回对应温度的温控级别

            0: 正常范围

            1: 轻微限频

            2: 较严重限频

            3: 非常严重限频

            -2: Permission not granted!

        当查询设备省电模式(type = 2),返回当前省电模式

            0:性能模式

            1:均衡模式

            2:省电模式

            3:超级省电

            -2: Permission not granted!

②int registerThermalEventCallback(int uid, ThermalEventCallBack cb)

    介绍:注册回调,当系统温控级别发生变化,触发回调接口onThermalLevelChanged

ThermalEventCallBack cb = new ThermalEventCallBack() {
@Override
public void onThermalLevelChanged(int level) {
//do somthing;
}
};

    参数 :

    uid : 调用者UID

    cb : 回调实例,须重写onThermalLevelChanged()方法

    返回结果 :

    0 : 注册成功

    -1 : 注册失败

    -2: Permission not granted!

③int unRegisterThermalEventCallback(int uid, ThermalEventCallBack cb)

    介绍:注销回调

    参数:

    uid : 调用者UID

    cb : 回调实例,须重写onThermalLevelChanged()方法

    返回结果 :

    0 :  注销成功

    -1 : 注销失败

    -2: Permission not granted!

五、正式权限申请

请提供以下信息并发送邮件到 mispeed-business@xiaomi.com 申请正式权限。

邮件主题:xx公司申请小米应用加速器正式权限

注意:申请正式权限,需要签订相关商务权限。

1. 资源接口使用场景

场景cpu levelthread prioritytimeout (ms)
打开页面1-100
滑动2-100
场景33-500

2. 性能测试

备注:我们也会根据您提供的场景进行性能测试。

如贵公司无相关测试条件,也可以由我们帮您进行测试。

场景具体测试内容接入前接入后提升
进入页面进入页面耗时100 ms80 ms20%
页面滑动滑动丢帧率10%6%40%
场景X测试内容X

3. 功耗测试

场景接入前接入后差值
场景一70mA78mA50
场景二


备注:我们也会根据您提供的场景进行功耗测试。如贵公司无相关测试条件,也可以由我们帮您进行测试。

六、更多合作

后续会为您的应用提供更多的支持(例如卡顿打点,内存泄漏打点),提升应用的性能,提升用户的使用满意度。

如果您有任何建议或者反馈,欢迎交流:

mispeed-help@xiaomi.com

 我们的宗旨是:

一切为了用户,让用户得到最好的体验!


上一篇:应用加速器介绍
下一篇:游戏加速框架接入文档
文档内容是否有帮助?
有帮助
无帮助