Service music

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);
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值