安全相机开发指南更新时间: 2025-04-27 16:28:00
一、使用说明
本能力对外提供的接口为AIDL接口,应用通过直接AIDL接口调用该能力。
二、开发流程
参考开放服务接入操作指南章节申请账号和权限

三、使用约束
使用该功能需要先申请相机权限
四、开发步骤
添加 App Id 和构建版本 Debug 标识
- App Id
com.xiaomi.xms.APP_ID
当开通服务时,会生成 App Id 唯一标识,用于鉴权
必须配置 App Id,调用服务时会通过 App Id 进行鉴权
- 构建版本 Debug 标识
com.xiaomi.xms.BUILD_TYPE_DEBUG
当前 APK 是否为 Debug 构建版本。若不配置,默认为 false
备注:鉴权时会验证应用 apk 签名。开发调试阶段,一般不会运行 Release 签名的 apk,通常都是运行 Debug 签名 apk,为了保证在开发阶段仍然可以鉴权成功,开发者可以在平台同时添加正式证书指纹(Release 签名)和测试证书指纹(Debug 签名),用于不同场景下鉴权。
- 在应用的 AndroidManifest.xml 中添加
meta-data
配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<meta-data
android:name="com.xiaomi.xms.APP_ID"
android:value="your app id here" />
<meta-data
android:name="com.xiaomi.xms.BUILD_TYPE_DEBUG"
android:value="true or false" />
</application>
</manifest>
具体开发步骤:
- 调用AIDL接口获取图片
- 参考小米提供验签的样例代码在App端或者云端对图片进行验签
五、调测验证
参考DemoApp调用执行AIDL接口调用及对图片验签
六、接口说明
1、接口概述
安全相机开放能力对App提供AIDL接口,App需要申请相机权限、和AIDL服务建立连接并调用AIDL接口获取图片。

2、API接口明细
如下接口是安全相机提供的AIDL服务:
// IMiSecCamService.aidl
package com.xiaomi.trustservice.secmedia;
import com.xiaomi.trustservice.secmedia.IMiSecCamCallback;
// Declare any non-default types here with import statements
interface IMiSecCamService {
//启动安全相机
int openMiSecCam(in IMiSecCamCallback callback);
//关闭安全相机
void closeMiSecCam();
}
应用需要调用openMiSecCam接口并传递一个回调函数callback,callback回调函数用于接收来自安全相机签名后的图片:
// IMiSecCamCallback.aidl
package com.xiaomi.trustservice.secmedia;
// Declare any non-default types here with import statements
interface IMiSecCamCallback {
//回调函数,buf包含完整的可验签jpg图片。验签代码参考demo app.
void onFrameCallback(inout byte[] buf);
}
openMiSecCam会进入同步调用的状态,App调用这个函数的线程会被阻塞,App必要时可以新建一个线程。
- 如果系统不支持该能力,函数会立即返回,并返回一个错误码。
- 如果系统支持该能力,函数不会立即返回,进入一个30秒的会话状态,开始通过callback传递jpg图片,一秒钟内会输出20左右张照片。30秒钟到的时候会话自动结束。应用可以调用closeMiSecCam提前结束会话。
3、错误码
openMiSecCam的返回值:
0:表示成功,
34: App提前调用cancel会返回34
其他的非0错误值表示触发异常了。下面错误值来自native层:
MISECMEDIA_COMMON_FAIL = 1,
MISECMEDIA_GET_SERVICE_FAIL = 2,
MISECMEDIA_PARA_INVALID = 3,
MISECMEDIA_LOAD_TA_FAIL = 4,
MISECMEDIA_SEND_CMD_FAIL = 5,
MISECMEDIA_GET_DATA_FAIL = 6,
MISECMEDIA_JPEG_FAIL = 7,
MISECMEDIA_SIGN_FAIL = 8,
MISECMEDIA_VERIFY_FAIL = 9,
MISECMEDIA_GET_CERT_FAIL = 10,
MISECMEDIA_CERT_INVALID = 11,
MISECMEDIA_MALLOC_FAIL = 12,
MISECMEDIA_CAMERA_ERROR = 13,
MISECMEDIA_HEX_ERROR = 14,
MISECMEDIA_NO_PROVISION = 15,
MISECMEDIA_ERR_SFS_READ = 16,
MISECMEDIA_ERR_SFS_WRITE = 17,
MISECMEDIA_ERR_SFS_DELETE = 18,
MISECMEDIA_SFS_NO_EXIST = 19,
MISECMEDIA_ERR_TA_ECCGEN = 20,
MISECMEDIA_HASH_ERROR = 21,
MISECMEDIA_AES_ERROR = 22,
MISECMEDIA_QSEE_OPEN_ERROR = 23,
MISECMEDIA_QSEE_INVOKE_ERROR = 24,
MISECMEDIA_QSEE_CLOSE_ERROR = 25,
MISECMEDIA_ECDH_ERROR = 26,
MISECMEDIA_ECDSA_FAIL = 27,
MISECMEDIA_ERR_RPMB_READ = 28,
MISECMEDIA_ERR_RPMB_WRITE = 29,
MISECMEDIA_RPMB_FILE_NO_EXIST = 30,
MISECMEDIA_C2PA_FAIL = 31,
MISECMEDIA_PRIV_KEY_FAIL = 32,
MISECMEDIA_YUV_90_FAIL = 33,
MISECMEDIA_CANCEL = 34,
MISECMEDIA_TIMEOUT = 35,
MISECMEDIA_INIT_FAIL = 36,
下面的错误来自于Java层:
128: 安全相机服务获取失败
129: 共享内存创建失败
130: 安全相机初始化失败
131: 安全相机服务异常
七、代码参考Demo下载
请使用企业邮箱联系developer@xiaomi.com获取Demo参考
上一篇:安全相机业务介绍
下一篇:可信设备SDK接入指南
文档内容是否有帮助?
有帮助
无帮助