MediaPlayer类最让我想到的是音频和视频的播放了 该类提供了开始或恢复播放start()、暂停播放pause()、停止播放stop()等方法。该类位于android.media包下,详见API文档。
三种获取资源文件的方式
1.播放应用内的音频文件
MediaPlayer mMediaPlayer=new MediaPlayer.create(this, R.raw.love);2.播放内存卡中音频文件
MediaPlayer mMediaPlayer=new MediaPlayer.setDataSource("file://mnt/sdcard/Music/test.mp3");3.获取网络上的媒体文件
MediaPlayer mMediaPlayer=new MediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/test.mp3"));我们下面做一个播放音乐的小列子。
步骤1.创建项目
2.activity_main.xml的代码,添加一个进度条SeekBar和一个ImageButton按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:android1="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="playMusic" /></LinearLayout>3.在MainActivity写playMusic点击事件(用播放应用内的音频文件)
public void playMusic(View view){//把view强制转换成ImageButton final ImageButton imageButton= (ImageButton) view;if (mMediaPlayer == null) { // 实列化一个MediaPlayer // 播放应用内的音频文件 mMediaPlayer = new MediaPlayer().create(this, R.raw.love);// 监听:准备完成的监听 mMediaPlayer.setOnPReparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); // 把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); // 获取音乐的总时长 int duration = mediaPlayer.getDuration(); // 设置进度条的最大值为音乐的总时长 mSeekBar.setMax(duration); new MyThread().start(); } }); } else if (mMediaPlayer.isPlaying()) { mMediaPlayer.pause(); // 把图标修改为播放的图标 imageButton.setImageResource(android.R.drawable.ic_media_play); } else { mMediaPlayer.start(); // 把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); } }5.为进度条添加事件
mSeekBar = (SeekBar) findViewById(R.id.seekBar1); mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取拖动结束之后的位置 int progress=seekBar.getProgress(); //跳转到某个位置播放 mMediaPlayer.seekTo(progress); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub } });6.写一个线程让播放进度和进度条一样
class MyThread extends Thread{ @Override public void run() { // TODO Auto-generated method stub super.run(); while(mSeekBar.getProgress()<=mSeekBar.getMax()){ //获取当前音乐播放的位置 int currentPosition=mMediaPlayer.getCurrentPosition(); //让进度条动起来 mSeekBar.setProgress(currentPosition); } } }得到下图就完成了
在MainActivity写playMusic点击事件(播放内存卡中音频文件)
首先要获取读取内存卡的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />public void isPlayOrPause(View view){ final ImageButton imageButton= (ImageButton) view; if(mMediaPlayer==null){ //实例化MediaPlayer //播放内存卡中音频文件 mMediaPlayer=new MediaPlayer(); //设置类型 mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音源 try { mMediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/f.mp3")); //准备一下(内存卡) mMediaPlayer.prepare();} catch (IOException e) {e.printStackTrace(); } //监听:准备完成的监听 mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); //把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 int duration=mediaPlayer.getDuration(); //设置进度条的最大值为音乐的总时长 seekBar.setMax(duration); new MyThread().start(); } }); }else if(mMediaPlayer.isPlaying()){ mMediaPlayer.pause(); //把图标修改为播放的图标 imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mMediaPlayer.start(); //把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); } }在MainActivity写playMusic点击事件(获取网络上的媒体文件)
首先要获取联网的权限
<uses-permission android:name="android.permission.INTERNET" />把音频文件放入到tomcat的Root下面然后启动tomcat,一定要在手机上输入那个地址检查一下是否能进入tomcat的官网,这里就不做步骤演示了。public void isPlayOrPause(View view){ final ImageButton imageButton= (ImageButton) view; if(mMediaPlayer==null){ //实例化MediaPlayer mMediaPlayer=new MediaPlayer(); //设置类型 mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音源 try {//播放网络音乐 mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/internet.mp3")); //准备(网络) mediaPlayer.prepareAsync();} catch (IOException e) {e.printStackTrace(); } //监听:准备完成的监听 mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); //把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 int duration=mediaPlayer.getDuration(); //设置进度条的最大值为音乐的总时长 seekBar.setMax(duration); new MyThread().start(); } }); }else if(mMediaPlayer.isPlaying()){ mMediaPlayer.pause(); //把图标修改为播放的图标 imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mMediaPlayer.start(); //把图标修改为暂停的图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); } }
新闻热点
疑难解答