package com.example.a1.yinyue;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
private ImageView im;
private static SeekBar seek;
private ImageView pre;
private ImageView pause;
private ImageView next;
private ArrayList<Music> arrayList;
private Music music;
private String url;
static Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==0x001){
Bundle data = msg.getData();
int duration = data.getInt("duration");
int current = data.getInt("current");
seek.setMax(duration);
seek.setProgress(current);
}
}
};
private int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initData();
initView();
initService();
initseek();
}
private void initseek() {
seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progress = seekBar.getProgress();
bind.seekTo(progress);
}
});
}
private void initData() {
arrayList = Utils.getmp3();
Intent intent = getIntent();
position = intent.getIntExtra("a", 0);
music = arrayList.get(position);
url = music.getUrl();
}
private MyService.MyBind bind;
class MyServiceconn implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
bind= (MyService.MyBind) iBinder;
bind.start(url);
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
}
private void initService() {
Intent intent = new Intent(this, com.example.a1.yinyue.MyService.class);
bindService(intent,new MyServiceconn(),BIND_AUTO_CREATE);
startService(intent);
}
private void initView() {
im = (ImageView) findViewById(R.id.im);
seek = (SeekBar) findViewById(R.id.seek);
pre = (ImageView) findViewById(R.id.pre);
pause = (ImageView) findViewById(R.id.pause);
next = (ImageView) findViewById(R.id.stop);
pre.setOnClickListener(this);
pause.setOnClickListener(this);
next.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.pre:
if (position>0){
bind.start(arrayList.get(--position).getUrl());
}else{
Toast.makeText(this,"已是di一首",Toast.LENGTH_SHORT).show();
}
break;
case R.id.pause:
bind.pause(pause);
break;
case R.id.stop:
if (position<arrayList.size()-1){
bind.start(arrayList.get(++position).getUrl());
}else{
Toast.makeText(this,"已是最后一首",Toast.LENGTH_SHORT).show();
}
break;
}
}
}
…
package com.example.a1.yinyue;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
import android.widget.ImageView;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
public class MyService extends Service {
private MediaPlayer mediaPlayer;
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return new MyBind();
}
class MyBind extends Binder{
//开始
public void start(String url){
try {
if (mediaPlayer==null){
mediaPlayer = new MediaPlayer();
}else{
mediaPlayer.stop();
mediaPlayer.reset();
}
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.setLooping(true);
mediaPlayer.start();
reFresh();
} catch (IOException e) {
e.printStackTrace();
}
}
//暂停
public void pause(ImageView im){
if (mediaPlayer.isPlaying()){
mediaPlayer.pause();
im.setImageResource(R.mipmap.p_player_btn_play);
}else{
mediaPlayer.start();
im.setImageResource(R.mipmap.p_player_btn_pause);
}
}
//上一首
public void pre(String url){
start(url);
}
//下一首
public void next(String url){
start(url);
}
//刷新
public void reFresh(){
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
int duration = mediaPlayer.getDuration();
int currentPosition = mediaPlayer.getCurrentPosition();
Message message = new Message();
message.what=0x001;
Bundle bundle = new Bundle();
bundle.putInt("duration",duration);
bundle.putInt("current",currentPosition);
message.setData(bundle);
Main2Activity.handler.sendMessage(message);
}
},1000,1000);
}
//拖动
public void seekTo(int progress){
mediaPlayer.seekTo(progress);
}
}
}