- 博客(364)
- 收藏
- 关注
原创 【HarmonyOS NEXT】【音频和视频】
WebView策略:目前不支持主动设置流类型,由WebView根据是否有音频输入自动设置为Music或VoiceCommunication类型(有播放流、无录制流,则默认为Music类型;若应用以静音状态开始播放音频(或视频),并且希望静音阶段不影响其他音频,当后续解除静音的时候,再以正常策略申请音频焦点,则可以调用静音并发播放模式的相关接口。(1)应用在启动播放或录制之前,需要根据音频的用途,使用合适的音频流类型,即正确指定StreamUsage或SourceType;接口,设置默认发声设备。
2025-01-07 10:42:50
979
原创 【HarmonyOS NEXT】【图形游戏】如何主动关闭CPU访问窗口缓冲区数据降低功耗
当前操作系统的窗口缓冲区默认使用CPU访问,这样具有较好的兼容性,但GPU访问窗口缓冲区的能效通常更优,使用CPU访问的能效开销较大。当开发者确定应用无需CPU访问时可手动关闭该能力,提高应用能效。如果开发者确认应用不需要使用CPU访问窗口缓冲区数据,应用可在首次获取窗口句柄 (OnSurfaceCreatedCB) 时关闭CPU访问能力,由硬件平台选择最佳的图像格式以提高能效降低功耗。通常自绘制应用在生产缓冲区内容时,会默认使用CPU访问能力。此时由于CPU访问缓冲区效率较低,性能开销较大。
2025-01-07 10:41:53
130
原创 【HarmonyOS NEXT】【编译构建】文件没有默认导出,但可以默认导入的场景说明
此场景编译时不报错,原因是编译时的配置文件中开启了allowSyntheticDefaultImports选项,不仅允许没有默认导出的声明文件让另一文件默认导入,还兼容从那些使用 CommonJS(require)导出模块的库中导入默认导出(default exports),例如可以import default默认导入类似react这样的三方库。声明文件没有默认导出,使用 import xxx from ‘module’ 在另一文件默认导入,编译不报错。
2025-01-07 10:40:04
202
原创 【HarmonyOS NEXT】DevEco Studio
检查napi_init.cpp文件的RegisterEntryModule函数中是否调用了napi_module_register函数。检查napi_init.cpp文件的Init函数中是否初始化了napi_property_descriptor变量。修改生成NAPI函数的函数参数或返回值类型。
2024-12-31 10:12:10
382
原创 【HarmonyOS NEXT】打开工程时左侧目录树不显示
modules文件夹下的iml文件定义了详细的工程模块结构信息,modules.xml定义了工程模块结构文件的位置。删除modules文件夹后根据modules.xml无法找到对应的iml文件。当用户删除工程目录下的.idea/modules文件夹或者.idea/modules文件夹不存在时,如下图所示。需要关闭工程,在文件管理器中删除工程的modules.xml,重新通过IDE打开工程,工程目录树才可以恢复。重新打开工程,左侧目录树不显示,如下图所示。
2024-12-31 10:11:27
319
原创 【HarmonyOS NEXT】如何保存网络图片到相册
可以使用安全控件中的保存控件,免去权限申请和权限请求等环节,获得临时授权,保存对应图片。需要申请权限:ohos.permission.INTERNET。
2024-12-31 10:10:56
227
原创 【HarmonyOS NEXT】如何同时获取屏幕方向orientation和系统规避区avoidAreaChange信息
接口监听窗口系统规避区域的变化,在callback中获取avoidAreaChange信息,并通过Display实例获取屏幕方向orientation等信息。以折叠屏形态变化时触发为示例,可以在EntryAbility.ets文件中通过。
2024-12-24 10:45:40
292
原创 【HarmonyOS NEXT】如何解决Finalizer方法中执行JS代码崩溃问题
Finalizer中,只进行和JS对象生命周期绑定的原生对象的清理,不调用JSVM API。如需实现JS对象生命周期结束后执行一段JS代码的功能,可在Finalizer方法中,将相关代码的执行加入到外层事件循环队列中,等待下次事件循环时调用相关代码,从而实现时间序列上的先后顺序。目前JSVM注册的Finalizer方法中不允许JS代码的执行,在上述崩溃调用栈中,Finalizer方法中调用了OH_JSVM_CallFunction执行了JS代码。
2024-12-24 09:54:49
213
原创 【HarmonyOS NEXT】Deveco Studio_应用调试
导致该问题的可能原因为电脑GPU不兼容,或在云桌面的场景下使用DevEco Studio。项,关闭窗口并重启DevEco Studio即可。在DevEco Studio中。,在弹出的窗口中搜索。
2024-12-20 16:11:57
164
原创 【HarmonyOS NEXT】Deveco Studio_编译构建7
用下面命令查看es2abc和动态库文件的签名组信息,如果两个文件,一个有签名信息,一个没有签名信息,或者都有签名信息,但是签名信息中属性’TeamIdentifier’的值是不一样的,那就说明问题是签名组不一致导致的,可以使用"解决方案"提供的方式处理。进入sdk中es2abc所在目录:[DevEco-Studio安装目录]/Contents/sdk/default/openharmony/ets/build-tools/ets-loader/bin/ark/build-mac/bin。
2024-12-20 16:11:15
464
原创 【HarmonyOS NEXT】Deveco Studio_编译构建6
由于获取SDK的方式是从网络上下载,mac的安全设置会给可执行文件添加来源于网络的标识(com.apple.quarantine),导致无法执行。被编译文件中某函数内部有大量object literal, array iteral和string,导致item的数量超过了上限(65536)。常见于图片中的两种错误同时出现,且仅在Linux系统出现,win/mac不报错。执行命令删除可执行文件的com.apple.quarantine标识。排查相关文件,将存在上述原因的函数进行拆分。解决引用中的大小写问题。
2024-12-20 16:08:19
252
原创 【HarmonyOS NEXT】Deveco Studio_编译构建5
通过上述步骤,您可以定位和解决 unknown type name 问题。在使用 CMake、Ninja 和 LLVM 编译 C++ 项目时,确保所有头文件正确包含并设置正确的头文件路径是关键。如果问题依旧存在,详细的编译输出日志通常能提供更多线索,帮助您找到具体的原因。在编译HarmonyOS C++ 项目时,遇到"unknown type name"错误通常表示编译器无法识别某个类型。这可能是因为类型未定义、未包含相关的头文件,或者包含的头文件路径不正确。或手动删除模块下.cxx目录。
2024-12-20 16:07:26
276
原创 【HarmonyOS NEXT】Deveco Studio_编译构建4
如果文件中不包含export关键字,该文件将视作全局命名空间的一部分,相当于两个文件实质为同一个文件。请添加export关键字使其成为独立命名空间,或者将声明的内容添加到自定义的命名空间中。部分三方包由npm迁移而来,其开发环境为node, 其中的require语法arkcompiler不完全支持,出现运行报错情况。HSP会生成.d.ts声明文件,由于原始文件中未注明类型,导致生成的.d.ts文件缺少类型注解。报错位置添加类型注解。
2024-12-20 16:06:22
265
原创 【HarmonyOS NEXT】Deveco Studio_编译构建3
在使用 CMake、Ninja 和 LLVM 编译 C++ 项目时,确保所有源文件和库文件正确包含在项目中,并正确配置编译和链接选项是关键。如果问题依旧存在,详细的编译和链接输出日志通常能提供更多线索,帮助您找到具体的原因。这通常是因为源文件没有正确编译或链接,或者因为缺少必要的库文件。CMake 和 Ninja 通常会处理这个问题,但在手动编译时可能会出现问题。可使用sdk中内置的nm工具:sdk/default/openharmony/native/llvm/bin/llvm-nm。
2024-12-20 16:04:57
338
原创 【HarmonyOS NEXT】Deveco Studio_编译构建2
A:proxyData标识模块提供的数据代理列表,只允许entry和feature配置,不同的proxyData中配置的URI不可重复。遇到此问题,检查模块间是否配置了相同uri的proxyData。签名用的公私钥对不匹配,使用私钥签名后,用公钥验签失败。使用高版本JDK生成密钥对(p12),再使用低版本的JDK执行签名命令时,会因为不兼容导致解析p12失败,从而签名失败。A:请检查当前使用的JDK版本和生产密钥对使用的JDK版本,使用版本匹配的JDK执行签名命令。证书文件解析失败,找不到证书的OID。
2024-12-20 16:03:46
330
原创 【HarmonyOS NEXT】Deveco Studio_编译构建1
比如将har模块产物里的so文件拷贝到entry模块的libs目录下,这时har模块里有一个libhar.so,entry模块里也有一个libhar.so,再配置entry依赖har,构建entry就会出现报错。基于上面的例子,可以在entry的build-profile.json5中添加配置select选中har模块中的so文件,package选中包名为“har”的模块, include选中“libhar.so”文件。在引用’xxx’目录时,明确写明引用到’xxx/Index’文件。
2024-12-20 15:58:38
783
原创 【HarmonyOS NEXT】投播后支持哪些控制功能
投播成功后,目前在本端支持的功能有:播放、暂停、下一首/曲、上一首/曲、快进、快退、进度控制、音量控制。对端大屏设备支持的功能有:播放、暂停、下一首/曲、上一首/曲、快进、快退、进度控制。暂不支持清晰度切换、音轨切换、倍速、弹幕等功能。
2024-12-17 14:59:50
152
原创 【HarmonyOS NEXT】投播成功后,本端应用内该如何显示
应用在感知到设备连接成功后,本端的客户端界面一般要适配为遥控器状态,以达成更好的投播体验。
2024-12-17 14:58:44
137
原创 【HarmonyOS NEXT】应用内如何进行输出设备的选择
系统当前未直接提供切换输出设备的接口,但是提供了投播组件来支持设备的切换。开发者可以集成AVCastPicker嵌入在应用界面内实现设备切换。AVCastPicker支持一些自定义能力来满足应用对界面一致性的诉求。
2024-12-17 14:57:08
212
原创 【HarmonyOS NEXT】如何自定义投播组件
图标默认颜色、选中后的颜色、组件深浅色的适配、以及组件内元素的自定义。实现步骤,可以参考链接。
2024-12-17 14:56:05
171
原创 【HarmonyOS NEXT】系统是否支持DLNA设备投屏
系统当前同时支持Cast+协议和DLNA协议的设备进行资源投播。应用可以在创建AVSession的时候,传入需要发现和过滤的协议类型,来匹配应用期望的投屏设备。参考开发步骤中的第二步:设置媒体资源信息。
2024-12-17 14:55:10
214
原创 【HarmonyOS NEXT】如何做到连续投播
对于切换剧集(同一电视剧不同集或预告、花絮等)的场景,为了方便用户,此时不应该结束投播,应获取到下一集的播放URL,继续自动投播下一集。应用在收到上一资源结束的回调,或者判断播放进度距离结束还有较短时间内(比如5秒),需要准备下一个资源,以达成连续投播的效果。
2024-12-17 14:54:20
87
原创 【HarmonyOS NEXT】如何在播控中心显示歌词
开发者需要在创建AVSession后,把完整的歌词内容设置到AVMetadata中。歌词格式为标准的lyric格式,暂不支持其他格式的歌词类型。
2024-12-17 14:53:33
177
原创 【HarmonyOS NEXT】为什么接入播控后,播控中心部分按钮是灰色的,不可点击
系统的播控中心会根据应用是否注册对应的控制命令,在界面中呈现对应的元素是否可以控制。应用根据自己支持的能力,按需注册;推荐使用支持播控中心内的元素,以达成较好的体验。
2024-12-17 14:41:52
176
原创 【HarmonyOS NEXT】应用如何更新进度条
应用如果期望在播控中心内支持进度显示和控制,需要将资源的时长信息设置给AVSession,同时需要注册seek的回调接口来响应系统的进度控制。应用更新进度条,可以在倍速、播放状态发生变化时更新,不需要实时更新,可以节约一些系统资源。
2024-12-17 14:40:55
173
原创 【HarmonyOS NEXT】如何响应播控中心的播放模式切换
应用在创建AVSession后,要监听系统切换播放模式的接口来处理播控中心的控制命令。目前支持四种播放模式:顺序播放,随机播放,单曲循环,列表循环。应用在收到回调时,会同时获取一个当前的播放模式,应用可以自行决定下一个播放模式,然后把新的播放模式设置给AVSession。
2024-12-17 14:39:37
213
原创 【HarmonyOS NEXT】在display.on(‘change‘)监听回调中,无法使用Window实例获取更新后的窗口大小
由于旋转完后display的更新时间早于window的更新时间(display旋转时直接宽高互换,提前可预知;window要等ArkUI布局完成才能确定窗口大小,耗时长),故在display触发变化时获取窗口信息会存在时序问题(窗口信息还未更新完成,此时使用Window实例获取到的还是原来的宽高)。应用可以通过display.on(‘change’)接口监听显示设备变化,在callback中通过Display实例获取屏幕的width、height、orientation等信息。
2024-12-16 14:56:13
227
原创 【HarmonyOS NEXT-FAQ】ArkTS
ArkTS 正则对于pattern为非基本多语言平面(Basic Multilingual Plane, BMP)的字符且不带/u参数时无法匹配,若需要匹配非BMP字符,需带上/u参数。ArkTS对于该正则无法匹配,因此不会替换。
2024-12-16 14:49:48
138
原创 构建第一个ArkTS应用
,在main_pages.json文件中的“src”下配置第二个页面的路由“pages/Second”。页面路由router根据页面url找到目标页面,从而实现跳转。在默认页面基础上,我们添加一个Button组件,作为按钮响应用户点击,从而实现跳转到另一个页面。参照第一个页面,在第二个页面添加Text组件、Button组件等,并设置其样式。在第一个页面中,跳转按钮绑定onClick事件,点击按钮时跳转到第二页。在第二个页面中,返回按钮绑定onClick事件,点击按钮时返回到第一页。配置第二个页面的路由。
2024-12-10 19:32:36
719
原创 安装DevEco Studio
DevEco Studio开发环境诊断项包括电脑的配置、网络的连通情况、依赖的工具是否安装等。如果检测结果为未通过,请根据检查项的描述和修复建议进行处理。为了您开发应用/元服务的良好体验,DevEco Studio提供了开发环境诊断的功能,帮助您识别开发环境是否完备。您可以在欢迎页面单击。如果您已经打开了工程开发界面,也可以在菜单栏单击。
2024-12-10 19:31:47
1120
原创 【HarmonyOS NEXT】示例代码-社交通信(通话服务)
本示例主要展示了Call Kit(通话服务)相关的功能 使用Call Kit、Push Kit、Image Kit等接口,实现了订阅'voipCallUiEvent'事件、上报音视频来电、上报通话状态变化等功能。
2024-11-06 10:13:01
352
原创 【HarmonyOS NEXT】示例代码-数据和文件(文件预览服务)
本示例展示了使用文件预览服提供的接入预览功能 需要使用文件预览服务接口@kit.PreviewKit。
2024-11-06 10:12:24
326
原创 【HarmonyOS NEXT】示例代码-天气服务
Weather Service Kit(天气服务)是鸿蒙生态下的一个数据提供服务, Weather Service Kit融合了多家气象行业TOPs供应商,提供专业、精准、稳定的超本地化天气数据服务, 开发者可以通过Weather Service Kit提供的开放能力获取天气数据。
2024-11-06 10:11:42
979
原创 【HarmonyOS NEXT】示例代码-通过Socket监听127.0.0.1实现跨进程通信
本示例通过Socket监听“127.0.0.1”实现跨进程通信。
2024-11-06 10:10:48
230
原创 【HarmonyOS NEXT】示例代码-可信应用服务
本示例向您介绍如何在应用中使用可信应用服务开发安全摄像头和安全地理位置功能。需要使用可信应用服务接口。
2024-11-05 15:49:11
442
原创 【HarmonyOS NEXT】示例代码-剪贴板控件
本示例使用PasteButton和@ohos.pasteboard实现剪贴板基本的复制粘贴功能。
2024-11-05 15:48:32
323
原创 【HarmonyOS NEXT】示例代码-基于crypto-js的加解密合集
本示例基于@ohos/crypto-js三方库,实现MD5、SHA、HMAC、PBKDF2、DES等多种算法的加解密。
2024-11-05 15:47:59
311
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人