搜索
开发文档
应用开发
快应用开发
快游戏开发
开发文档/应用开发/服务能力/安全开放服务/安全相机开发指南
安全相机开发指南更新时间: 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接入指南
文档内容是否有帮助?
有帮助
无帮助