2012年11月8日木曜日

RemoteControleClientを使うにはAudioFocusが必要

RemoteControlClientはテクブに書いてある通りに書けば動きま・・・せん。

リモートコントロールを表示するにはAudioFocusを取得する必要があります。
省略されているのは、それくらい常識って事なんでしょうか。

     ComponentName myEventReceiver = new ComponentName(getPackageName(), MusicIntentReciever.class.getName());
     AudioManager myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
     myAudioManager.registerMediaButtonEventReceiver(myEventReceiver);
     myAudioManager.requestAudioFocus( new OnAudioFocusChangeListener() {
          @Override
          public void onAudioFocusChange(int focusChange) {
                Log.d(TAG, "focusChanged:"+focusChange );
          }
     } , AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
     
     // build the PendingIntent for the remote control client
     Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
     mediaButtonIntent.setComponent(myEventReceiver);
     PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, 0);
     
     // create and register the remote control client
     mRemoteControlClient = new RemoteControlClient(mediaPendingIntent);
     myAudioManager.registerRemoteControlClient(mRemoteControlClient);
     mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
     mRemoteControlClient.setTransportControlFlags(
                  RemoteControlClient.FLAG_KEY_MEDIA_PLAY |
                  RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
                  RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |
                  RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
                  RemoteControlClient.FLAG_KEY_MEDIA_STOP);
     mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
     mRemoteControlClient.editMetadata(true)
           .putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, "a")
           .putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, "b")
           .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, "c")
           .apply();

MusicIntentRecieverはAndroid SDKのサンプルのRandomMusicPlayerに含まれているものが使えます。そちらを参考にして下さい。

0 件のコメント:

コメントを投稿