伯索开放平台
首页API文档SDK文档伯索官网
首页API文档SDK文档伯索官网
  1. 批注SDK接入
  • 快速入门
    • SDK简介
      • SDK简介
    • SDK支持的业务场景
      • SDK支持的业务场景
    • 产品特色
      • 产品特色
  • 产品指南
    • 实时课堂功能介绍
      • 实时课堂功能介绍
    • 微课功能介绍
      • 微课功能介绍
    • 作业批改功能介绍
      • 作业批改功能介绍
    • 上传课件功能介绍
      • 上传课件功能介绍
    • SDK后台功能介绍
      • SDK后台功能介绍
  • 最佳实践
    • 最佳实践
  • 接入流程说明
    • SDK对接标准流程说明
      • SDK对接标准流程说明
    • 基础概念说明
      • 基础概念说明
  • SDK帮助文档
    • 直播SDK接入
      • WEB版本
        • WEB版本
      • iOS版本
        • IOS版本
      • Android版本
        • Android版本
    • 微课SDK接入
      • WEB版本
        • WEB版本
      • iOS版本
        • IOS版本
      • Android版本
        • Android版本
    • 批注SDK接入
      • Web版本
        • Web版本
      • iOS版本
        • IOS版本
      • Android版本
        • Android版本
    • 签名加密
      • 签名加密
    • 回调接口接入流程
      • 回调接口接入流程
    • 文档解析接入方式
      • 文档解析接入方式
    • 历史课堂接入方式
      • 历史课堂接入方式
    • 历史课堂转视频接入方式
      • 历史课堂转视频接入方式
    • 历史课堂/微课下载接口
      • 历史课堂/微课下载接口
  • Open API帮助文档
    • Open API 主要功能
    • Open API集成常用场景
    • 数据字典
    • 接入须知
      • 调用流程
      • 在线调试
      • 通用错误码
    • 用户信息管理
      • 添加用户
      • 修改密码
      • 删除用户
      • 更新用户
      • 用户精确查询
      • 查询多个用户
      • 用户访问Token
      • 验证用户Token有效期
    • 教材包管理
      • 查询机构教材包
      • 查询教材包内教材
      • 向学生分发教材包
    • 实时课堂管理
      • 创建实时课堂
      • 创建实时课堂(班)
      • 更新实时课堂
      • 更新实时课堂(班)
      • 删除实时课堂
      • 查询实时课堂列表
      • 更新实时课堂下听众用户
      • 获取实时课堂监控地址
      • 控制单个学员是否可以回看单次课
      • 获取单个课堂的回看地址
      • 删除单个历史课堂
      • 获取课堂考勤数据
      • 获取历史课堂信息
      • 获取历史课堂观看数据
      • 获取课堂互动信息
      • 获取课堂列表(新)
      • 获取实时课堂旁听链接
    • 班级管理
      • 创建班级
      • 更新班级
      • 删除班级
      • 查询班级列表
      • 向班级中添加学生
      • 从班级中移除学生
      • 更换学生所在班级
      • 老师列表中查询机构分校学科
      • 根据班级获取获取班级详情和人员信息
    • 学情数据
      • 获取学生课堂明细数据
      • 获取学生巩固明细数据
      • 获取学生测验明细数据
      • 获取学生辅导明细数据
      • 获取学生积分明细数据
    • 商城管理
      • 获取商品详情
      • 获取商品列表
      • 获取分校自定义商品栏目列表
      • 订单查询
      • 订单详情查询
    • 作业管理
      • 查询学生作业列表
      • 查询老师作业列表
    • 测验管理
      • 查询机构测评列表
      • 获取测评统计
      • 查询机构测验列表
      • 获取测验明细
  • 产品更新记录
    • Open API 更新日志
    • SDK 更新日志
  • 常见问题
    • PPT制作事项
    • 课件常见问题与解决方法
    • 网络相关问题
    • 声音相关问题
    • 网络测速
  • 推荐
    • 浏览器推荐
    • 常见软件推荐
    • 教育硬件推荐
  1. 批注SDK接入

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源码
请点击下载
修改于 2023-11-14 09:40:04
上一页
IOS版本
下一页
Android版本
Built with