0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙系统访问系统相册方法

OpenHarmony技术社区 来源:鸿蒙技术社区 作者:拓维云创易乘民 2021-08-26 17:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前几天有朋友问我如何通过 AVStorage 来获取鸿蒙系统相册的图片,这个操作在我们平时开发时也经常用到,今天就分享一下鸿蒙系统访问系统相册的方法。

鸿蒙的 AVStorage 对应的是 Android 中的 MediaStore,都是用于操作系统媒体数据库的类。

但是现在开放的功能不如 MediaStore 强大,很多操作需要用的字段还找不到。

这里我先通过一段安卓程序往系统相册目录中写入三张图片,并插入媒体数据库:

//将文件保存到公共的媒体文件夹//这里的filename单纯的指文件名,不包含路径@RequiresApi(Build.VERSION_CODES.Q)fun saveImage(fileName: String, bitmap: Bitmap) {

try {

//设置保存参数到ContentValues中

val contentValues = ContentValues()

//设置文件名

contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, fileName)

//android Q中不再使用DATA字段,而用RELATIVE_PATH代替

//RELATIVE_PATH是相对路径不是绝对路径

//DCIM是系统文件夹,关于系统文件夹可以到系统自带的文件管理器中查看,不可以写没存在的名字

contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, “DCIM/”);

//设置文件类型

contentValues.put(MediaStore.Images.Media.MIME_TYPE, “image/JPEG”)

//执行insert操作,向系统文件夹中添加文件

//EXTERNAL_CONTENT_URI代表外部存储器,该值不变

val uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)

if (uri != null) {

//若生成了uri,则表示该文件添加成功

//使用流将内容写入该uri中即可

val outputStream: OutputStream? = contentResolver.openOutputStream(uri)

if (outputStream != null) {

bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream)

outputStream.flush()

outputStream.close()

}

}

} catch (e: Exception) {

e.printStackTrace()

}

}

val bitmap = resources.getDrawable(R.mipmap.ic_launcher, null).toBitmap()

saveImage(“test”, bitmap)

这里我是放在点击事件回调中,点击三次,插入了三张同样的图片,该方法会自动给重复的图片重命名。

通过 AS 的文件管理器和系统的图库我们可以看到已经写入成功了,接下来再用系统相机拍两张照片,以创建不同来源的媒体图片,同样可在文件管理器和图库中查看结果。

这样,数据就做好了,接下来,我们通过鸿蒙提供的 API 来获取系统相册的图片并显示出来。

首先,读取系统相册需要获取 ohos.permission.READ_USER_STORAGE 权限,我们需要在 config.json 中加入如下代码:

“reqPermissions”: [{“name”: “ohos.permission.READ_USER_STORAGE”}]

并且,该权限需要动态申请,我们需要在 ability 中手动申请权限:

String[] permissions = {“ohos.permission.READ_USER_STORAGE”};

requestPermissionsFromUser(permissions, 0);

获取到权限之后,我们就可以通过 DataAbilityHelper 和 AVStorage 来查询媒体数据库了。

获取媒体外部存储中的图片 URI 需要使用的预定义字段是:AVStorage.Images.Media.EXTERNAL_DATA_ABILITY_URI:

private void showImage() {

DataAbilityHelper helper = DataAbilityHelper.creator(this);

try {

// columns为null,查询记录所有字段,当前例子表示查询id字段

ResultSet resultSet = helper.query(AVStorage.Images.Media.EXTERNAL_DATA_ABILITY_URI, new String[]{AVStorage.Images.Media.ID}, null);

while (resultSet != null && resultSet.goToNextRow()) {

PixelMap pixelMap = null;

ImageSource imageSource = null;

Image image = new Image(this);

image.setWidth(250);

image.setHeight(250);

image.setMarginsLeftAndRight(10, 10);

image.setMarginsTopAndBottom(10, 10);

image.setScaleMode(Image.ScaleMode.CLIP_CENTER);

// 获取id字段的值

int id = resultSet.getInt(resultSet.getColumnIndexForName(AVStorage.Images.Media.ID));

Uri uri = Uri.appendEncodedPathToUri(AVStorage.Images.Media.EXTERNAL_DATA_ABILITY_URI, String.valueOf(id));

FileDescriptor fd = helper.openFile(uri, “r”);

try {

imageSource = ImageSource.create(fd, null);

pixelMap = imageSource.createPixelmap(null);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (imageSource != null) {

imageSource.release();

}

}

image.setPixelMap(pixelMap);

tableLayout.addComponent(image);

}

} catch (DataAbilityRemoteException | FileNotFoundException e) {

e.printStackTrace();

}

}

我们通过一个 TableLayout 来模仿图库界面展示获取到的系统相册图片:

tableLayout = (TableLayout) findComponentById(ResourceTable.Id_table);

tableLayout.setColumnCount(4);

showImage();

至此,我们就获取到了系统相册目录下的图片。责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    218

    文章

    36190

    浏览量

    262694
  • 操作系统
    +关注

    关注

    37

    文章

    7437

    浏览量

    129621
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2642

    浏览量

    70122
  • HarmonyOS
    +关注

    关注

    80

    文章

    2157

    浏览量

    36294

