本节带来的是Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码 和播放音视频。它支持三种不同的媒体来源:

本地资源

内部的URI,比如你可以通过ContentResolver来获取

外部URL(流) 对于Android所支持的的媒体格式列表

使用MediaPlayer播放音频:

1)获得MediaPlayer实例:

MediaPlayer mp = new MediaPlayer();

MediaPlayer mp = MediaPlayer.create(this, R.raw.test); //无需再调用setDataSource

另外create还有这样的形式: create(Context context, Uri uri, SurfaceHolder holder) 通过Uri和指定 SurfaceHolder 【抽象类】 创建一个多媒体播放器

2)设置播放文件:

//①raw下的资源:

MediaPlayer.create(this, R.raw.test);

//②本地文件路径:

mp.setDataSource("/sdcard/test.mp3");

//③网络URL文件:

mp.setDataSource("http://www.xxx.com/music/test.mp3");

另外setDataSource()方法有多个,里面有这样一个类型的参数:FileDescriptor,在使用这个 API的时候,需要把文件放到res文件夹平级的assets文件夹里,然后使用下述代码设置DataSource:

AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");

m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());

3)其他方法

Paste_Image.png

实例

//[1]初始化mediaplayer

MediaPlayer mediaPlayer = new MediaPlayer();

//[2]设置要播放的资源位置 path 可以是网络 路径 也可是本地路径

try {

mediaPlayer.setDataSource("/mnt/sdcard/xpg.mp3");

//[3]准备播放

mediaPlayer.prepare();

//[4]开始播放

mediaPlayer.start();

} catch (Exception e) {

e.printStackTrace();

}

本地Uri:

Uri myUri = ....; // initialize Uri here

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mediaPlayer.setDataSource(getApplicationContext(), myUri);

mediaPlayer.prepare();

mediaPlayer.start();

网络音频

String url = "http://........"; // your URL here

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mediaPlayer.setDataSource(url);

mediaPlayer.prepare(); // might take long! (for buffering, etc)

mediaPlayer.start();

使用MediaPlayer播放视频:

MediaPlayer主要用于播放音频,没有提供图像输出界面,所以我们需要借助其他的 组件来显示MediaPlayer播放的图像输出,我们可以使用用SurfaceView 来显示,下面我们使用SurfaceView来写个视频播放的例子:

//[0]找到控件用来显示播放视频的内容

final SurfaceView sfv = (SurfaceView) findViewById(R.id.sfv);

//获取holder 对象 用来维护视频播放的内容

SurfaceHolder holder = sfv.getHolder();

//[0.1]添加holder 生命周期 方法

holder.addCallback(new Callback() {

//当surface view 销毁

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

System.out.println("surfaceDestroyed");

//停止播放视频

if (mediaPlayer!=null && mediaPlayer.isPlaying()) {

//获取到当前播放视频的位置

currentPosition = mediaPlayer.getCurrentPosition();

mediaPlayer.stop();

}

}

//这个方法执行了 说明sufaceView准备好了

@Override

public void surfaceCreated(SurfaceHolder holder) {

//[1]初始化mediaplayer

System.out.println("surfaceCreated");

mediaPlayer = new MediaPlayer();

//[2]设置要播放的资源位置 path 可以是网络 路径 也可是本地路径

try {

mediaPlayer.setDataSource("http://192.168.11.86:8080/cc.MP4");

//[3]准备播放

mediaPlayer.prepareAsync();

//[3.0]设置显示给sfv sufraceholder 是用来维护视频播放的内容

mediaPlayer.setDisplay(holder);

//[3.1]设置一个准备完成的监听

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

//[4]开始播放

mediaPlayer.start();

//[5]继续上次的位置继续播放

mediaPlayer.seekTo(currentPosition);

}

});

} catch (Exception e) {

e.printStackTrace();}}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

}

});

使用VideoView播放视频

// 插件vitamio框架检查是否可用

if (!LibsChecker.checkVitamioLibs(this)) {

return;

}

final VideoView vv = (VideoView) findViewById(R.id.vv);

vv.setVideoPath("http://192.168.11.86:8080/aa.avi");

vv.setOnPreparedListener(new OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mp) {

vv.start();

}

});

//设置video的控制器

vv.setMediaController(new MediaController(this));

