2011-07-22 4 views
1

からデバイスの音楽アプリケーションと対話します。アンドロイド - 私は音楽アプリケーションは、デバイスに応じて同じであってもなくてもよいが、私は自分のデバイスのために、このアプリケーションを書いて実現ウィジェット

は私がその後、何とか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ヶ月前にソースに閉じ込められていたので、おそらくGingerbreadとHoneycombにはエクスポートされていないでしょう。

+0

この残念です。私はFroYoを持っています。一見すると、Last.FMは私がやろうとしていることをしているように見えますが、これらのアプリケーションのすべてがそうではないと言っていますか?AOSPとオープンソースのLast.FMアプリケーションから音楽アプリケーションのソースを探しています。ジンジャーブレッドとそれ以降の仕事? – aperture

+0

@aperture:ソースによると、そのサービスは約10ヶ月前にエクスポートされていないとフラグされています。私は、GingerbreadとHoneycombに変更が加えられたのかどうかはわかりませんが、おそらくそうです。 – CommonsWare

+0

ジンジャーブレッドのソースはしばらく外に出ました。 –

関連する問題