package com.example.music;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
/** 思维模式
* 1--找布局,找控件
* 2-- 给控件设置点击事件儿(上一首,播放,下一首)
* 3--实现播放方法,(上下点击事件儿都会调用播放方法)
* 4--让seekBar自动前进(),用handler,
* 5--控制seekBar手动拖动逻辑
* 6-- 暂停的逻辑
* 7-- handler一直发送消息的逻辑;
*/
public class MainActivity extends Activity implements View.OnClickListener {
/**
* getExternalStorageDirectory:获取sd卡目录
* getAbsolutePath:获取绝对路径
*/
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
//创建一个数组来存放音乐
String[] music_array = new String[]{path + "/aa.mp3", path + "/bb.mp3", path + "/cc.mp3"};
private SeekBar seek;
private MediaPlayer player;
private int index = 0;
//音乐在数组中的下标;
private boolean isPlaying = false;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//进度条刷新间隔时间
handler.sendEmptyMessageDelayed(1, 1000);
int currentPosition = player.getCurrentPosition();
//更新进度;
seek.setProgress(currentPosition);
if (currentPosition >= player.getDuration()) {
//取消掉所有消息
handler.removeCallbacksAndMessages(null);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//寻找控件的内部类
initViews();
player = new MediaPlayer();
//seekbar的监听
seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//获取手放开时候的拖动进度
int progress = seekBar.getProgress();
player.seekTo(progress);
}
});
}
private void initViews() {
//获取控件
seek = (SeekBar) findViewById(R.id.progress);
Button pre = (Button) findViewById(R.id.pre);
Button start = (Button) findViewById(R.id.start);
Button next = (Button) findViewById(R.id.next);
// 注册监听;
pre.setOnClickListener(this);
start.setOnClickListener(this);
next.setOnClickListener(this);
}
/**
* 按钮的点击事件;
*
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.pre:
pre();
break;
case R.id.start:
start();
break;
case R.id.next:
next();
break;
}
}
private void start() {
if (isPlaying) {
player.pause();
isPlaying = false;
return;
}
try {
player.reset(); //重置
player.setDataSource(music_array[index]); //设置路径
player.prepare(); //准备
int duration = player.getDuration(); //得到音乐总时长;
seek.setMax(duration); //把总时长设置给seekBar
player.start(); //播放
handler.sendEmptyMessageDelayed(1,1000);
isPlaying = true;
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 上一首
*/
private void pre() {
if (index <= 0) {
Toast.makeText(this, "已经是第一首了", Toast.LENGTH_SHORT).show();
}else {
index--;
start();
}
}
/**
* 下一首
*/
private void next() {
if (index >= music_array.length-1) {
Toast.makeText(this, "已经是最后一首了", Toast.LENGTH_SHORT).show();
}else {
index++;
start();
}
}
}
简单实现音乐播放器
猜你喜欢
转载自blog.csdn.net/wangshuo_/article/details/84073670
今日推荐
周排行