【每日学点鸿蒙知识】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

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关键资产存储服务 在什么情况下会丢失?

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

相关推荐
excel6 小时前
ES6 中函数的双重调用方式:fn() 与 fn\...``
前端
可乐爱宅着6 小时前
全栈框架next.js入手指南
前端·next.js
你的人类朋友7 小时前
什么是API签名?
前端·后端·安全
会豪9 小时前
Electron-Vite (一)快速构建桌面应用
前端
中微子9 小时前
React 执行阶段与渲染机制详解(基于 React 18+ 官方文档)
前端
唐某人丶9 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
中微子9 小时前
深入剖析 useState产生的 setState的完整执行流程
前端
遂心_10 小时前
JavaScript 函数参数传递机制:一道经典面试题解析
前端·javascript
小徐_233310 小时前
uni-app vue3 也能使用 Echarts?Wot Starter 是这样做的!
前端·uni-app·echarts
RoyLin10 小时前
TypeScript设计模式:适配器模式
前端·后端·node.js