【每日学点鸿蒙知识】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关键资产存储服务 在什么情况下会丢失?

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

相关推荐
lbb 小魔仙7 分钟前
【HarmonyOS实战】OpenHarmony + RN:自定义 useFormik 表单处理
react native·harmonyos
夏幻灵18 分钟前
HTML5里最常用的十大标签
前端·html·html5
果粒蹬i28 分钟前
【HarmonyOS】DAY7:鸿蒙跨平台 Tab 开发问题与列表操作难点深度复盘
华为·harmonyos
Mr Xu_32 分钟前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝35 分钟前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions44 分钟前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发44 分钟前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
王码码20351 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
小镇敲码人1 小时前
探索CANN框架中TBE仓库:张量加速引擎的优化之道
c++·华为·acl·cann·ops-nn
程序员猫哥_1 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html