TozSDK-s2配置文档

Demo下载地址:https://github.com/Eason2Wang/TozSDKDemo-v2

一、初始化配置

1. 配置Gradle

  • 在使用TozSDK模块的build.gradle文件中,添加如下配置:
implementation 'com.tozmart:tozmartSDK-s2:1.1.9'
  • 完整配置如下(只供参考),详见demo:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.tozmart.tozsdkdemos2"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    implementation 'com.tozmart:tozmartSDK-s2:1.1.9'
}

2. 配置AndroidManifest

  • 权限申请
    TozSDK使用到了网络权限,需要在AndroidManifest.xml文件中申请:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 完整配置如下(只供参考),详见demo:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tozmart.tozsdkdemos2">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

3. 初始化SDK

  • 新建一个您自己的Activity类(demo中是MainActivity.class),并在该类的onCreate()方法中初始化TozSDK:

注意:在初始化SDK之前要先配置CustomerInfo参数

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 配置必需参数
    private CustomerInfo customerInfo = new CustomerInfo();
    customerInfo.setCorId("100"); // 分配的公司帐户id,String型  
    customerInfo.setUserId("10000"); // 用户id,String型  
    customerInfo.setUserName("test"); // 量体用户的名字,String型  
    customerInfo.setUserHeight(180.f); // 量体用户的身高,单位是cm,float型  
    customerInfo.setUserWeight(75.f); // 量体用户的体重,单位是kg,float型  
    customerInfo.setUserGender("1"); // 量体用户的性别,男性是“1”,女性是“0”,String型  
    // 初始化SDK
    TozSDK.init(this, customerInfo);
    ...
}

二、使用SDK提供的组件和接口

1. 使用TozCameraView组件(该组件中集成了量体接口)

  • 先将TozCameraView添加到你的layout布局文件中:
<com.tozmart.toz_sdk.widge.TozCameraView
    android:id="@+id/camera"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:tozLineColor="@android:color/white" />
属性 说明
tozLineColor color 更改cameraView边界线的颜色
  • 确保在activity文件中的onResume、onPause和onDestroy中添加了如下代码
@Override
protected void onResume() {
    super.onResume();
    // 打开相机
    cameraView.start();
}

@Override
protected void onPause() {
    super.onPause();
    // 关闭相机
    cameraView.stop();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    // 回收内存
    cameraView.destroyView();
}
  • 拍摄照片并量体
    只需调用TozCameraView.process()即可完成拍照和量体功能,监听OnProcessListener并在回调中处理结果:
// 添加拍照和量体监听
cameraView.setOnProcessListener(new OnProcessListener() {
    @Override
    public void onPhotoTaken(Bitmap bitmap, boolean isFront) {
        // bitmap是所拍摄的照片;isFront为true表示返回的是正面照,为false表示返回的是侧面照
    }
    @Override
    public void onProcessSuccess(ImageProcessResponseBean responseBean) {
        if (responseBean.getErrNum() > 0) {
            // 拍摄的照片不符合要求,需重拍
        } else {
            // 量体成功
        }
    }
    @Override
    public void onProcessFailed(String msg, int code) {
        // 量体失败
    }
});

返回的ImageProcessResponseBean结构如下:

参数名 类型 说明
ErrNum int 错误信息的个数
ErrInfo List< ImageProcessErrorWarnInfo> 错误信息
  • 其他可自定义功能

    1. 设置指示线的颜色:
      cameraView.setLineColor(R.color.white);

    2. 设置上下指示线的位置:
      cameraView.setLinePositionRatio(0.15f, 0.95f);

    3. 隐藏或显示指示线:
      cameraView.showLineView();
      cameraView.hideLineView();

    4. 切换指示背景显示:
      cameraView.switchTipMask(true, true);
      所需的两个参数如下:

参数 参数类型 说明
showFront boolean true表示拍摄正面的背景,为false表示侧面
showBody boolean true表示显示人体模型,为false表示显示鞋子

2. 使用TozSensorTipView

  • 先将TozSensorTipView添加你的layout布局文件中:
<com.tozmart.toz_sdk.widge.TozSensorTipView
    android:id="@+id/sensorView"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_centerInParent="true"
    app:tozSensorBallColor="@android:color/holo_green_light"
    app:tozSensorBallErrorColor="@android:color/holo_red_light"
    app:tozSensorCircleLineWidth="10"
    app:tozSensorInCircleColor="@android:color/holo_green_light"
    app:tozSensorInCircleErrorColor="@android:color/holo_red_light"
    app:tozSensorOutCircleColor="@android:color/white"/>

注:使用该View时只可将layout_width和layout_height设置成固定的值,如150dp(不可设置成match_parent或者wrap_content),并且两个值要相等,否则无法正确显示。

属性 说明
tozSensorBallColor color 更改当传感器指示正确时中间圆球的颜色
tozSensorBallErrorColor color 更改当传感器指示错误时中间圆球的颜色
tozSensorCircleLineWidth int 更改圆环的粗细
tozSensorInCircleColor color 更改当传感器指示正确时内圆环的颜色
tozSensorInCircleErrorColor color 更改当传感器指示错误时内圆环的颜色
tozSensorOutCircleColor color 更改外圆环的颜色
  • 确保在activity文件中的onResume和onPause中添加了如下代码
@Override
protected void onResume() {
    super.onResume();
    // 注册传感器监听
    sensorView.registerSensor();
}

@Override
protected void onPause() {
    super.onPause();
    // 取消传感器监听
    sensorView.unregisterSensor();
}
  • 使用TozSensorTipView反馈手机姿势是否正确
// 监听传感器,判断手机的姿势是否符合拍照要求
sensorView.setOnSensorListener(new OnSensorListener() {
    @Override
    public void onSensorOk() {
        // 手机姿势正确,可以进行拍照
    }

    @Override
    public void onSensorError() {
        // 手机姿势错误,提示用户进行调整
    }
});

3. 直接调用量体接口

  • 如果想通过直接提供照片(从相册里选择照片)就获取量体结果,可以调用该接口
ImageProcess.process(frontImage, sideImage, 
new LoadDataCallBack() {
        @Override
        public void onResponseSuccess(ImageProcessResponseBean response) {
            if (response.getErrNum() > 0) {
                // 拍摄的照片不符合要求,需重拍
            } else {
                // 量体成功
            }
        }
        @Override
        public void onResponseFailed(String msg, int code) {
            // 量体失败
        }
        @Override
        public void onNullResponse() {
            // 暂时忽略
        }
    }, true);

该接口共需4个参数:

参数 参数类型 作用
frontImage Bitmap 后台处理所需的正面照片
sideImage Bitmap 后台处理所需的侧面照片
callback LoadDataCallBack 接口回调
isShowDialog boolean 是否显示加载对话框
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页