原文标题:如何获取鸿蒙系统相册图片?

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置?

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置? 如何掂让这个竖屏切换为横屏?
    发表于 12-20 20:10

    鸿蒙系统对手机市场会产生怎样的影响?现在汽车是不是也用上鸿蒙系统了?

    鸿蒙系统对手机市场会产生怎样的影响?现在汽车是不是也用上鸿蒙系统了?
    发表于 12-04 20:47

    单片机系统硬件的调试方法

    单片机的系统硬件调试,通常有静态调试和动态调试两种不同,前者是通过目测、万能表测试、加电检查、联机检查的方法,在加电于样机之前.对样机的型号规格,以及安装要求等进行核对,同时检查 电源 系统.防止
    发表于 12-03 06:10

    基于开源鸿蒙的图片编辑开发样例(1)

    本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑样例的全流程,分为上篇和下篇,本篇为上篇,主要介绍添加相册图片、编译图片功能。
    的头像 发表于 10-31 09:16 3228次阅读
    基于开源<b class='flag-5'>鸿蒙</b>的图片编辑开发样例(1)

    鸿蒙6.0系统星闪蓝牙入口合并

    有数码博主爆料称在华为鸿蒙 HarmonyOS 6.0 系统 Beta3 版本的部分场景操作视频中可以看到,星闪和蓝牙的功能入口和功能页面已经合并。  
    的头像 发表于 09-01 16:59 1084次阅读

    诚迈科技发布基于鸿志桌面操作系统和龙芯3A6000的开源鸿蒙电脑

    鸿蒙5终端突破1000万之际,中国自主操作系统生态迎来关键发展期。作为开源鸿蒙生态核心共建单位之一,诚迈科技正式发布基于鸿志桌面操作系统和龙芯3A6000处理器的开源
    的头像 发表于 08-22 20:29 2973次阅读
    诚迈科技发布基于鸿志桌面操作<b class='flag-5'>系统</b>和龙芯3A6000的开源<b class='flag-5'>鸿蒙</b>电脑

    HarmonyOS实战:一招搞定保存图片到相册

    保存图片功能几乎是每个应用程序必备的功能之一,当用户遇到喜欢的图片时可以保存到手机相册。那么在鸿蒙中保存图片是否也需要申请用户存储权限以及如何将图片保存到相册,本文将详细讲述怎么保存网络图片,指定布局生成图片保存至
    的头像 发表于 06-24 17:04 1421次阅读

    开源系统适配:聚徽分享国产工控平板在 Linux / 鸿蒙系统下的技术优化

    在工业自动化与智能化加速推进的当下,国产工控平板的系统适配成为提升设备性能与竞争力的关键环节。Linux 和鸿蒙作为开源系统,凭借其高度的开放性与可定制性,为国产工控平板带来新的发展机遇。如何对国产
    的头像 发表于 06-13 16:29 1299次阅读

    使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件

    的一站式集成开发环境(IDE),专为鸿蒙操作系统(HarmonyOS Next)应用和服务开发设计 DevEco Studio,掌握基本操作和开发流程。 ## 2. 安装与配置 1. 访问华为开发者联盟
    发表于 06-11 17:18

    开源鸿蒙操作系统的生态成果与落地实践

    电网、中国科学院软件研究所、证通电子等合作单位共同支持。本次大会聚焦开源鸿蒙 5.1 Release版本,面向开发者和伙伴深度展示开源鸿蒙操作系统的生态成果与落地实践。
    的头像 发表于 06-05 14:27 1489次阅读

    国产操作系统加速崛起——鸿蒙电脑补齐鸿蒙生态最重要拼图

    国产操作系统加速崛起——鸿蒙电脑补齐鸿蒙生态最重要拼图 5月19日,首次应用鸿蒙操作系统的个人电脑(PC)在四川成都正式发布。这标志着我国拥
    的头像 发表于 05-21 11:41 792次阅读

    人脸识别身份核验终端使用鸿蒙系统,有什么好处?

    核验终端的重要因素。而鸿蒙系统HarmonyOS在这些环节上得到更大的优化。首先,从安全性来说,鸿蒙系统HarmonyOS采用微内核设计,将操作系统
    的头像 发表于 05-20 09:57 1170次阅读
    人脸识别身份核验终端使用<b class='flag-5'>鸿蒙</b><b class='flag-5'>系统</b>,有什么好处?

    警用鸿蒙操作系统正式亮相,诚迈科技携智能警务终端参展警博会

    5月14日至17日,第12届中国国际警用装备博览会(以下简称“警博会”)在北京隆重举办。作为经党中央批准、公安部主办的唯一警用装备展会,本届警博会首次设立警鸿装备专区,警用鸿蒙操作系统正式亮相。诚迈
    的头像 发表于 05-19 20:26 923次阅读
    警用<b class='flag-5'>鸿蒙</b>操作<b class='flag-5'>系统</b>正式亮相,诚迈科技携智能警务终端参展警博会

    成都汇阳投资关于华为鸿蒙PC 操作系统发布,相关公司迎来发展

    鸿蒙电脑(基于HarmonyOS 的华为 PC 系统)发布 鸿蒙 电脑(基于 HarmonyOS 的华为 PC 系 统 ) 已于2025年5月19日正式发布。 鸿蒙电脑在2025年5月
    的头像 发表于 05-12 09:39 1406次阅读

    鸿蒙操作系统首登电脑端,华为开启鸿蒙办公新时代

    2025年5月8日,华为在深圳举办了鸿蒙电脑技术与生态沟通会,鸿蒙操作系统首次在电脑端亮相。这既是中国电子信息产业的历史性时刻,也是华为鸿蒙办公的新起点。 五年匠心打磨,
    发表于 05-08 14:20 6216次阅读
    <b class='flag-5'>鸿蒙</b>操作<b class='flag-5'>系统</b>首登电脑端,华为开启<b class='flag-5'>鸿蒙</b>办公新时代