Android 教你播放SD卡的MP3

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="" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值