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

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

相关推荐
阿华的代码王国13 分钟前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼13 分钟前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy16 分钟前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
zhanshuo19 分钟前
在鸿蒙里优雅地处理网络错误:从 Demo 到实战案例
harmonyos
zhanshuo22 分钟前
在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
harmonyos
ZXT31 分钟前
promise & async await总结
前端
Jerry说前后端31 分钟前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天39 分钟前
A12预装app
linux·服务器·前端
7723891 小时前
解决 Microsoft Edge 显示“由你的组织管理”问题
前端·microsoft·edge
烛阴1 小时前
前端必会:如何创建一个可随时取消的定时器
前端·javascript·typescript