1.新建名为MP3player的项目
2.在主界面中添加 TextView ImageView 和 4个Button 使用相对布局 如图(丑了点,将就下):
xml就不放上来了 文件目录如下:
3.重点是要理解MediaPlayer的播放状态 先调用什么再调用什么一定要清楚 如下图
下面放代码了,各单位请注意
MainActivity:
<pre name="code" class="java"><strong><span style="font-size:24px;">package com.example.np3player;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ImageButton buttonStart,buttonStop,buttonBefore,buttonNext;
private TextView textView;
private MediaPlayer mediaPlayer;
private ImageView imageView;
public static final String SDPATH = Environment .getExternalStorageDirectory().getAbsolutePath();
private boolean Isstart = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonStart = (ImageButton)findViewById(R.id.Buttonstart);
buttonStop = (ImageButton)findViewById(R.id.Buttonstop);
buttonBefore = (ImageButton)findViewById(R.id.Buttonbefore);
buttonNext = (ImageButton)findViewById(R.id.Buttonnext);
imageView = (ImageView)findViewById(R.id.imageView);
textView = (TextView)findViewById(R.id.textView);
mediaPlayer = new MediaPlayer();
try{
mediaPlayer.setDataSource("sdcard/b.mp3");
mediaPlayer.prepare();
}catch(Exception e){}
buttonStart.setOnClickListener(new ImageButton.OnClickListener(){
public void onClick(View v){
try{
if(Isstart == true){
mediaPlayer.pause();
Isstart = false;
textView.setText("暂停");
}
else if(Isstart == false){
mediaPlayer.start();
Isstart = true;
textView.setText("播放……");
}
if(Isstart == false){
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.start));
}else{
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.pause));
}
}
catch(Exception e){
textView.setText(e.toString());
e.printStackTrace();
}
}
});
buttonStop.setOnClickListener(new ImageButton.OnClickListener(){
public void onClick(View v){
try{
if(mediaPlayer != null){
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.setDataSource("sdcard/b.mp3");
mediaPlayer.prepare();
Isstart = false;
textView.setText("停止播放");
buttonStart.setImageDrawable(getResources().getDrawable(R.drawable.start));
}
}
catch(Exception e){
textView.setText(e.toString());
e.printStackTrace();
}
}
});
buttonBefore.setOnClickListener(new ImageButton.OnClickListener(){
public void onClick(View arg0){
buttonStart.setImageResource(R.drawable.pause);
try{
if(mediaPlayer.isPlaying() == true){
mediaPlayer.reset();
}
mediaPlayer.setDataSource("sdcard/a.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
textView.setText("下一首 播放……");
}catch(Exception e){
e.printStackTrace();
}
}
});
buttonNext.setOnClickListener(new ImageButton.OnClickListener(){
public void onClick(View arg0){
buttonStart.setImageResource(R.drawable.pause);
try{
if(mediaPlayer.isPlaying() == true){
mediaPlayer.reset();
}
mediaPlayer.setDataSource("sdcard/c.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
textView.setText("上一首 播放……");
}catch(Exception e){
e.printStackTrace();
}
}
});
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
try{
mediaPlayer.release();
textView.setText("发生了错误");
}
catch(Exception e){
textView.setText(e.toString());
e.printStackTrace();
}
return false;
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener(){
public void onCompletion(MediaPlayer arg0){
textView.setText("播放完毕");
buttonStart.setImageDrawable(getResources().getDrawable(R.drawable.start));
}
});
}
protected void onPause(){
try{
mediaPlayer.release();
}
catch(Exception e){
textView.setText(e.toString());
}
super.onPause();
}
}
</span></strong>
</pre><pre code_snippet_id="430223" snippet_file_name="blog_20140718_1_7756815" name="code" class="java">
<pre code_snippet_id="430223" snippet_file_name="blog_20140718_2_4997390" name="code" class="java"><strong><span style="font-size:24px;">点播放暂停图片会更换</span></strong>
这里
只是实现了点击上一曲播放c.mp3 下一首播放a.mp3 而且点了之后按停止会报错 将来会修复的 看懂关键代码就行了 当然了 你的SD卡要有这三个文件
<strong><span style="font-size:24px;">PS :有些读写操作需要权限 只需在AndroidManifest.xml添加:</span></strong><span style="font-family: Arial, Helvetica, sans-serif;"><strong><span style="font-size:24px;"> </span></strong></span><pre name="code" class="html"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
位置别搞错了:
<img src="https://img-blog.csdn.net/20140718225004978?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVFBTMjA0Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />