华为教育中心是华为推出的官方教育平台,旨在为广大消费者提供快捷高效的在线学习通道。教育中心联合国内优质教育合作伙伴,上线了丰富的课程资源,充分满足消费者全年龄段的多方位学习需求。EduKit SDK是华为教育中心提供给开发者接入的接口,能够实现课程批量上传、课程信息同步、订购关系同步和学情信息同步,提高课程上传效率,确保教育中心和开发者向用户提供一致的学习服务。
在本次Codelab中,您将使用已经创建好的Demo Project实现对华为教育中心的API调用,通过Demo Project你可以创建一个简单的课程。
集成EduKit SDK能力,需要完成以下准备工作
1、登录AppGallery Connect后,进入用户与访问:
2、创建API客户端并下载
3、将下载的"xxx.json"文件重命名为credential.json并移至MAVEN工程的资源目录。
本次Codelab中您可调用EduKti SDK的API构造一个简单的课程,然后提交至教育中心服务器,详细步骤如下:
AGCClient.initialize(clientName,
AGCParameter.builder()
.setCredential(CredentialParser.toCredential(
CreateCourseWithoutLesson.class.getClassLoader().getResource("credential.json").getPath()))
.build());
List<String> tagIds = new ArrayList<>();
List<String> categoryIds = new ArrayList<>();
List<String> countryCodes = new ArrayList<>();
categoryIds.add("214338295549722624");
tagIds.add("243338018147009280");
countryCodes.add("CN");
CourseEditMetaData courseEditMetaData = CourseEditMetaData.builder()
.defaultLangSet("zh-CN")
.nameSet("课程一")
.tagIdsSet(tagIds)
.validityUnitSet(1)
.includeLessonsSet(false)
.eduappPurchasedSet(true)
.distNotifyUrlSet("https://test.com")
.sourceNameSet("my app")
.eduappUsedSet(true)
.sellingModeSet(3)
.categoryIdsSet(categoryIds)
.typeIdSet(1000)
.build();
CourseMetaData courseMetaData =
CourseMetaData.builder().courseEditMetaDataSet(courseEditMetaData).countryCodesSet(countryCodes).build();
List<ImageFileInfo> introduceImageFileInfoSet = new ArrayList<>();
List<MediaLocalizedData> mediaLocalizedDataList = new ArrayList<>();
ImageFileInfo cover = ImageFileInfo.builder()
// 课程封面 jpg、png格式,图片分辨率为1280*720像素(宽*高),单张图片最大为2MB
.pathSet(CreateCourseWithoutLesson.class.getClassLoader().getResource("cover.PNG").getPath())
.resourceTypeSet(CommonConstants.ResourceType.COURSE_HORIZONTAL_COVER)
.build();
CourseLocalizedData courseLocalizedData = CourseLocalizedData.builder()
.nameSet("课程一")
.shortDescriptionSet("SDK课程简介")
.fullDescriptionSet("SDK课程详细介绍")
.coverImageFileInfoSet(cover)
.build();
// 视频分辨率(宽*高)为1920*1080或1280*720像素,大小要求1GB以内
MediaFileInfo media = MediaFileInfo.builder()
.fileTypeSet(CommonConstants.MediaFileType.MP4)
.pathSet(CreateCourseWithoutLesson.class.getClassLoader().getResource("test.mp4").getPath())
.build();
MediaLocalizedData mediaLocalizedData = MediaLocalizedData.builder()
.meidaFileInfoSet(media)
.ordinalSet(1)
.mediaTypeSet(CommonConstants.MediaType.COURSE_VIDEO_FILE)
.mediaLenSet(30)
.widthSet(1080)
.heigthSet(720)
.build();
mediaLocalizedDataList.add(mediaLocalizedData);
CourseMultiLanguageData courseMultiLanguageData = CourseMultiLanguageData.builder()
.courseLocalizedDataSet(courseLocalizedData)
.mediaLocalizedDataListSet(mediaLocalizedDataList)
.languageSet("zh-CN")
.build();
List<CourseMultiLanguageData> courseLocalizedDataList = new ArrayList<>();
courseLocalizedDataList.add(courseMultiLanguageData);
List<ProductPrice> productPricesSet = new ArrayList<>();
ProductPrice productPrice = ProductPrice.builder().priceSet(1.0).countryCodeSet("CN").priceTypeSet(2).build();
productPricesSet.add(productPrice);
Course.builder()
.courseMetaDataSet(courseMetaData)
.courseMultiLanguageDataListSet(courseLocalizedDataList)
.productPricesSet(productPricesSet)
.progressCallbackSet(new ProgressCallbackImpl()::onProgressChanged)
.build();
CourseCreateRequest courseCreateRequest = AGCEdukit.getInstance(clientName).getCourseCreateRequest(course);
CompletableFuture<CourseCreateResponse> future = courseCreateRequest.commit();
future.thenAccept(courseCreateResponse -> {
if (courseCreateResponse.getResult().getResultCode() == CommonErrorCode.SUCCESS) {
// 课程创建成功后,需要在本地保存返回的courseId和courseEditId
// 保存课程Id与您的课程的关联关系
// 保存课程版本ID,如果审核没有通过,可以使用该课程版本ID继续更新
} else {
LOGGER.error("Create course response : {}", courseCreateResponse);
// 根据错误码进行异常场景处理
}
});
干得好,您已经成功完成了Codelab并学到了:
教育中心服务的相关API介绍请参见API索引。
本Codelab中所用demo源码下载地址如下: