自学内容网 自学内容网

【每日学点鸿蒙知识】AVCodec、SmartPerf工具、web组件加载、监听键盘的显示隐藏、Asset Store Kit

1、AVCodec 硬解咨询?

在做视频播放硬解适配,这是 demo:https://gitee.com/openharmony-sig/ohos_videocompressor/blob/master/videoCompressor/src/main/cpp/video/decoder/VideoDec.cpp

请问:

int32_t VideoDec::SetOutputSurface()
{
  return OH_VideoDecoder_SetSurface(vdec_, mutexManager->nativeWindow);
}

这里的 nativeWindow 是怎样获取或者创建的,在 demo 中似乎没有展示

在中间的JS层注册了一些回调,然后UI层上有Xcomponent出现时,会触发OnSurfaceCreateCB这个回调,然后存入单例类plugin_manager的一个OHNativeWindow *中,用的时候直接取就行了
可参考这个demo:https://gitee.com/kairen-13/AVCodecSample

2、HarmonyOS使用SmartPerf采集性能数据,用start命令加上特定包名就会直接结束?

使用SmartPerf采集性能数据,用start命令加上特定报名就会直接结束
SP_daemon -start -PKG yylx.danmaku.bili -c
理论上应该持续采集,但是1s就自动结束了,command exec finished!

执行start命令之后开始采集,command exe finish只是开始采集打印的一条log,实际并没有自动结束,直到执行 SP_daemon -stop 才结束采集,并生成对应csv文件路径,导出就可以查看这个区间内采集的数据

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/smartperf-guidelines-V5
![[【每日学点鸿蒙知识】24.10.02.png]]

3、web组件未加载出url内容来?

确定有没有配置ohos.permission.INTERNET网络访问权限。若是没有请在module.json5中设置requestPermissions属性值

"module": { "requestPermissions": [ {"name": "ohos.permission.INTERNET"} ] } 

若是网络访问权限已设置,加载页面还是未显示,检查domStorageAccess属性是否设置为true

4、InputMethodController.on(‘sendKeyboardStatus’)无法监听键盘的显示隐藏事件?

按照官方文档样例通过InputMethodController订阅软键盘相关事件,回调无法被触发
官方样例如下:

try {
  inputMethodController.on('sendKeyboardStatus', (keyboardStatus: inputMethod.KeyboardStatus) => {
    console.log(`Succeeded in subscribing sendKeyboardStatus, keyboardStatus: ${keyboardStatus}`);
  });
} catch(err) {
  console.error(`Failed to subscribe sendKeyboardStatus: ${JSON.stringify(err)}`);
}

软键盘显示、隐藏时控制台无任何输出。

可选择以下任一方案:
方案一:
通过输入法框架模块(@ohos.inputMethod)来监听软键盘状态。
用InputMethodController实例的on(‘sendKeyboardStatus’)方法来监听,直接在inputMethodController.on(‘sendKeyboardStatus’, callback)的callback中处理。详细信息请参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inputmethod-V5

方案二:
通过窗口模块(@ohos.window)来监听软键盘状态。
用Window实例的on(‘keyboardHeightChange’)方法来监听软键盘高度,可以判断软键盘状态。
详细信息请参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5

示例代码如下:

let windowClass: window.Window | undefined = undefined;
try {
  window.getLastWindow(this.context, (err: BusinessError, data) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err));
      return;
    }
    windowClass = data;
    console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));

    windowClass.on('avoidAreaChange', (data) => {
      console.info('Succeeded in enabling the listener for system avoid area changes. type:' + JSON.stringify(data.type) + ', area: ' + JSON.stringify(data.area));
    });
  });
} catch (exception) {
  console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(exception));
}

5、Asset Store Kit关键资产存储服务 在什么情况下会丢失?

应用卸载、用户删除、设备恢复出厂设置或刷机后,关键资产均会被销毁


原文地址:https://blog.csdn.net/sjw890821sjw/article/details/144699698

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!