【HarmonyOS】鸿蒙中如何获取资源文件的指定类型 fd,string,Uint8Array,RawFileDescriptor

【HarmonyOS】鸿蒙中如何获取资源文件的指定类型 fd,string,Uint8Array,RawFileDescriptor

一、问题背景:
在这里插入图片描述

众所周知,在鸿蒙中的资源分为media和rawfile。两者的区别对标android工程一致,后者是其他类型文件,原始文件形式保存,不会被集成到resources.index文件中。文件名可自定义。

在entry中通过$ rawfile可以访问到rawfile文件下存放的音频资源。例如xxx.mp3,此时如果不同module模块的resource下资源,是不能通过直接$rawfile访问。

需要通过模块名字,使用上下文获取到子模块的上下文:

getContext.createModuleContext(moduleName).resourceManager.getRawFd("xxx.mp3")

之后会访问得到的是RawFileDescriptor类型对象。
那如何转化为string 或者Resource ?

二、解决方案:
在鸿蒙中资源的形式一般为 fd,string,Uint8Array,RawFileDescriptor。大家的惯性思维首先想到的是,从其中一个类型转化成目标类型。其实鸿蒙已经提供了一个强大的资源管理器,就是问题背景中调用函数的resourceManager。当我们通过这个管理器是可以获取任意上述目标类型的。只要知道其资源id即可。

三、DEMO示例:


    let fileDescriptor =  getContext(this).createModuleContext("模块名").resourceManager.getRawFdSync("test.mp3");
    let fd = fileDescriptor.fd;
    let Uint8Array =  getContext(this).createModuleContext("模块名").resourceManager.getRawFileContentSync("test.mp3");
    let stringValue =  getContext(this).createModuleContext("模块名").resourceManager.getStringByNameSync("test.mp3");

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值