//音乐播放的两种形式
package com.example.mediaplayer;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建音乐播放器:方式一
//way1();
// 创建音乐播放器:方式二
way();
}
private void way1() {
//1.创建MediaPlayer对象
MediaPlayer player=new MediaPlayer();
//不知道放在那里可以用此方法
//File file=Environment.getExternalStorageDirectory();
//player.setDataSource(file+"/elang.mp3");
//2.设置资源文件(必须处理异常)
try {
//重置,清零
player.reset();
player.setDataSource("/mnt/sdcard/kugoumusic/elang.mp3");
//3.加载准备
player.prepare();
//player.prepareAsync();网络加载
} catch (Exception e) {
e.printStackTrace();
}
//资源文件存放位置:资源目录、网络、assets下
//4.播放
player.start();
//播放完后,进入下一曲的监听
player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
}
});
}
private void way() {
//创建
MediaPlayer play=MediaPlayer.create(this, R.raw.yiwange);
//播放
play.start();
//资源文件存放位置:res/raw下、网络
}
}
//音乐播放(上一首,下一首,有进度条)
package com.example.mediaplayer;
import java.sql.PreparedStatement;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.text.format.Time;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button previous,next;
private TextView tv;
private MediaPlayer mp;
String[] names={"第一首歌","第二首歌","第三首歌","第四首歌",};
int[] ids={R.raw.music1,R.raw.music2,R.raw.music3,R.raw.music4};
int index;
private Timer t;
private SeekBar seekBar;
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(mp.isPlaying()){
seekBar.setProgress(mp.getCurrentPosition());
}else{
t.cancel();
seekBar.setProgress(seekBar.getMax());
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init() {
previous = (Button) findViewById(R.id.previous);
next = (Button) findViewById(R.id.next);
tv = (TextView) findViewById(R.id.tv);
seekBar = (SeekBar) findViewById(R.id.seekBar);
mp=MediaPlayer.create(this,ids[index]);
tv.setText(names[index]);
mp.start();
//得到当前音乐总共可以播放多长时间
int time = mp.getDuration();
//给进度条设置最大进度,遇音乐播放时间同步,1:1
seekBar.setMax(time);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//拖动离手后,得到进度,设置到mp上
int pro=seekBar.getProgress();
if(mp.isPlaying()){
mp.seekTo(pro);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
});
way();
previous.setOnClickListener(l);
next.setOnClickListener(l);
completion();
}
OnClickListener l=new OnClickListener(){
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.previous:
index--;
if(index<0){
index=ids.length-1;
}
if(mp.isPlaying()){
mp.stop();
}
mp=MediaPlayer.create(MainActivity.this,ids[index]);
mp.start();
tv.setText(names[index]);
break;
case R.id.next:
index++;
if(index==ids.length){
index=0;
}
if(mp.isPlaying()){
mp.stop();
}
mp=MediaPlayer.create(MainActivity.this,ids[index]);
mp.start();
tv.setText(names[index]);
break;
}
//上一首或者下一首,从头播放,所以设置为0,最大进度为播放时的音乐的时间
seekBar.setProgress(0);
seekBar.setMax(mp.getDuration());
way();
completion();
}};
public void way(){
t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(0x123);
}
}, 500, 100);
}
public void completion(){
//设置播放完后自己播放下一区
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer m) {
index++;
if(index==ids.length){
index=0;
}
mp=MediaPlayer.create(MainActivity.this, ids[index]);
// m=mp;
tv.setText(names[index]);
seekBar.setProgress(0);
seekBar.setMax(mp.getDuration());
way();
mp.start();
completion();
}
});
}
@Override
protected void onDestroy() {
if(mp!=null){
mp.stop();
}
super.onDestroy();
}
}