Home 主頁 Service 服務計畫 Android App 手機程式 Expertise 專業領域 Blog 博客 Download 下載 FAQ 網頁製作常見問題 Support 支援 Links 友情連結 Contact Us 聯絡我們

9 - 建立Service

發佈: 08-07-2011

分類: Android 開發教學

第九課:建立Service

本文介紹如何使用Service。這次我們會在一個activity中開始和停止一個播放mp3的service。Service是沒有UI的,它永遠也是在背景工作,播放音樂是一個很 好的例子。我們期望即使屏幕上執行的activity不再是一個player,音樂也不會停止。因此,我們不可以只在activity上播放,因為當它onPause或onStop時,音樂便會停止。這個時候,在service上播放是個更好的選擇。

首先我們建立一個名為ServiceDemo的project。加入一個名為PlayerService的Service,它就是在背景工作的播放服務。我們override它super class的onStart()和onDestory()。還記得service的life cycle嗎?如忘記了,可參考第二課。

我們希望service開始時播放音樂,service完成時停止音樂。為這PlayerService加入一個member variable:MediaPlayer m。

MediaPlayer m;

在onStart()中加入以下coding播放mp3:

Toast.makeText(this, "Service start", Toast.LENGTH_SHORT).show();

if (m!=null) m.stop();
			
m = MediaPlayer.create(this, R.raw.effect);
m.start();

在onDestroy()中加入以下coding停止播放:

Toast.makeText(this, "Service stop", Toast.LENGTH_SHORT).show();
m.stop();
m.release();

也許你留意到,當我們執行Mediaplayer.create()時,我們傳入一個R.raw.effect,到底這是什麼呢?這就是播放的mp3文件。 打開res文件夾,新增一個raw的folder,把effect.mp3放到這裡。如果你沒有經eclipse copy文件,你要按下F5以refresh這文件。 這個資源便會加入到你的project,你也可以用R.raw.effect來選擇這文件(不用.mp3的extension)。

由於你新增了一個service,因此你要在AndroidManifest.xml中加入這service的定義。


我們現在就要在ServiceDemoActivity中控制這個service的開關。在main.xml中加入btnStartService和btnStopService。 在onCreate中找出這兩個button,加入以下coding:

btnStartService.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    Intent i = new Intent(ServiceDemoActivity.this, PlayerService.class);
    startService(i);
  }
});

btnStopService.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    Intent i = new Intent(ServiceDemoActivity.this, PlayerService.class);
    stopService(i);
  }
});

我們通過intent及startService/stopService控制service的開關。

Download: ServiceDemo

訪客: Copyright ©2011 KF Software House 版權所有 | 網站地圖