android打开相册选择图片_安卓音频

android打开相册选择图片_安卓音频Buttonclickevent:Intentintent=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent,REQUEST_VIDEO_CODE);打开方式有两种ac

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Button click event:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(intent, REQUEST_VIDEO_CODE);

打开方式有两种action,1.ACTION_PICK;2.ACTION_GET_CONTENT 区分大意为:ACTION_PICK 为打开特定数据一个列表来供用户挑选,其中数据为现有的数据。而 ACTION_GET_CONTENT 区别在于它允许用户创建一个之前并不存在的数据。
Api : http://www.android-doc.com/reference/android/content/Intent.html#ACTION_GET_CONTENT
onActivityResult :

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_VIDEO_CODE) { if (resultCode == RESULT_OK) { Uri uri = data.getData(); ContentResolver cr = this.getContentResolver(); /** 数据库查询操作。 * 第一个参数 uri:为要查询的数据库+表的名称。 * 第二个参数 projection : 要查询的列。 * 第三个参数 selection : 查询的条件,相当于SQL where。 * 第三个参数 selectionArgs : 查询条件的参数,相当于 ?。 * 第四个参数 sortOrder : 结果排序。 */ Cursor cursor = cr.query(uri, null, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) { // 视频ID:MediaStore.Audio.Media._ID int videoId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID)); // 视频名称:MediaStore.Audio.Media.TITLE String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)); // 视频路径:MediaStore.Audio.Media.DATA String videoPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)); // 视频时长:MediaStore.Audio.Media.DURATION int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)); // 视频大小:MediaStore.Audio.Media.SIZE long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE)); // 视频缩略图路径:MediaStore.Images.Media.DATA String imagePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); // 缩略图ID:MediaStore.Audio.Media._ID int imageId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID)); // 方法一 Thumbnails 利用createVideoThumbnail 通过路径得到缩略图,保持为视频的默认比例 // 第一个参数为 ContentResolver,第二个参数为视频缩略图ID, 第三个参数kind有两种为:MICRO_KINDMINI_KIND 字面意思理解为微型和迷你两种缩略模式,前者分辨率更低一些。 Bitmap bitmap1 = MediaStore.Video.Thumbnails.getThumbnail(cr, imageId, MediaStore.Video.Thumbnails.MICRO_KIND, null); // 方法二 ThumbnailUtils 利用createVideoThumbnail 通过路径得到缩略图,保持为视频的默认比例 // 第一个参数为 视频/缩略图的位置,第二个依旧是分辨率相关的kind Bitmap bitmap2 = ThumbnailUtils.createVideoThumbnail(imagePath, MediaStore.Video.Thumbnails.MICRO_KIND); // 如果追求更好的话可以利用 ThumbnailUtils.extractThumbnail 把缩略图转化为的制定大小 // ThumbnailUtils.extractThumbnail(bitmap, width,height ,ThumbnailUtils.OPTIONS_RECYCLE_INPUT); setText(tv_VideoPath, R.string.path, videoPath); setText(tv_VideoDuration, R.string.duration, String.valueOf(duration)); setText(tv_VideoSize, R.string.size, String.valueOf(size)); setText(tv_VideoTitle, R.string.title, title); iv_VideoImage.setImageBitmap(bitmap1); }
                    cursor.close();
                }
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

具体的解释说明看上面的代码注释。
代码传送门: https://github.com/YueZp/VideoPickDemo.git

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192949.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • (转载)LaTeX实战经验:从零开始快速入门

    (转载)LaTeX实战经验:从零开始快速入门对于理工科的学生来说,尤其是从研究生阶段开始,LaTeX应该会是日常中必不可少的写作工具。毕竟要写什么公式的话,不用LaTeX实在是不知道要怎么办。况且要是投稍微专业一点的论文,LaTeX是必须的,没人会接收Word文件。此篇为写给一些想快速入门LaTeX的朋友,至于为什么要叫从零开始,因为我就是从零开始学会的LaTeX。如果你不是那么“聪慧”,LaTeX可能的学习曲线会显得比较曲折。但熟能生…

  • QtreeWidget_遍历qtreewidget

    QtreeWidget_遍历qtreewidget设置右键菜单并实现添加一个子项删除一个子项的功能这样有两个缺点1.只能添加特定的子项。2.不能实现不同层级节点的不同菜单。dialog.cppwidget.cppwidget.h还可以通过TYPE属性来确定每一个节点的层级。代码实现mainwindow.cppmainwindow.hdialog.cppdialog.h参考博客…

  • Linux 网络配置方法 nmtui 配置

    1、nmtui   tui字符界面图形模式配置  输入命令nmtui即可2、进入配置界面3、选择网络接口 eno16777736 回车4、进行相关网络配置  掩码直接在IP地址后面添加 不然默认32位的       键盘操作  比如 Adress 后面的 SHOW  光标到SHOW 回车 即可出现IP地址配置     最后的自…

  • 打开vi编辑器出现E325: ATTENTION错误的原因和解决办法

    打开vi编辑器出现E325: ATTENTION错误的原因和解决办法出现如图的所示的情况的原因是上次操作“data.txt”文件异常中断(文件没有退出就直接强制关机或者重启),产生了如下图所示的.data.txt.swp。此文件是隐藏文件查看是使用ls-a命令查看。解决办法是:使用rm命令删除该文件即可。…

  • 网络爬虫——正则表达式语法

    网络爬虫——正则表达式语法正则表达式基础讲解一、什么是正则表达式在网络爬虫将网页内容爬取的时候,有一个关键的步骤就是对我们关注的信息进行提取,正则表达式就是用于信息筛选提取的强大工具,并且学习简单,所以建议大家掌握。Python正则表达式语句re.compile(“正则表达式”).findall(“原字符串”)1.匹配符普通字符 正常匹配其中的字符。\n 匹配换行符。\t 匹配制表符。\…

  • vue跨域解决的几种方案「建议收藏」

    vue跨域解决的几种方案「建议收藏」vue跨域解决的几种方案一、开发环境解决跨域方法平时使用vue开发的时候,大多会使用vue-cli搭建项目,在vue-cli搭建的项目中有一个配置文件vue.config.js,可以在该文件中进行相应的配置解决开发环境的跨域问题。第一步设置公共urlapi/index.jsimportaxiosfrom’axios’importrouterfrom’@/router/index.js’importstorefrom’@/store/index.js’//创建一个axios

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号