伯索开放平台
首页API文档SDK文档伯索官网
首页API文档SDK文档伯索官网
  1. Android版本
  • 直播SDK接入
    • WEB版本
      • WEB版本
    • iOS版本
      • IOS版本
    • Android版本
      • Android版本
  • 微课SDK接入
    • WEB版本
      • WEB版本
    • iOS版本
      • IOS版本
    • Android版本
      • Android版本
  • 批注SDK接入
    • Web版本
      • Web版本
    • iOS版本
      • IOS版本
    • Android版本
      • Android版本
  • 签名加密
    • 签名加密
  • 回调接口接入流程
    • 回调接口接入流程
  • 文档解析接入方式
    • 文档解析接入方式
  • 历史课堂接入方式
    • 历史课堂接入方式
  • 历史课堂转视频接入方式
    • 历史课堂转视频接入方式
  • 历史课堂/微课下载接口
    • 历史课堂/微课下载接口
  1. Android版本

Android版本

一.在项目的根build.gradle文件中添加
mven{ url'https://nexus.plaso.cn/repository/maven-public/' },
示例如下
buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://nexus.plaso.cn/repository/maven-public/' }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://nexus.plaso.cn/repository/maven-public/' }
    }
}
在app的build.gradle中添加依赖
implementation "com.plaso.zypizhu:ZyPizhuSDK:0.0.12",
示例如下
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation "com.plaso.zypizhu:ZyPizhuSDK:0.0.12"
}
在app的build.gradle中添加
compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
},
示例如下
android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
    defaultConfig {
        applicationId "cn.plaso.pizhusdkaccessdemo"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}
点击 Sync Now。
二、如何启动批注功能,示例如下
private void start() {
    Intent intent = new Intent(MainActivity.this, CheckHomeWorkActivity.class);
    try {
        JSONArray jsonArray = new JSONArray();
        jsonArray.put("https://download.plaso.cn/static/sdk/websdkdemo/imgs/zuoye_demo1.jpeg");
        jsonArray.put("https://download.plaso.cn/static/sdk/websdkdemo/imgs/zuoye_demo2.jpeg");
        jsonArray.put("https://download.plaso.cn/static/sdk/websdkdemo/imgs/zuoye_demo3.jpg");
        //图片路径,以json数据传入
        intent.putExtra(CheckHomeWorkActivity.IMAGE_URLS, jsonArray.toString());
        intent.putExtra(CheckHomeWorkActivity.APP_ID, appId);
        intent.putExtra(CheckHomeWorkActivity.EXERCISE_ID, exerciseId);
intent.putExtra(CheckHomeWorkActivity.MULTI_LABEL,true);//是否生成多份作业
intent.putExtra(CheckHomeWorkActivity.SHOW_EVALUATE_DIALOG, true);//是否显示评价弹窗,true显示false不显示

        //鉴于有结果返回,因此使用startActivityForResult
        startActivityForResult(intent, REQUEST_CODE);
    } catch (Exception e) {
        e.toString();
    }
}
三、返回结果,示例如下
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        try {
            JSONArray jsonArray= new JSONArray(data.getStringExtra(CheckHomeWorkActivity.RETURN_RESULTS));
            if(jsonArray==null || jsonArray.length()==0){
                return;
            }
            int length=jsonArray.length();
            for (int index=0;index<length;index++) {
                String record = jsonArray.getJSONObject(index).getString("recordId");
                int accuracy= jsonArray.getJSONObject(index).getInt("accuracy");
                int grade = jsonArray.getJSONObject(index).getInt("grade");
                Log.e("测试", "返回数据 " + record + "   " + accuracy + "   " + grade);
                String path = generateRecordResult(appId, record);
                Log.e("测试路径", path);
            }
        } catch (Exception e) {
            e.toString();
        }
    }
}
四、返回的结果根据record和appId,生成结果链接
五、必须实现SignatureUtil.SignatureInterface接口,参考如下
@Override
public String getSignature() {
    String query = "appId=" + appId + "&beginTime=" + (System.currentTimeMillis() / 1000) + "&exerciseId=" + exerciseId + "&validTime=3600";
    try {
        query = query + "&signature=" + encrypt(query);
    } catch ( Exception e) {
        Log.e("测试", e.toString());
    }
    return query;
}
六、获取签名的参考方法
private String encrypt(String datas) throws Exception {
    String algorithm = "HmacSHA1";
    Charset charset = Charset.forName("UTF-8");
    byte[] data = SELF_KEY.getBytes(charset);
    SecretKeySpec secretKey = new SecretKeySpec(data, algorithm);
    Mac mac = Mac.getInstance(algorithm);
    mac.init(secretKey);
    byte[] rst = mac.doFinal(datas.getBytes(charset));
    return new BigInteger(1, rst).toString(16).toUpperCase();
}
encrypt(query)获取签名请参考此处。
7、完整示例代码参考demo源码
请点击下载
修改于 2025-03-20 06:13:43
上一页
Android版本
下一页
签名加密
Built with