当前课程知识点:Android应用开发基础 > 第七章 内容提供者ContentProvider > 7.5 课后作业案例 > 7.5.2 实践案例-文件管理器-播放
本节通过实例来介绍如何播放手机SD卡中的
图片 音乐 视频分类文件
实现视频的相关操作 实现音频的播放 暂停 停止功能
下面介绍如何实现将读出的媒体文件进行播放
实现视频相关的操作
实现音频的播放、暂停、停止功能
在mediaTest项目的基础上
新建layout_img布局
修改布局类型为线性布局LinearLayout
切换到design模式
新建ImageView组件
清除srcCompat
设置layout_width为match_parent
layout_height为match_parent
设置id为imageView
新建layout_video布局
修改布局类型为线性布局LinearLayout
切换到design模式
新建VideoView组件
设置layout_width为wrap_parent
layout_height为wrap_parent
新建layout_audio布局
修改布局类型为线性布局LinearLayout
切换到design模式
新建三个Button组件
第一个button的id设置为btn_play,文本内容为play
第二个button的id设置为btn_pause
文本内容为pause
第三个button的id设置为btn_stop
文本内容为stop
新建PicturePlayer
VideoPlayer
AudioPlayer
回到主活动
定义私有变量String类型的数组data
定义私有变量Bundle并实例化
实现getSdPermissions方法
增加WRITE_EXTERNAL_STORAGE权限申请
在AndroidManifest文件中,增加写入sd卡的权限
在initData方法,初始话适配器中增加数组data
修改listAudio方法
换为把数据放入data数组中
listVideo、listPic方法中也是一样的修改
在initView方法中,给mListView设置子项点击事件
实现监听接口的方法
通过data.get(position)获取路径
通过substring分割与lastIndexOf查询最后一个
得到文件的格式后缀
如果这个后缀是mp3
或者flac
bundle放入键为mp3,值为路径的数据
定义意图,跳转到AudioPlayer活动
将bundle传入intent中
启动意图
如果这个后缀是mp4
或者wmv
bundle放入键为video,值为路径的数据
定义意图,跳转到VideoPlayer活动
将bundle传入intent中
启动意图
如果这个后缀是png
或者jpg
gif
bundle放入键为pic,值为路径的数据
定义意图,跳转到PicturePlayer活动
将bundle传入intent中
启动意图
切换到PicturePlayer
设置当前布局为layout_img
选中layout_img布局文件
点击右键选择Generate,LayoutCreator
自动生成组件初始化的代码
在initView方法
使用getIntent().getExtras()获取bundle
根据键值pic获取对应的path
将图片的path解析为bitmap
mImageView设置位图资源为bitmap
切换到VideoPlayer
设置当前布局为layout_video
选中layout_video布局文件
点击右键选择Generate LayoutCreator
自动生成组件初始化的代码
定义字符串私有变量path
定义私有变量mediaController
在initView方法中
使用getIntent().getExtras()获取bundle
根据键值video获取对应的video
初始化mediaController
在onCreate函数中调用initVideoPlayer方法
alt+enter实现未实现方法
mVideoView设播放路径
mVideoView设置MediaController
mediaController设置mediaPlayer
显示mediaController
mVideoView抢占焦点d'd
切换到AudioPlayer
设置当前布局为layout_audio
选中layout_audio布局文件
点击右键选择Generate,选中LayoutCreator
定义私有变量mediaPlayer
定义字符串私有变量path
在initView方法中
使用getIntent().
getExtras()获取bundle
根据键值mp3获取对应的路径
在onCreate函数中调用initMediaPlayer方法
alt+enter实现未实现方法
实例化MediaPlayer
在try catch语句中,mediaPlayer设置资源路径
mediaPlayer准备就绪
实现onClick方法
当case为R.id.btn_play时
如果mediaPlayer不是在播放状态
调用 mediaPlayer.start();
当case为R.id.btn_pause
如果mediaPlayer是在播放状态
调用mediaPlayer.pause()
当case为R.id.btn_stop时
如果mediaPlayer是在播放状态
调用 mediaPlayer.reset()
再调用initMediaPlayer初始化
实现onDestroy方法
如果mediaPlayer不为空
停止mediaPlayer
并释放mediaPlayer
代码编写完成后运行程序
点击文件
点击任意一个文件跳到一个活动中进行展示
点击视频文件
点击任何一个视频会跳到另外一个活动进行播放
暂停快进快退
点击音频文件
点击任何一个音频会跳到另外一个活动进行
点击播放 点击停止 点击暂停
点击播放 点击停止 点击暂停
这就是播放手机SD中文件的全部内容
请大家按照讲课的内容完成播放文件的功能
在Android的手机和模拟器中分别运行
通过实例理解播放手机SD的文件流程
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统