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关键资产存储服务 在什么情况下会丢失?
应用卸载、用户删除、设备恢复出厂设置或刷机后,关键资产均会被销毁