MediaPlayer播放音频
来源:互联网 发布:数据仿真 原始数据 编辑:程序博客网 时间:2024/06/08 01:08
MediaPlayer提供的常用方法
方法说明MediaPlayer构造方法create创建一个要播放的多媒体getCurrentPosition得到当前播放位置getDuration得到文件的时间getVideoHeight得到视频的高度getVideoWidth得到视频的宽度isLooping是否循环播放isPlaying是否正在播放pause暂停prepare准备(同步)prepareAsync准备(异步)release释放MediaPlayer对象相关的资源reset重置MediaPlayer对象为刚刚创建的状态seekTo指定播放的位置(以毫秒为单位的时间)setAudioStreamType设置流媒体的类型setDataSource设置多媒体数据来源(位置)setDisplay设置用SurfaceHolder来显示多媒体setLooping设置是否循环播放setOnButteringUpdateListener网络流媒体的缓冲监听setOnErrorListener设置错误信息监听setOnVideoSizeChangedListener视频尺寸监听setScreenOnWhilePlaying设置是否使用SurfaceHolder来保持屏幕显示setVolume设置音量start开始播放stop停止播放如何获得MediaPlayer实例
1、create的方式
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
2、直接new的方式
MediaPlayer mp = new MediaPlayer();
对应以下两个例子
如何设置要播放的文件
1、 用户在应用中事先自带的resource资源
mp.create(this, R.raw.test);
2、存储在SD卡或其他文件路径下的媒体文件
mp.setDataSource(“/sdcard/test.mp3”);
3、网络上的媒体文件
mp.setDataSource(“http://www.xyxywxh.com/user/xyxygyw/webimg/mp3/danqu/02%E6%98%A5%E6%B1%9F%E8%8A%B1%E6%9C%88%E5%A4%9C.mp3“);
栗子1
布局代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" /> <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" /> <Button android:id="@+id/stop" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="stop" /> </LinearLayout></LinearLayout>
java代码
public class MainActivity extends Activity implements View.OnClickListener { private Button play; private Button pause; private Button stop; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); play = (Button) findViewById(R.id.play); pause = (Button) findViewById(R.id.pause); stop = (Button) findViewById(R.id.stop); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this); initMediaPlayer(); } private void initMediaPlayer() { try { mediaPlayer = MediaPlayer.create(this,R.raw.test); mediaPlayer.prepare(); }catch (Exception e){ e.printStackTrace(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.play: if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); // 开始播放 } break; case R.id.pause: if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); // 暂时播放 } break; case R.id.stop: if (mediaPlayer.isPlaying()) { mediaPlayer.reset(); // 停止播放 initMediaPlayer(); } break; default: break; } } @Override protected void onDestroy(){ super.onDestroy(); if(mediaPlayer != null){ mediaPlayer.stop(); mediaPlayer.release(); } }}
注意
其中R.raw.test是res下的一个mp3文件,需自己创建
栗子2
xml代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" /> <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" /> <Button android:id="@+id/stop" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="stop" /> </LinearLayout></LinearLayout>
java代码
public class MainActivity extends Activity implements View.OnClickListener{ private Button play; private Button pause; private Button stop; private MediaPlayer mediaPlayer = new MediaPlayer();; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); play = (Button) findViewById(R.id.play); pause = (Button) findViewById(R.id.pause); stop = (Button) findViewById(R.id.stop); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this); initMediaPlayer(); } private void initMediaPlayer() { try { String path = Environment.getExternalStorageDirectory() + File.separator;//sd根目录 final File file = new File(path, "test" + ".mp3"); if (file.exists()) { Toast.makeText(this,"存在",Toast.LENGTH_SHORT).show(); } mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径 mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态 } catch (Exception e) { e.printStackTrace(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.play: if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); // 开始播放 } break; case R.id.pause: if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); // 暂停播放 } break; case R.id.stop: if (mediaPlayer.isPlaying()) { mediaPlayer.reset(); // 停止播放 initMediaPlayer(); } break; default: break; } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); } }}
AndroidManifest.xml增加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
注意
1、如何在模拟机中放入文件
2、这就是个坑,一定要戳以下链接看一下!
MediaPlayer: start called in state 0报错处理
阅读全文
0 0
- MediaPlayer播放网络音频
- MediaPlayer播放音频
- 使用MediaPlayer播放音频
- Android MediaPlayer播放音频
- 使用MediaPlayer播放音频
- android 音频播放--MediaPlayer
- MediaPlayer播放网络音频
- 使用MediaPlayer播放音频
- Android:MediaPlayer播放音频
- MediaPlayer播放音频
- MediaPlayer播放音频
- MediaPlayer播放音频
- MediaPlayer播放音频讲解
- 使用MediaPlayer播放音频
- android MediaPlayer音频播放
- MediaPlayer播放音频
- MediaPlayer播放音频讲解
- 利用mediaplayer播放音频
- WPA2 KRACK Attacks 原文转载翻译
- 单调队列
- 注册登录会员抽奖系统
- IT安全漏洞、威胁与风险的区别,你都知道吗?
- OkHttp请求网络数据,并listview展示
- MediaPlayer播放音频
- 区块链行业报告浅见输出
- 部署Java Web项目过程中报过的错、解决方案及需要注意的问题
- Java基础知识总结
- Axon Framework官方文档(八)
- JavaScript 数组排序
- Java图片处理开源框架
- 体系结构
- 静态代理与动态代理