Seriver绑定服务完成音乐播放器

1.创建MusicService,在Service中提供播放音乐、暂停音乐、停止播放、播放上一首、播放下一首、滚动条滚动
2.创建Activity:绑定服务,绑定成功直接调用服务中的方法

import android.app.Service;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.ServiceConnection;
import android.database.Cursor;
import android.net.Uri;
import android.os.IBinder;
import android.provider.ContactsContract;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import com.example.administrator.day17myapplication.R;

public class Main3Activity extends AppCompatActivity {

Intent intent;
MusicSeriver musicSeriver;
 ImageView play;
ImageView pause ;
ImageView precious;
ImageView next;
 //绑定连接
private ServiceConnection connection=new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {

        musicSeriver=((MusicSeriver.MusicBinder)service).getService();
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {

    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);
    //注册
    intent=new Intent(this,MusicSeriver.class);
    bindService(intent,connection, Service.BIND_AUTO_CREATE);

// ContentResolver resolver=getContentResolver();
// Uri uri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
// String[] strings={MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST};
// Cursor query = resolver.query(uri, strings, null, null, null);
// while (query.moveToNext()){
// String name=query.getString(query.getColumnIndex(“name”));
// String geshou=query.getString(query.getColumnIndex(“getshou”));

           play=findViewById(R.id.play);
          pause =findViewById(R.id.pause );
           precious=findViewById(R.id.precious);
           next=findViewById(R.id.next);
           //开始按钮
           play.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   play(v);
               }
           });
           //暂停按钮
           pause.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   pause(v);
               }
           });
           //上一首按钮
           precious.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   pre(v);
               }
           });
           //下一首按钮
           next.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   next(v);
               }
           });



}

//解除注册
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(connection);
}
//开始
public void play(View view){
musicSeriver.play();
}
//暂停
public void pause(View view){
musicSeriver.pause();
}
//停止
public void stop(View view){
musicSeriver.stop();
}
//下一首
public void next(View view){
musicSeriver.next();
}
//上一首
public void pre(View view){
musicSeriver.pre();
}
}

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.support.annotation.Nullable;

import com.example.administrator.day17myapplication.R;

import java.util.ArrayList;

public class MusicSeriver extends Service {
private MediaPlayer mediaPlayer;
private ArrayList list = new ArrayList<>();
private int current;
//获取音乐
@Override
public void onCreate() {
super.onCreate();
list.add(R.raw.a1);
list.add(R.raw.a2);
list.add(R.raw.a3);
list.add(R.raw.a4);
list.add(R.raw.a5);
list.add(R.raw.a6);
list.add(R.raw.a7);
list.add(R.raw.a8);
list.add(R.raw.a9);
list.add(R.raw.a10);
list.add(R.raw.a11);
list.add(R.raw.a12);
list.add(R.raw.guliang);
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return new MusicBinder();
}

class MusicBinder extends Binder {
    public MusicSeriver getService() {
        return MusicSeriver.this;
    }
}
//开始
public  void play(){
    if (mediaPlayer==null){
        mediaPlayer=MediaPlayer.create(this,list.get(0));
        mediaPlayer.isLooping();
    }
    mediaPlayer.start();
}

//暂停
public void pause() {
if (mediaPlayer != null) {
mediaPlayer.pause();
}
}
//停止
public void stop() {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;

    }
}
//下一首
public void next() {
    stop();
    int num = (Math.abs(++current)) % list.size();
    mediaPlayer = MediaPlayer.create(this, (list.get(num)));
    mediaPlayer.start();
}
//上一首
public void pre() {
    stop();
    int num=(Math.abs(--current))%list.size();
    mediaPlayer = MediaPlayer.create(this, (list.get(num)));
    mediaPlayer.start();

}

在这里插入图片描述
在这里插入图片描述

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值