Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android多媒體學習六:利用Service實現背景音樂的播放

Android多媒體學習六:利用Service實現背景音樂的播放

編輯:Android開發實例

Android允許我們使用Service組件來完成後台任務,這些任務的允許不會影響到用戶其他的交互。

1、Activity類

 

  1. package demo.camera;  
  2. import android.app.Activity;  
  3. import android.content.ComponentName;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.content.ServiceConnection;  
  7. import android.os.Bundle;  
  8. import android.os.IBinder;  
  9. import android.view.View;  
  10. /**  
  11.  * 演示Activity如何利用Service來完成後台Audio的播放功能  
  12.  * 同時如何將Service和Activity進行綁定  
  13.  * @author Administrator  
  14.  *  
  15.  */ 
  16. public class BackgroundAudioDemo extends Activity {  
  17.       
  18.     private AudioService audioService;  
  19.       
  20.     //使用ServiceConnection來監聽Service狀態的變化  
  21.     private ServiceConnection conn = new ServiceConnection() {  
  22.           
  23.         @Override 
  24.         public void onServiceDisconnected(ComponentName name) {  
  25.             // TODO Auto-generated method stub  
  26.             audioService = null;  
  27.         }  
  28.           
  29.         @Override 
  30.         public void onServiceConnected(ComponentName name, IBinder binder) {  
  31.             //這裡我們實例化audioService,通過binder來實現  
  32.             audioService = ((AudioService.AudioBinder)binder).getService();  
  33.               
  34.         }  
  35.     };  
  36.       
  37.     public void onCreate(Bundle savedInstanceState){  
  38.         super.onCreate(savedInstanceState);  
  39.         setContentView(R.layout.back_audio);  
  40.     }  
  41.       
  42.       
  43.     public void onClick(View v){  
  44.         int id = v.getId();  
  45.         Intent intent = new Intent();  
  46.         intent.setClass(this, AudioService.class);        
  47.         if(id == R.id.btn_start){  
  48.             //啟動Service,然後綁定該Service,這樣我們可以在同時銷毀該Activity,看看歌曲是否還在播放  
  49.             startService(intent);  
  50.             bindService(intent, conn, Context.BIND_AUTO_CREATE);  
  51.             finish();  
  52.         }else if(id == R.id.btn_end){  
  53.             //結束Service  
  54.             unbindService(conn);  
  55.             stopService(intent);  
  56.             finish();  
  57.         }else if(id == R.id.btn_fun){  
  58.             audioService.haveFun();  
  59.         }  
  60.     }  
  61. }  

2、Service類

 

  1. package demo.camera;  
  2. import android.app.Service;  
  3. import android.content.Intent;  
  4. import android.media.MediaPlayer;  
  5. import android.os.Binder;  
  6. import android.os.IBinder;  
  7. import android.widget.MediaController.MediaPlayerControl;  
  8. /**  
  9.  * 為了可以使得在後台播放音樂,我們需要Service  
  10.  * Service就是用來在後台完成一些不需要和用戶交互的動作  
  11.  * @author Administrator  
  12.  *  
  13.  */ 
  14. public class AudioService extends Service implements MediaPlayer.OnCompletionListener{  
  15.       
  16.     MediaPlayer player;  
  17.       
  18.     private final IBinder binder = new AudioBinder();  
  19.     @Override 
  20.     public IBinder onBind(Intent arg0) {  
  21.         // TODO Auto-generated method stub  
  22.         return binder;  
  23.     }  
  24.     /**  
  25.      * 當Audio播放完的時候觸發該動作  
  26.      */ 
  27.     @Override 
  28.     public void onCompletion(MediaPlayer player) {  
  29.         // TODO Auto-generated method stub  
  30.         stopSelf();//結束了,則結束Service  
  31.     }  
  32.       
  33.     //在這裡我們需要實例化MediaPlayer對象  
  34.     public void onCreate(){  
  35.         super.onCreate();  
  36.         //我們從raw文件夾中獲取一個應用自帶的mp3文件  
  37.         player = MediaPlayer.create(this, R.raw.tt);  
  38.         player.setOnCompletionListener(this);  
  39.     }  
  40.       
  41.     /**  
  42.      * 該方法在SDK2.0才開始有的,替代原來的onStart方法  
  43.      */ 
  44.     public int onStartCommand(Intent intent, int flags, int startId){  
  45.         if(!player.isPlaying()){  
  46.             player.start();  
  47.         }  
  48.         return START_STICKY;  
  49.     }  
  50.       
  51.     public void onDestroy(){  
  52.         //super.onDestroy();  
  53.         if(player.isPlaying()){  
  54.             player.stop();  
  55.         }  
  56.         player.release();  
  57.     }  
  58.       
  59.     //為了和Activity交互,我們需要定義一個Binder對象  
  60.     class AudioBinder extends Binder{  
  61.           
  62.         //返回Service對象  
  63.         AudioService getService(){  
  64.             return AudioService.this;  
  65.         }  
  66.     }  
  67.       
  68.     //後退播放進度  
  69.     public void haveFun(){  
  70.         if(player.isPlaying() && player.getCurrentPosition()>2500){  
  71.             player.seekTo(player.getCurrentPosition()-2500);  
  72.         }  
  73.     }  
  74. }  

3、在清單文件AndroidManifest.xml中配置Service

        <service
            android:name=".AudioService" />

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved