在开始API开发工作之前,您需要完成必要的开发准备工作,同时请确保您的工程中已经配置HMS Core SDK的maven仓地址,并且完成了本服务的SDK集成。
1. 创建地标分析器。可以通过地标识别自定义参数类MLRemoteLandmarkAnalyzerSetting创建分析器。
- // 方式1:使用默认的参数配置。
- MLRemoteLandmarkAnalyzer analyzer = MLAnalyzerFactory.getInstance().getRemoteLandmarkAnalyzer();
- // 方式2:使用自定义的参数配置。
- /**
- * setLargestNumOfReturns 识别结果的最大数量。
- * setPatternType 分析器使用的模式。
- * MLRemoteLandmarkAnalyzerSetting.STEADY_PATTERN:值为1,即稳定模式。
- * MLRemoteLandmarkAnalyzerSetting.NEWEST_PATTERN:值为2,即最新模式。
- */
- MLRemoteLandmarkAnalyzerSetting settings = new MLRemoteLandmarkAnalyzerSetting.Factory()
- .setLargestNumOfReturns(1)
- .setPatternType(MLRemoteLandmarkAnalyzerSetting.STEADY_PATTERN)
- .create();
- MLRemoteLandmarkAnalyzer analyzer = MLAnalyzerFactory.getInstance().getRemoteLandmarkAnalyzer(settings);
2. 通过android.graphics.Bitmap构造MLFrame,支持的图片格式包括:jpg/jpeg/png/bmp,建议图片尺寸不小于640*640像素。
- MLFrame mlFrame = new MLFrame.Creator().setBitmap(bitmap).create();
3. 进行地标识别。
- Task<List<MLRemoteLandmark>> task = analyzer.asyncAnalyseFrame(mlFrame);
- task.addOnSuccessListener(new OnSuccessListener<List<MLRemoteLandmark>>() {
- public void onSuccess(List<MLRemoteLandmark> landmarkResults) {
- // 识别成功的处理逻辑。
- }})
- .addOnFailureListener(new OnFailureListener() {
- public void onFailure(Exception e) {
- // 识别失败的处理逻辑。
- // Recognition failure.
- try {
- MLException mlException = (MLException)e;
- // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。错误码信息可参见:机器学习服务错误码。
- int errorCode = mlException.getErrCode();
- // 获取报错信息,开发者可以结合错误码,快速定位问题。
- String errorMessage = mlException.getMessage();
- } catch (Exception error) {
- // 转换错误处理。
- }
- }
- });
4. 识别完成,停止分析器,释放检测资源。
- if (analyzer != null) {
- try {
- analyzer.stop();
- } catch (IOException e) {
- // 异常处理。
- }
- }