2010-02-19 38 views
6

我想要做的只是通過服務在我的應用程序中控制背景音樂,這樣我就可以啓動它並阻止它進行任何活動。Android服務控制MediaPlayer

當我將Toast服務告知服務啓動並銷燬時,我已經完成了一切設置,但只要我把媒體播放器放在那裏,它就會啓動正常並開始播放音樂,但只要點擊一下按鈕停止服務我收到錯誤和強制關閉。

請別人幫我看看我做錯了什麼..我對android開發很新穎我猜這將是一件容易的事情。

這裏是我的代碼:

import android.app.Service; 

import android.content.Intent; 

import android.media.MediaPlayer; 

import android.os.IBinder; 

import android.widget.Toast; 

public class MyService extends Service { 

    private MediaPlayer player; 

    @Override 
    public IBinder onBind(Intent intent) { 

     return null; 

    } 

    @Override 
    public void onCreate() { 

     super.onCreate(); 

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

     MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 

     player.start(); 

     player.setLooping(true); 

    } 

    @Override 
    public void onDestroy() { 

     super.onDestroy(); 

     player.stop(); 

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

    } 

} 
+0

您可以發佈錯誤嗎?它會出現你正在關閉服務不正確:)但錯誤會告訴我們究竟是什麼。 – Steve 2010-02-19 20:38:58

+0

看看我的答案你的重複帖子http://stackoverflow.com/questions/2298817/problem-with-my-android-service-please-help,看看是否有幫助 – snctln 2010-02-20 06:53:20

回答

0

onBind方法將返回null,只有當它是一個 「本地服務」。 如果我理解正確,您想創建遠程服務。

顯示this reference site.

5

player.stop();遠程服務部分-----這行必須給你nullPointerException

private MediaPlayer player;這裏您僅創建reference.But對象,您在onCreate()中創建僅具有本地範圍。請創建一個具有類級別範圍的對象,然後它將工作。

0

你有選手對象聲明的局部到的OnCreate程序,刪除本地報關,見下圖:

//MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 
player = MediaPlayer.create(MyService.this, R.raw.my_music); 
0

像寫**裏克·d **被宣佈爲媒體播放器,你已經宣佈球員的問題之前,只需輸入:

player = MediaPlayer.create(ForegroundService.this, R.raw.my_music);