public class mainActivity extends Activity {
// 要播放音乐需要建立一个媒体播放的对象
private MediaPlayer mediaPlayer;
private EditText textFilename;
private Button buttonPause;
//电话接听完以后又开始播放了 所以要重写onRersume方法
//这里面重写生命周期的三个方法
@Override
protected void onPause() {
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
buttonPause.setText(R.string.resume);
}
super.onPause();
}
@Override
protected void onResume() {
if(!mediaPlayer.isLooping()){
mediaPlayer.start();
buttonPause.setText(R.string.pause);
}
super.onResume();
}
//在activtiy关闭的时候进行资源释放
@Override
protected void onDestroy() {
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
mediaPlayer.release();
super.onDestroy();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 注意 多个按钮的情况下采用公共的对象来处理电击事件
Button buttonPlay = (Button) findViewById(R.id.play);
Button buttonPause = (Button) findViewById(R.id.pause);
Button buttonStrop = (Button) findViewById(R.id.stop);
buttonPause.setOnClickListener(new onClick());
buttonPlay.setOnClickListener(new onClick());
buttonStrop.setOnClickListener(new onClick());
// 得到文本(MP3)的来源
textFilename = (EditText) findViewById(R.id.filename);
// 完成对media对象的初始化
mediaPlayer = new MediaPlayer();
}
// 这个地方需要注意了 onClick实现View.OnClickListener
private class onClick implements View.OnClickListener {
@Override
public void onClick(View v) {
try {
switch (v.getId()) {
case R.id.play: // 来自播放按钮
// 重设里面的参数让它还原
mediaPlayer.reset();
// 设置数据来源
mediaPlayer.setDataSource("/sdcard/" + textFilename);
//需要先缓冲一下
mediaPlayer.prepare();
mediaPlayer.start();
break;
case R.id.pause: // /来自暂停按钮
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
buttonPause.setText(R.string.resume);
}else{
mediaPlayer.start();
buttonPause.setText(R.string.pause);
}
break;
case R.id.stop: // 来自停止按钮
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
总结 需要注意的地方
用try{
switch(){
Case:
//省略
Break;
}
}catch(Exception e){
e.printStackTrace():
}
重点注意一点 按钮上的文字是可以变化的
配置中 android:text @String/button;
android:id @id+/button;
//改变显示的字体代码
pauseButton.setText(R.id.button);
如果这个播放器在播放的时候来了一个电话 那么需要提供生命周期方法
Onpause()来实现的
因为这里要方法sd卡 所以把sd卡的访问权限加进去
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>