android播放mp3方法,Android之MediaPlayer播放音频与视频相关推荐

  1. android播放mp3方法,Android MediaPlayer 播放音频的方式

    主要介绍使用MediaPlayer播放音频的方式.关于MediaPlayer的基础知识,比如状态,可以参考Android MediaPlayer基础简介. 为了方便表达,定义变量名为mediaPlay ...

  2. android 网络mp3格式,Android-使用MediaPlayer播放网络音频并且缓存

    需求 接口中返回一个List,其中部分对象有音频文件的url.对有url的item视图中添加一个播放按钮.点击按钮播放音频,再次点击暂停或停止.点击其他item播放新的音频.点击item进入二级页面, ...

  3. Android实现mp3分析,Android编程实现播放MP3功能示例

    本文实例讲述了Android编程实现播放MP3功能.分享给大家供大家参考,具体如下: 在android中播放mp3非常简单,也是项目中经常使用的,比如说要做项目的背景音乐,应用中某些功能的提示音等的. ...

  4. Android 视频播放器 (二):使用MediaPlayer播放视频

    在 Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容.也知道VideoView内部封装的就是Med ...

  5. android播放mp3功能,Android编程实现播放MP3功能示例

    本文实例讲述了android编程实现播放mp3功能.分享给大家供大家参考,具体如下: 在android中播放mp3非常简单,也是项目中经常使用的,比如说要做项目的背景音乐,应用中某些功能的提示音等的. ...

  6. Android提高第二十一篇之MediaPlayer播放网络视频

    本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 上次讲解了MediaPlayer播放网络音频,介绍了MediaPlayer关于网络音频的缓冲和进度条控制的方法 ...

  7. android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...

  8. android 播放mp3 倒计时,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...

    1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...

  9. 【我的Android进阶之旅】解决MediaPlayer播放音乐的时候报错: Should have subtitle controller already set

    文章目录 一.错误描述 二.错误解决 解决方法一 解决方法二 一.错误描述 刚用MediaPlayer播放Music的时候,看到Log打印台总是会打印一条错误日志,MediaPlayer: Shoul ...

最新文章

  1. what???现在的研究生和导师普遍都没有真正理解科研的本质
  2. Windows 2003 标准版_企业版_SP1_SP2_R2的区别
  3. 登录form php一个页面跳转页面,form表单页面跳转方式提交练习
  4. x86架构和arm架构_苹果Mac弃用英特尔芯片成真,ARM架构CPU真比X86香?
  5. Spark学习之Spark Streaming(9)
  6. 黑苹果xxx.efi格式文件详解
  7. 基于Multisim的MC1496调幅电路的仿真
  8. 进入浏览器下载文件,状态栏不显示下载图标
  9. html怎样改成png格式,如何将jpg图片转换成png格式 又怎样把png转换成jpg
  10. 2022茶艺师(中级)考试题及模拟考试
  11. 5款实用报表工具分析,报表工具这样选!
  12. 杭州天目山路招PHP,杭州地铁3号线汽车西站站开始主体施工 天目山路部分路面要开挖了...
  13. Ubuntu下安装Genymotion安卓模拟器
  14. 1.3 PyCharm下载
  15. 红米手机TWRP读不了刷机包成功解决记录
  16. 小鹤双拼 - 微软拼音自动配置双拼方案
  17. 计算机改成音乐键位,让键盘变成你想要的样子:改键利器 Karabiner-Elements
  18. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛
  19. 计算机网络体系结构 - 应用层
  20. 个人云服务器系统设计,个人云服务器系统设计

热门文章

  1. seata分布式事务框架原理
  2. Dubbo 优雅停机
  3. android入门程序源代码,安卓程序开发入门
  4. 给定的 columnmapping 与源或目标中的任意列均不匹配_闻歌研究 | 图文自动匹配任务研究调研...
  5. Android项目工程中的Gradle、compileSdkVersion、buildToolsVersion
  6. 万字长文搞定C语言指针
  7. android鼠标滚轮事件坐标,android 处理鼠标滚轮事件 【转】
  8. python基础语法手册_说一说python中的几个基础语法
  9. 路由器(结构、分组转发流程、路由选择协议(RIP、OSPF、BGP))
  10. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))