2011-10-13 16 views
0

我有一個應用程序,使用媒體播放器的服務播放無線電流,它的工作方式如下: 當它開始呼叫服務和收音機開始播放時,在主視圖中我有一個播放和停止按鈕,所以當收音機立即開始播放時,我已經設置了播放按鈕GONE和停止按鈕VISIBLE。所以如果我按下停止按鈕,它會停止服務,並使播放按鈕可見和停止按鈕結束,反之亦然。 到目前爲止,如果服務檢測到錯誤,它會向我的通知欄發送一個Toast和更新,但Stop按鈕仍然是可見的,而Play按鈕仍然是GONE,所以我的問題是如何在檢測時使我的服務的錯誤使按鈕更改?所以我可以有播放按鈕可見和停止去嘗試再次。 這就是我有代碼的OnCreate按鈕在我的主要活動:Android,可以控制一個服務按鈕嗎?

Button playBtn = (Button) findViewById(R.id.buttonPlay); 
    playBtn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 

      View b = findViewById(R.id.buttonPlay); 
       b.setVisibility(View.GONE); 

       View c = findViewById(R.id.buttonStopPlay); 
       c.setVisibility(View.VISIBLE); 

        TextView textRadioName = (TextView) findViewById(R.id.textView); 
        textRadioName.setText("You are listening Radio!"); 
        startService(new Intent("PLAY")); 
        start(); 

    }}); 

    Button stopBtn = (Button) findViewById(R.id.buttonStopPlay); 
    stopBtn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     View b = findViewById(R.id.buttonStopPlay); 
     b.setVisibility(View.GONE); 

     View c = findViewById(R.id.buttonPlay); 
     c.setVisibility(View.VISIBLE); 

      TextView textRadioName = (TextView) findViewById(R.id.textView); 
     textRadioName.setText("Listen Radio Here"); 

     pause(); 
    }}); 

,這是我在我的MediaPlayer服務代碼中的錯誤:

@Override 
public boolean onError(MediaPlayer mp, int what, int extra) { 
    Toast.makeText(this, "Radio not connected!...." , Toast.LENGTH_LONG) .show(); 
    StreamError = true; 
    updateNotification("Radio not connected!"); 
    return false; 
} 

我喜歡它的工作原理,但方式它看起來有點奇怪,我的停止按鈕可見,而不是播放之一,到目前爲止,如果我按下停止,它會讓我的播放出現,然後我可以再試一次!但不是應用程序應該如何工作? 謝謝你的時間。我希望有人能告訴我方式。

回答

1

你可以綁定到你的服務,這將返回一個你必須實現的IBinder。在裏面你的IBinder你可以把一個函數,如:

public void setPlayer(IPlayer player); 

你在哪裏IP層必須要從服務調用的功能集。這是您可以將代碼隱藏在停止按鈕,顯示播放按鈕或您希望從服務中執行的其他任何操作的位置。

按照要求,在文檔的鏈接樣本:http://developer.android.com/reference/android/app/Service.html#LocalServiceSample

+0

聽起來很不錯,但我失去了我該如何使用呢?我可以在哪裏找到一個樣本,或者可以分享一些關於如何實施或使用IBinder的內容?謝謝。 – zvzej

+0

從在線教程中獲得它。 – zvzej

+0

對不起,我昨天沒有在線 - 很高興你得到它的工作。 – brianestey

相關問題