您的位置:首页 > 其它

简易的音乐播放

2016-09-26 08:30 525 查看
import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.os.Looper;

import android.os.Message;

import android.util.Log;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.Date;

import android.app.Activity;

import android.media.MediaPlayer;

import android.media.MediaPlayer.OnCompletionListener;

import android.media.MediaPlayer.OnPreparedListener;

import android.view.View;

import android.widget.SeekBar;

import android.widget.SeekBar.OnSeekBarChangeListener;

import android.widget.TextView;

public class MainActivity extends Activity implements OnPreparedListener, OnCompletionListener, OnSeekBarChangeListener {
File file;
private Handler mhandler;
private SeekBar seekbar;
private TextView tv1;
private TextView tv2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC),"李涛 - 活埋.mp3");
tv1=(TextView) findViewById(R.id.textView1);
tv2=(TextView) findViewById(R.id.textView2);
seekbar=(SeekBar) findViewById(R.id.seekBar1);

mhandler=new MainHandler();
seekbar.setOnSeekBarChangeListener(this);
}
enum States{STOP,PAUSE}
States state=States.STOP;
private MediaPlayer mplayer;
private SeekBarThread barThread;

public void onClick01(View v){
if(mplayer==null){
mplayer=new MediaPlayer();
mplayer.setOnPreparedListener(this);
mplayer.setOnCompletionListener(this);
}if(state==States.PAUSE){
mplayer.start();
return;
}
try{
//得到文件目录
mplayer.setDataSource(file.getPath());
//播放音乐
mplayer.prepareAsync();

}catch(Exception e){e.printStackTrace();}
//更新seekbar
if(barThread==null){
barThread=new SeekBarThread();
barThread.start();}

}
private boolean isUpdate=true;
//给主线程发消息,更新seekbar。  
class SeekBarThread extends Thread{
@Override
public void run() {
while(isUpdate){
try {
sleep(1000);
} catch (InterruptedException e) {}
mhandler.sendEmptyMessage(1);
}
}
}
private SimpleDateFormat sdf=new SimpleDateFormat("mm:ss");
class MainHandler extends Handler{ 
public MainHandler(){}
public MainHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
if(msg.what==1&&mplayer!=null){
int cp=mplayer.getCurrentPosition();
tv1.setText(sdf.format(new Date(cp)));
seekbar.setProgress(cp);}
}
}
public void onClick02(View v){
if(mplayer!=null&&mplayer.isPlaying()){
mplayer.pause();
state=States.PAUSE;
}
}

@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
seekbar.setMax(mplayer.getDuration());
tv2.setText(sdf.format(new Date(mplayer.getDuration())));

}
@Override
protected void onDestroy() {
super.onDestroy();
isUpdate=false;
if(mplayer!=null){
mplayer.release();
mplayer=null;
}
}

@Override
public void onCompletion(MediaPlayer mp) {
Log.i("TAG", "重播");
mp.start();

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int cp=seekBar.getProgress();
if(mplayer!=null){
mplayer.seekTo(cp);
mplayer.start();
 
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  音乐