本文主要介绍了 Android SDK 中 AI 检测相关的 API。
开启人脸检测
public DetectResult[] startDetectFace(byte[] data, int imageWidth,
int imageHeight, int angle,
boolean needFlipX)
请求参数
参数 | 类型 | 说明 | 是否必须 |
data | byte[]、int[] | 检测数据源 | 是 |
imageWidth | int | 图片宽度 | 是 |
imageHeight | int | 图片高度 | 是 |
angle | int | 角度 | 是 |
needFlipX | boolean | 是否使用镜像 | 是 |
返回值
DetectResult[]
属性 | 类型 | 说明 |
imageWidth | int | 图片宽度 |
imageHeight | int | 图片高度 |
rotateDegree | int | 旋转角度 |
faceDetectionReport | FaceDetectionReport | 人脸检测报告 |
inAngle | int | 角度 |
facePoints | float[] | 人脸位置信息 |
data | byte[] | 活体结果 |
argbData | int[] | 参数数据 |
currentTimeMillis | long | 当前时间 |
name | String | 检测的名字 |
type | int | 检测的类型 |
faceId | int | 检测 ID |
代码示例
DetectResult[] DetectResult =
IdrsSdk.getInstance().startDetectFace(data, imageWidth,imageHeight,
angle,needFlipX)
获取人脸特征
public float[] getFeature(DetectResult detectResult)
请求参数
参数 | 类型 | 说明 | 是否必须 |
detectResult | DetectResult | 检测数据源 | 是 |
返回值
类型 | 说明 |
float[] | 特征数组 |
代码示例
float[] feature = IdrsSdk.getInstance().getFeature(DetectResult1)
获取位图特征
public float[] getBitmapFeature(Bitmap bitmap)
请求参数
参数 | 类型 | 说明 | 是否必须 |
bitmap | Bitmap | 需要识别的图片 | 是 |
返回值
类型 | 说明 |
float[] | 特征数组 |
代码示例
float[] feature = IdrsSdk.getInstance().getBitmapFeature(bitmap)
人照比对
public float faceRecognitionSimilarity(float[] features1, float[] features2)
请求参数
参数 | 类型 | 说明 | 是否必须 |
features1 | float[] | 需要对比的特征数组 | 是 |
features2 | float[] | 需要对比的特征数组 | 是 |
返回值
类型 | 说明 |
float | 返回的相似度 |
代码示例
float v = IdrsSdk.getInstance().faceRecognitionSimilarity(role.getFeature(), feature);
画面实时标记
public RectF viewRectToFrameRect(RectF viewRect, int viewWidth,
int viewHeight, int frameWidth,
int frameHeight, boolean mirror, int rotate)
请求参数
参数 | 类型 | 说明 | 是否必须 |
viewRect | RectF | 标记的矩形 | 是 |
viewWidth | int | 控件的宽度 | 是 |
viewHeight | int | 控件的高度 | 是 |
frameWidth | int | 图片的宽度 | 是 |
frameHeight | int | 图片的高度 | 是 |
mirror | boolean | 是否需要镜像 | 是 |
rotate | int | 旋转的角度 | 是 |
返回值
类型 | 说明 |
RectF | 返回的矩形位置 |
代码示例
RectF frameRect = IdrsSdk.getInstance().viewRectToFrameRect(
viewRect, cameraView.getWidth(),cameraView.getHeight(),
imageWidth, imageHeight, false, 0);
开启手势识别
public ArrayList<HandDetectionResult> startHandDetection(byte[] data,
int imageWidth, int imageHeight, int angle,
boolean isFrontCamera, boolean isStatic)
请求参数
参数 | 类型 | 说明 | 是否必须 |
data | byte[] | 标记的矩形 | 是 |
imageWidth | int | 控件的宽度 | 是 |
imageHeight | int | 控件的高度 | 是 |
angle | int | 旋转角度 | 是 |
isFrontCamera | boolean | 是否前置摄像头 | 是 |
isStatic | boolean | 是否需要镜像 | 是 |
返回值
ArrayList<HandDetectionResult>
属性 | 类型 | 说明 |
left | float | 距左 |
top | float | 距上 |
bottom | float | 距底部 |
right | float | 距右 |
action | String | 手势的姿势 |
touchphone | boolean | 是否手势 |
phoneTouchedPointx | float | 手势x坐标 |
phoneTouchedPointy | float | 手势y坐标 |
faceRect | RectF | 手势矩形数据 |
代码示例
ArrayList<HandDetectionResult> handDetectionResults =
IdrsSdk.getInstance().startHandDetection(data, imageWidth,
imageHeight, angle, needFlipX, true);
签名类型检测
public String classify_run(int width, int height, byte[] data,
float[] roi, int rotation, boolean mirror)
请求参数
参数 | 类型 | 说明 | 是否必须 |
width | int | 图片宽度 | 是 |
height | int | 图片高度 | 是 |
data | byte[] | 图片字节码数据 | 是 |
roi | float[] | 提示文字数据信息 | 是 |
rotation | int | 旋转角度 | 是 |
mirror | boolean | 是否需要镜像 | 是 |
返回值
类型 | 说明 |
String | 签名类型 |
代码示例
String type = IdrsSdk.getInstance().classify_run(imageWidth, imageHeight,
data, floats, 0, false);
身份证识别
public String ocr_run(int width, int height, byte[] data,
float[] roi, int rotation, boolean mirror, boolean isFront)
请求参数
参数 | 类型 | 说明 | 是否必须 |
width | int | 图片宽度 | 是 |
height | int | 图片高度 | 是 |
data | byte[] | 图片字节码数据 | 是 |
roi | float[] | 提示文字数据信息 | 是 |
rotation | int | 旋转角度 | 是 |
mirror | boolean | 是否需要镜像 | 是 |
isFront | boolean | 是否前置摄像头 | 是 |
返回值
类型 | 说明 |
String | 身份证数据 |
代码示例
String json = IdrsSdk.getInstance().ocr_run(
imageWidth, imageHeight, data, floats, 0, false, true);
身份证识别
public String ocr_run_Bitmap(Bitmap bitmap,
float[] roi, int rotation, boolean isFront)
请求参数
参数 | 类型 | 说明 | 是否必须 |
bitmap | Bitmap | 需要识别的图片 | 是 |
roi | float[] | 提示文字数据信息 | 是 |
rotation | int | 旋转角度 | 是 |
isFront | boolean | 是否前置摄像头 | 是 |
返回值
类型 | 说明 |
String | 身份证数据 |
代码示例
String json = IdrsSdk.getInstance().ocr_run_Bitmap(bitmap, floats, 0, true);
开启激活词检测
public int startDialogforData(Handler handler)
请求参数
参数 | 类型 | 说明 | 是否必须 |
handler | Handler | 用于监听识别结果 | 是 |
返回值
无
代码示例
IdrsSdk.getInstance().startDialogforData(new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if (msg.what == 100) {
IdrsSdk.getInstance().stopDialog();
Toast.makeText(CreateRoomActivity.this, "激活词识别成功: " + msg.obj,
Toast.LENGTH_LONG).show();
}
}
});
结束激活词检测
public void stopDialog()
请求参数
无
返回值
无
代码示例
IdrsSdk.getInstance().stopDialog();
开始 TTS 合成
public void startTTs(String text, TTsListener listener)
请求参数
参数 | 类型 | 说明 | 是否必须 |
text | String | 需要播报的字符串 | 是 |
listener | TTsListener | 合成监听 | 否 |
返回值
无
代码示例
IdrsSdk.getInstance().startTTs(text, new AudioService.TTsListener() {
@Override
public void onPlayComplete() {
}
@Override
public void onTTSStatusChangeCallback(AudioService.TTSStatus ttsStatus) {
}
@Override
public void onDataCallback(byte[] text, int work_idx, byte[] data) {
}
});
结束 TTS 合成
public void cancelTts()
请求参数
无
返回值
无
代码示例
IdrsSdk.getInstance().cancelTts();
暂停播放
public void pauseTts()
请求参数
无
返回值
无
代码示例
IdrsSdk.getInstance().pauseTts();
当前是否暂停
public boolean isPauseTts()
请求参数
无
返回值
参数 | 类型 | 说明 |
isPause | boolean | 当前是否暂停 |
代码示例
IdrsSdk.getInstance().isPauseTts();
是否正在播放
public boolean isPlayTts()
请求参数
无
返回值
参数 | 类型 | 说明 |
isPlay | boolean | 是否正在播放 |
代码示例
IdrsSdk.getInstance().isPlayTts();
恢复 TTS
public void resumeTts()
请求参数
无
返回值
无
代码示例
IdrsSdk.getInstance().resumeTts();
TTS 参数设置
public void setparamTts(String key, String value)
请求参数
参数 | 类型 | 说明 | 是否必须 |
key | String | font_name、 speed_level、 volume、 pitch_level | 是 |
value | String | xiaoyun、1 | 是 |
返回值
无
代码示例
IdrsSdk.getInstance().setparamTts("font_name", "xiaoyun");//设置播报人
IdrsSdk.getInstance().setparamTts("speed_level", "1");//设置播报速度
获取 TTS 参数
public String getparamTts(String key)
请求参数
参数 | 类型 | 说明 | 是否必须 |
key | String | font_name、 speed_level、 volume、 pitch_level | 是 |
返回值
类型 | 说明 |
String | 对应 key 的 value 值 |
代码示例
IdrsSdk.getInstance().setparamTts("speed_level");//当前播放速度