Service——音乐播放

一、项目概括

          1、项目概述

                           主要是为了明白Service服务应用的目的来播放音乐,主要是通过对服务操作来进行的。

          2、项目运行图

                      

二、项目讲解

             1、项目文件

 

      2、修改布局文件activity_main.xml为:

            



    

        


      3、在com.example.service包中创建AudioService.java文件,代码如下:

         

package com.example.service;

/**
 * 多线程实现后台播放背景音乐的service
 */
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;

public class AudioService extends Service implements
		MediaPlayer.OnCompletionListener {
	// 实例化MediaPlayer对象
	MediaPlayer player;
	private final IBinder binder = new AudioBinder();

	@Override
	public IBinder onBind(Intent intent) {
		return binder;
	}

	public void onCreate() {
		super.onCreate();
		// 从raw文件夹中获取一个应用自带的mp3文件
		player = MediaPlayer.create(this, R.raw.qq);
		player.setOnCompletionListener(this);
		player.setLooping(true);
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		super.onStartCommand(intent, flags, startId);
		if (!player.isPlaying()) {
			new MusicPlayThread().start();
		}
		else player.isPlaying();
		return START_STICKY;
	}

	
	/**
	 * 当Audio播放完的时候触发该动作
	 */
	public void onCompletion(MediaPlayer mp) {
		stopSelf();// 结束了,则结束Service

	}

	public void onDestroy() {
		super.onDestroy();
		if (player.isPlaying()) {
			player.stop();
		}
		player.release();
	}

	// 为了和Activity交互,我们需要定义一个Binder对象
	public class AudioBinder extends Binder {
		// 返回Service对象
		public AudioService getService() {
			return AudioService.this;
		}
	}

	private class MusicPlayThread extends Thread {
		public void run() {
			if (!player.isPlaying()) {
				player.start();
			}
		}
	}
   
}


       4、修改MainActivity.xml文件,代码如下:

               

package com.example.service;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	//创建Button对象
	private Button btnPlayClick;
	private Button btnStopClick;
	//创建Intent
    Intent intent = new Intent(MainActivity.this,  
            AudioService.class);  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       //获取Button对象
        btnPlayClick=(Button) findViewById(R.id.btnPlay);
        btnStopClick=(Button) findViewById(R.id.btnStop);
        //播放
        btnPlayClick.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				startService(intent);  
			}
		});
        
        //暂停
        btnStopClick.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				stopService(intent);
			}
		});
    }

    @Override
    protected void onResume() {
    	super.onResume();
    	stopService(new Intent(this,AudioService.class));
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

 


你可能感兴趣的:(Android)