美文网首页
开启服务(播放音乐)

开启服务(播放音乐)

作者: Summer_27d1 | 来源:发表于2018-07-04 10:03 被阅读0次

    首先创建一个类,继承Service
    ···
    package com.example.ytest11_service;

    import java.io.IOException;

    import android.app.Service;
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.os.Binder;
    import android.os.Environment;
    import android.os.IBinder;
    import android.util.Log;

    public class MyService extends Service{

    private MediaPlayer mediaPlayer;
    private MyIBinder myIBinder;
    private boolean isfist=true;
    @Override
    public IBinder onBind(Intent intent) {
        myIBinder = new MyIBinder();
        Log.e("TAG", "onBind");
        return myIBinder;
    }
    

    // 当服务创建的时候
    @Override
    public void onCreate() {
    super.onCreate();
    mediaPlayer = new MediaPlayer();
    Log.e("TAG", "onCreate");
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    Log.e("TAG", "onStartCommand");
    return super.onStartCommand(intent, flags, startId);
    }
    @Override
    public boolean onUnbind(Intent intent) {
    Log.e("TAG", "onUnbind");
    return super.onUnbind(intent);
    }
    @Override
    public void onDestroy() {
    Log.e("TAG", "onDestroy");
    super.onDestroy();
    }
    public void playMusic(){
    Log.e("TAG", "setDataSource");
    if (isfist==true) {
    mediaPlayer.reset();
    try {
    mediaPlayer.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/金玟岐 - 岁月神偷 (Demo).mp3");
    mediaPlayer.prepare();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    mediaPlayer.start();
    }
    public void stopMusic(){

        mediaPlayer.pause();
        isfist=false;
    }
    class MyIBinder extends Binder{
        public void play(){
            playMusic();
            Log.e("TAG", "setDataSource");
        }
        public void pause(){
            stopMusic();
        }
    }
    

    }
    MainActivity 中
    ···

    package com.example.ytest11_service;

    import com.example.ytest11_service.MyService.MyIBinder;

    import android.app.Activity;
    import android.content.ComponentName;
    import android.content.Intent;
    import android.content.ServiceConnection;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;

    public class MainActivity extends Activity {
    private Intent service;
    private MyIBinder myIBinder;
    private MyServiceConnetion myServiceConnetion;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    service = new Intent(MainActivity.this,MyService.class);
    //开启 创建并开启
    findViewById(R.id.btn1).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    startService(service);
    myServiceConnetion = new MyServiceConnetion();
    bindService(service, myServiceConnetion, BIND_AUTO_CREATE);
    }
    });
    //关闭
    findViewById(R.id.btn2).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                stopService(service);
    
                
            }
        });
     //绑定(服务)创建服务并连接服务, 不开启
     findViewById(R.id.btn3).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
            myServiceConnetion = new MyServiceConnetion();
            bindService(service, myServiceConnetion, BIND_AUTO_CREATE); 
            
            }
        });
     //解绑
     findViewById(R.id.btn4).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                if (myServiceConnetion!=null) {
                unbindService(myServiceConnetion);
                myServiceConnetion=null;
                }
                
            }
        });
     //播放
     findViewById(R.id.btn5).setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            myIBinder.play();
            Log.e("TAG", "setDataSource");
        }
    });
     //暂停
     findViewById(R.id.btn6).setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            myIBinder.pause();
        }
    });
        
    }
    class MyServiceConnetion implements ServiceConnection{
    
        @Override//当与服务连接时
        public void onServiceConnected(ComponentName name, IBinder service) {
            myIBinder = (MyIBinder) service;
        
        }
    
        @Override
        public void onServiceDisconnected(ComponentName name) {
            
        }
        
    }
    

    }

    ···
    效果图


    image.png

    ···

    相关文章

      网友评论

          本文标题:开启服务(播放音乐)

          本文链接:https://www.haomeiwen.com/subject/uclduftx.html