Android-简单音乐播放器
Android-简单音乐播放器
Android-简单音乐播放器:
//目录结构
//项目运行结果
//只一个主Activity,里面代码也很简单。至于布局这些就相当简单了,我就不写了。
- package sn.len.music;
- import java.io.File;
- import java.io.IOException;
- import android.app.Activity;
- import android.media.MediaPlayer;
- import android.os.Bundle;
- import android.os.Environment;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class MusicPlayerActivity extends Activity implements OnClickListener
- {
- private EditText editText;
- private MediaPlayer mediaPlayer;
- private String fileName=null;
- private int postition;
- private static final String TAG="MusicPlayerActivity";
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mediaPlayer=new MediaPlayer();
- editText=(EditText)findViewById(R.id.option);
- fileName=editText.getText().toString();
- Button start=(Button)findViewById(R.id.start);
- Button pause=(Button)findViewById(R.id.pause);
- Button replay=(Button)findViewById(R.id.replay);
- Button stop=(Button)findViewById(R.id.stop);
- start.setOnClickListener(this);
- pause.setOnClickListener(this);
- replay.setOnClickListener(this);
- stop.setOnClickListener(this);
- }
- @Override
- public void onClick(View v)
- {
- Button continue_but=(Button)v;
- try
- {
- switch (v.getId())
- {
- case R.id.start://开始
- {
- play();
- }break;
- case R.id.pause://暂停
- {
- //如果正在播放,则停止
- if(mediaPlayer.isPlaying())
- {
- mediaPlayer.pause();
- continue_but.setText(R.string.conti);//把暂停设置为继续播放
- }
- else//否则继续播放
- {
- mediaPlayer.start();
- continue_but.setText(R.string.pause);//把继续播放按键设置为暂停
- }
- }break;
- case R.id.replay: // 重播
- {
- if(mediaPlayer.isPlaying())
- {
- mediaPlayer.seekTo(0);//重新开始放
- }
- else
- {
- play();
- }
- }
- break;
- case R.id.stop: //停止
- {
- if(mediaPlayer.isPlaying())
- {
- mediaPlayer.stop();
- }
- }
- break;
- default:break;
- }
- }
- catch (Exception e)
- {
- Log.e(TAG, e.toString());
- e.printStackTrace();
- }
- }
- private void play() throws IOException
- {
- //文件在SD卡,所以要弄个File对象
- File file=new File(Environment.getExternalStorageDirectory(),fileName);
- mediaPlayer.reset();
- //设置你要播放的文件在什么地方
- mediaPlayer.setDataSource(file.getAbsolutePath());
- Log.i("ABS", file.getAbsolutePath());//得到的结果就为/mnt/sdcard/saybye.mp3
- //开始初始化, 渲染
- mediaPlayer.prepare();
- //开始播放
- mediaPlayer.start();
- }
- @Override
- protected void onDestroy()
- {
- mediaPlayer.release();//释放掉资源
- super.onDestroy();
- }
- //解决当电话来的时候,使音乐暂停
- //当别的Activity来的时候,此Activity肯定会处于暂停状态。
- @Override
- protected void onPause()
- {
- if(mediaPlayer.isPlaying())
- {
- //记录下当前音乐播放的位置
- postition=mediaPlayer.getCurrentPosition();
- //暂停音乐
- mediaPlayer.pause();
- }
- super.onPause();
- }
- //回到本Activity的时候
- @Override
- protected void onResume()
- {
- //如果有设置的断点,并且文件名不为空,则又开始播放
- if(postition>0 && fileName!=null)
- {
- try
- {
- play();
- mediaPlayer.seekTo(postition); //执行到指定断点
- postition=0;
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- super.onResume();
- }
- //解决内存不够的时候
- //当被杀掉了,第二次运行此程序的时候,把上次的值给取出来
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState)
- {
- postition=savedInstanceState.getInt("postition");
- fileName=savedInstanceState.getString("fileName");
- super.onRestoreInstanceState(savedInstanceState);
- }
- //当内存不够的时候,系统有可能会杀掉某个应用程序
- //所以这个时候可以当在杀掉的时候,就可以把数据给保存下来,以供下次使用
- @Override
- protected void onSaveInstanceState(Bundle outState)
- {
- //保存下断点位置以及文件名
- outState.putInt("postition", postition);
- outState.putString("fileName", fileName);
- super.onSaveInstanceState(outState);
- }
- }
评论暂时关闭