2011-07-22 20 views
1

我意識到音樂應用程序可能相同,也可能不相同,具體取決於設備,但我正在爲自己的設備編寫此應用程序。Android - 與小部件的設備音樂應用程序進行互動

我是否正確思考我需要創建一個服務與我的小部件,然後以某種方式將此服務綁定到com.android.music.MediaPlaybackService?

我在這方面找不到太多有用的文檔,但在市場上看,有很多小工具可以做同樣的事情。我已經看到一些StackOverflow的答案,說這是不可能的,但同時,我已經安裝了幾個小部件來做到這一點。

有沒有人做過類似的事情,可以將我指向正確的方向?

回答

0

至少在Android 2.2.2中這個方法確實有效。

我爲我的小部件創建了一個服務。該服務的onCreate綁定到com.android.music.IMediaPlaybackService。

此服務檢查一「命令」標誌的在onStart並相應地貫穿的私人ServiceConnection結合的服務的合適的方法,則該鍵被清除的每個命令之後的連接,例如:

private ServiceConnection mConnection = new ServiceConnection(){ 
     public void onServiceConnected(ComponentName className, 
       IBinder service) { 
      mService = IMediaPlaybackService.Stub.asInterface(service); 

      //Toast.makeText(getApplicationContext(), "!!!", Toast.LENGTH_SHORT).show(); 
      try { 
       if (mService.isPlaying()) { 
        mService.pause(); 
       } else { 
        mService.play(); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
       throw new RuntimeException(e); 
      } 
      unbindService(mConnection); 
     } 

     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      // TODO Auto-generated method stub 
      mService = null; 
     } 

    }; 
0

這並不是說這是不可能的,但它是無證的和不受支持的。此外,您推定的方法將無法使用,因爲該服務不再基於the source code導出。它在大約10個月前被鎖定在源頭,所以它可能不會在薑餅和蜂巢上出口。

+0

這是不幸的。不過,我確實有FroYo。我一直在瀏覽AOSP的音樂應用程序和開源的Last.FM應用程序的源代碼,乍看之下,Last.FM似乎在做我打算做的事情,但是您是否說過所有這些應用程序都沒有薑餅和後來的工作? – aperture

+0

@aperture:據我所知,根據消息來源,該服務在10個月前被標記爲未出口。我不確定這種變化是否會成爲薑餅和蜂巢,但似乎很可能。 – CommonsWare

+0

薑餅的來源已經有一段時間了。 –

相關問題