什么是教育中心服务

华为教育中心是华为推出的官方教育平台,旨在为广大消费者提供快捷高效的在线学习通道。教育中心联合国内优质教育合作伙伴,上线了丰富的课程资源,充分满足消费者全年龄段的多方位学习需求。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构造一个简单的课程,然后提交至教育中心服务器,详细步骤如下:

  1. 调用AGCClient.initialize初始化AGCClient,其中clientName是自定义的
    AGCClient.initialize(clientName, AGCParameter.builder() .setCredential(CredentialParser.toCredential( CreateCourseWithoutLesson.class.getClassLoader().getResource("credential.json").getPath())) .build());
  2. 构造课程数据
    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();
  3. 调用CourseCreateRequest::commit方法将课程提交审核
    CourseCreateRequest courseCreateRequest = AGCEdukit.getInstance(clientName).getCourseCreateRequest(course); CompletableFuture<CourseCreateResponse> future = courseCreateRequest.commit();
  4. 根据返回结果做响应的处理
    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源码下载地址如下:

源码下载

已复制代码