一切为了用户,让用户得到最好的体验!
小米应用加速器向开发者提供申请系统资源的接口,可以为开发者提升应用关键场景下的性能,提升用户使用体验。
- 轻量级接入
通过JAR包接入,大小只有几kb, 不会对开发者的应用造成负担 - 快速系统通信
通过Binder直接与系统层进行通信,申请系统资源,快速高效 - 场景化定制
为开发者在不同的场景下提供不同级别的系统资源
MiBridge.jar
您可以引入此jar包调用小米应用加速器相关接口。
TestMiBridge
此目录包含:
mibridge: MiBridge jar包的实现代码。
app: 测试MiBridge的app代码。
请提供以下信息,发送到邮箱[email protected], 申请接入调试权限。
应用包名 | 申请人 |
---|---|
com.mi.testmibridge | 张三 |
我们将会为您开通调试权限.
1.配置小米应用加速器的Maven仓库地址
打开Android Studio项目级“build.gradle”文件。在“allprojects > repositories”中配置小米应用加速器的Maven仓地址。
allprojects {
repositories {
...
//增加小米应用加速器的Maven仓库地址
maven {
url "https://repos.xiaomi.com/maven"
credentials {
username 'mi-bridge'
password 'AKCp8nH4XbDQshne9w5PgaLroZ7kozqtAPo6Kw6pfZLBWzPEtAJoFzU73RHryxXkmcL5biUL2'
}
}
}
}
2、添加编译依赖
打开应用级的“build.gradle”文件。
dependencies {
...
//1.0.xx是mibridge的版本号,后续升级也要修改对应版本号。
implementation "com.xiaomi.mibridge:mibridge:1.0.18"
...
}
权限检查接口
-
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: 权限检查失败,无接口使用权限
系统资源申请接口
-
int requestCpuHighFreq(int uid, int level, int timeoutms)
介绍:向系统申请cpu频率资源的接口参数:
uid : android.os.Process.myUid()
level : 需要的cpu频率level,系统将会根据不同机型设置不同的cpu频率
timeoutms : 申请cpu资源的持续时间Level级别 解释(以小米8为例) timeoutms 1 Level 1 将会设置系统当前最小频率为系统最高频率 最长10s 2 Level 2 将会设置系统当前最小频率为系统较高频率
例:小米8对应大核最低2.2GHz, 小核最低1.5GHz最长5s 3 Level 3 将会设置系统当前最小频率为系统正常频率以上
例:小米8对应大核最低1.9GHz, 小核最低1.0GHz最长1.5s 注意:请谨慎使用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)
介绍:申请线程获得高优先级,将会优先得到调度运行参数:
uid : android.os.Process.myUid()
req_tid : 申请的线程id
timeoutms : 申请的时长返回结果:
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资源的持续时间Level级别 解释 timeoutms 1 Level 1 将会设置系统当前最小频率为系统最高频率 最长10s 2 Level 2 将会设置系统当前最小频率为系统较高频率 最长5s 3 Level 3 将会设置系统当前最小频率为系统正常频率以上 最长1.5s 返回结果:
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资源的持续时间返回结果:
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 req_tid)
介绍:申请线程优先大核运行接口参数:
uid : android.os.Process.myUid()
req_tid : 申请的线程id返回结果:
0: Success
-1: Fail
-2: Permission not granted!
系统状态接口 -
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!
- 1 : 设备壳温
-
int registerThermalEventCallback(int uid, ThermalEventCallBack cb)
介绍:注册回调,当系统温控级别发生变化,触发回调接口onThermalLevelChangedThermalEventCallBack 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 : 回调实例
返回结果 :- 0 : 注销成功
- -1 : 注销失败
- -2 : Permission not granted!
- 0 : 注销成功
请提供以下信息,发送到邮箱[email protected], 申请正式权限。
邮件主题:xx(APP名称)申请小米应用加速器正式权限
__1. 资源接口使用场景
场景 | cpu level | thread priority | timeout (ms) |
---|---|---|---|
打开xxx页面 | 1 | 0 | 100 |
Xxx滑动 | 2 | 0 | 1000 |
场景3 | 3 | 1 | 500 |
场景4 | 1 | 0 | 100 |
场景5 | 0 | 1 | 2000 |
__2. 性能测试
场景 | 具体测试内容 | 优化前 | 优化后 | 提升 |
---|---|---|---|---|
进入某页面 | 进入页面耗时 | 100 ms | 80 ms | 20% |
某页面滑动 | 滑动丢帧数(率) | 10% | 6% | 40% |
场景3 | 测试内容3 | .. | .. | .. |
备注:我们也会根据您提供的场景进行性能测试。
__3. 功耗测试
场景 | Base | 接入后 | Diff |
---|---|---|---|
场景1 | 1000 mA | 1050 mA | 50 |
场景2 | .. | .. | .. |
备注:我们也会根据您提供的场景进行功耗测试。
后续将会开放更多接口
requestIOHighFreq,requestMemory,requestNetwork等
后续可以提供的支持
为您的应用提供更多的支持(例如,卡顿打点,内存泄漏打点),提升应用的性能,提升用户的使用满意度。