Android_SDK
所有文档

          EasyDL零门槛AI开发平台

          Android_SDK

          简介

          本文介绍SDK的的功能使用,即下载包中的sdk module。

          SDK为货架拼接API的封装,无任何额外功能。如果有和API文档不符的地方,以API文档为准。

          支持Android Level 15以上编译和使用.

          测试

          获取鉴权

          1. 进入EasyDL零售版的百度智能云控制台应用列表页面,如下图所示:

          1.png

          1. 如果还未创建应用,请点击「创建应用」按钮进行创建。创建应用后,参考鉴权参考文档,使用API Key(AK)和Secret Key(SK)获取access_token
          {
          	"ak": "Mz0zhObvEZ6lnG1K3renXXXX", // API Key的值
          
          	"sk": "188fRHYvLPmlPrNCDpBnkhL3ydXXXXX", // Secret Key的值
          
          	"apiUrl": "https://aip.baidubce.com/rpc/2.0/ai_custom_retail/v1/detection/XXXX"  // 定制商品检测服务API
          }

          正常情况下,启动的app及其功能和扫描二维码一致

          demo的请求和结果会放在/sdcard/com.baidu.ai.easydl.montage中

          测试mini demo

          测试app通过后,可以修改app/src/main/AndroidManifest.xml 内的启动app,修改为 "com.baidu.ai.easydl.minidemo.MiniActivity"

          MiniActivity中有3个task,测试时需要填入 Appkey, AppSecret, ApiUrl信息

          • ApiTestAsyncTask ,测试简单流程。
          • QueryAsyncTask , 测试查询列表。
          • RequestTestAsyncTask,测试assets/request下的图片输入。这个目录可以从SD卡中/sdcard/com.baidu.ai.easydl.montage/X/request复制。

          调用流程

          第1步, 创建任务,上传图片 1)【创建任务:开始拼接整个流程】 2)【加货架图:上传图片】 3)【开始任务:启动货架拼接离线任务】

          第2步,不定时查询结果,一般10分钟后有结果参数 【查询结果:查询任务运行状态或者结果】

          其它可选操作: 【终止任务:终止正在进行或者等待的任务】 【任务列表: 查询所有状态的任务列表】

          SDK 调用

          根据调用流程, SDK有两种调用方式:

          • StitchApi, api的封装
          • StitchTask, StitchApi的封装,避免taskId的传递。一个task对应一个StitchTask

          返回参数以及其他信息详见文档货架拼接API调用方法

          StitchApi

          初始化

          /**
          * 初始化
          * @param appKey 网页上的应用的appkey
          * @param secretKey 网页上的应用的appSecret
          */
          public StitchApi(String appKey, String secretKey) {
             super(appKey, secretKey);
          }
          
          /**
          * 初始化
          * @param appKey 网页上的应用的appkey
          * @param secretKey 网页上的应用的appSecret
          * @param connection 自定义HTTP连接
          */
          public StitchApi(String appKey, String secretKey, ISdkConnection connection) {
             super(appKey, secretKey, connection);
          }

          创建任务

           public CreateStitchResponse create(CreateStitchRequest request);
          
          // CreateStitchRequest 及 CreateStitchResponse  参数同API文档

          同步上传图片

          public CommonStitchResponse upload(UploadImageRequest request);
          
          // UploadImageRequest 及 CreateStitchResponse  参数同API文档
          
          设置图片的话,以下2个方法21
          
          public void setImageFile(String imageFile)public void setImageInputStream(InputStream inputStream) 

          异步上传图片

              public void uploadAsync(UploadImageRequest request,
                                      IApiResponseListener<CommonStitchResponse> listener)
          
          // UploadImageRequest   参数同API文档
          
          
          // IApiResponseListener<CommonStitchResponse>  接口:
          onSdkResponse(CommonStitchResponse response, String userDefinedRequestId)
          // 其中userDefinedRequestId是在UploadImageRequest 里面设置的
          
          // 使用 clearAysncQueue()可以清空未开始的任务

          开始任务

          CommonStitchResponse start(CommonStitchRequest request)

          查询结果

           public QueryStitchReponse query(CommonStitchRequest request)

          任务列表

          public  ListStitchResponse list(ListStitchRequest request)

          StitchTask

          一个任务新建一个StitchTask 调用方式同 StitchApi, 参数中不必设置taskId

          AbstractApiRequest

          目前Request类的基类 。

          // 设置自定义请求Id, 调用异步接口的回调使用
           public void setUserDefinedRequestId(String userDefinedRequestId)
          
          // 设置是否添加debug日志
          public void setEnableDebug(boolean enableDebug)

          CommonStitchResponse 及 AbstractApiResponse

          // 获取任务状态
           public String getTaskStatus();
          
          // 获取logId
           public String getLogId();
          
          // 获取服务端返回的原始json
          public JSONObject getOriginalJson();
          
          // 获取请求
          public AbstractApiRequest getRequest();

          集成拍照逻辑

          拍照逻辑依赖OpenCv库, 会增加打包大小,可以使用常用的两个架构

           ndk {
                      abiFilters "arm64-v8a", "armeabi-v7a"
                  }

          查看com.baidu.ai.easydl.montage.page.photo.take 包,里面均为摄像拍照逻辑。

          拍照参数设置

          package com.baidu.ai.easydl.montage.page.photo;
          
          public interface IPhotoParam {
          
              /**
               * 两张图片的hash算法
               */
              String IMAGE_COMPARE_HASH_METHOD = "pHash"; // pHash,dHash,ahash
          
              /**
               * 两张图片的hash比较值
               */
              float IMAGE_COMPARE_HASH_CONFIDENCE_THRESHOLD = 0.75f;
          
              /**
               * 相机的Sensor的旋转误差值, 取值为0-180,大于180表示忽略
               */
              int SENSOR_ORIENTATION_EVENT_DELTA = 20;
          
              /**
               * 传感器的SensorY的旋转误差值, 取值为0-180,大于180表示忽略
               */
              double SENSOR_ORIENTATION_SENSOR_Y_DELTA = Math.PI / 6;
          
              /**
               * 拍照建议的最低亮度值
               */
              double SENSOR_LIGHT_LUMEN_MIN = 100;
          
              /**
               * 拍照建议的最高亮度值
               */
              double SENSOR_LIGHT_LUMEN_MAX = 500;
              /**
               * 40%图片的透明度
               */
              float IMAGE_SLIDE_TRANSPARENT_ALPHA = 0.5f;
          
              /**
               * 每行货架最多的照片数量,服务端支持最大60
               */
              int SLOT_MAX_PHOTO_NUM = 60;
          
              // 下面的参数,请不要修改
              float IMAGE_SLIDE_CROP_RATIO = 0.4f;
          
              boolean IMAGE_COMPARE_HASH_DEBUG_SAVE_IMAGES = false;
          
          }
          上一篇
          iOS_SDK
          下一篇
          API文档