• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 媒体子系统变更说明
2
3## cl.multimedia.1 Camera Kit缩略图回调返回值类型变更
4
5**访问级别**
6
7系统接口
8
9**变更原因**
10
11用户在连拍后,点击缩略图,所显示的由系统快速上报轻量处理的第一阶段图片与缩略图无法正确对应。
12这是由于第一阶段图片回调顺序不一定正确,导致处理回调时第一阶段图片无法和缩略图正确对应。
13
14**变更影响**
15
16该变更为不兼容变更。
17
18变更前:通过on('quickThumbnail')监听快速缩略图输出事件,回调返回image.PixelMap对象。
19
20变更后:通过on('quickThumbnail')监听快速缩略图输出事件,回调返回QuickThumbnail对象。
21
22**起始 API Level**
23
2410
25
26**变更发生版本**
27
28从OpenHarmony SDK 5.0.0.56 版本开始。
29
30**变更的接口/组件**
31
32@ohos.multimedia.camera下的
33- on(type: 'quickThumbnail', callback: AsyncCallback\<image.PixelMap>): void
34- off(type: 'quickThumbnail', callback?: AsyncCallback\<image.PixelMap>): void
35
36**适配指导**
37
38应用在取用框架返回的回调信息时需要按照QuickThumbnail的类来取用快速缩略图相关信息:
39
40QuickThumbnail中包括两个字段,分别为:
41- captureId:number,缩略图所对应的captureId。
42- thumbnailImage:image.PixelMap,上报的缩略图。
43
44使用方式例如:
45
46 private async quickThumbnail(err, quickThumbnail: camera.QuickThumbnail): Promise\<void> {
47    if (!quickThumbnail?.thumbnailImage) {
48        hilog.info(TAG, 'SHOT2SEE quickThumbnail thumbnailImage is null.');
49      return;
50    }
51    if (!quickThumbnail?.captureId) {
52      hilog.info(TAG, 'SHOT2SEE quickThumbnail captureId is null.');
53      return;
54    }
55    hilog.info(TAG, 'SHOT2SEE quickThumbnail success.');
56    if (err) {
57      const error = `Camera_quickThumbnail Error: ${err.code}}`;
58      hilog.error(TAG, error);
59      const pic: PictureCameraDuration = PictureCameraDuration.getInstance();
60      pic.setSavePictureFailReason(error);
61      workerCallback.onSavePictureFailed(pic.getPictureId(), pic.getPictureUri(), CaptureFailedType.THUMBNAIL, error);
62      return;
63    }
64    PictureCameraDuration.getInstance().setQuickThumbEndTime(new Date().getTime());
65    let mediaLibraryService = await modulesManager.getMediaLibrary();
66    let resPixelMap: image.PixelMap =
67      await mediaLibraryService.getQuickThumbnailWatermarkFilter(quickThumbnail.thumbnailImage, this.isInBurstCapture);
68
69    try {
70      workerCallback.quickThumbnail(resPixelMap, this.isDeferEnabled, quickThumbnail.captureId);
71      if (this.mPickerInfo.isPicker) {
72        const pickerService = await modulesManager.getPickerFileService();
73        pickerService.resetPickerBuffer();
74        return;
75      }
76      if (!this.isDeferEnabled) {
77        const mediaLibrary = await modulesManager.getMediaLibrary();
78        await mediaLibrary.saveThumbnail(quickThumbnail.thumbnailImage, this.savePhotoFormat); // 单段式需要保存
79      }
80    } catch (e) {
81      const error = `onQuickThumbnail save error: ${JSON.stringify(e)}.`;
82      hilog.error(TAG, error);
83      const pic: PictureCameraDuration = PictureCameraDuration.getInstance();
84      const errorReason = pic.getSavePictureFailReason();
85      workerCallback.onSavePictureFailed(pic.getPictureId(), pic.getPictureUri(), CaptureFailedType.THUMBNAIL, errorReason);
86      PictureCameraDuration.getInstance().setIsCaptureSuccess(false);
87      PictureCameraDuration.getInstance().setPhotoCaptureFailReason(error);
88      workerCallback.onUserBehaviorPhotoInterval();
89    } finally {
90      quickThumbnail?.thumbnailImage?.release();
91      resPixelMap?.release();
92    }
93  }
94