2017-02-20 9 views

答えて

1

私はまったく同じ問題を抱えていました。私は、MediaRouteDialogFactory、MediaRouteControllerDialogFragment、およびMediaRouteControllerDialogを拡張したクラスを作って取り組みました。


public class MyMediaRouteDialogFactory extends MediaRouteDialogFactory { 
     @NonNull @Override 
     public MediaRouteControllerDialogFragment onCreateControllerDialogFragment() { 
      return new MyMediaControllerDialogFragment(); 
     } 
    } 

public class MyMediaControllerDialogFragment extends MediaRouteControllerDialogFragment { 
    @Override public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(STYLE_NO_FRAME, android.R.style.Theme_NoTitleBar_Fullscreen); 
    } 

    @Override 
    public MediaRouteControllerDialog onCreateControllerDialog(Context context, Bundle savedInstanceState) { 
     return new MyMediaRouteControllerDialog(context); 
    } 
} 

public class MyMediaRouteControllerDialog extends MediaRouteControllerDialog { 
    public MyMediaRouteControllerDialog(Context context) { 
     super(context); 
    } 

    public MyMediaRouteControllerDialog(Context context, int theme) { 
     super(context, theme); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Window window = getWindow(); 
     if (window != null) { 
      window.getAttributes().dimAmount = 0.5f; 
      window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
     } 

     View playPause = findById(this, R.id.mr_control_play_pause); 
     if (playPause != null && playPause instanceof ImageView && getOwnerActivity() != null) { 
      UIMediaController mediaController = new UIMediaController(getOwnerActivity()); 
      mediaController.bindImageViewToPlayPauseToggle((ImageView) playPause, mPlayArrowDrawable, mPauseDrawable, mStopDrawable, null, false); 
     } 
    } 

}


{ 
    // On initializing MediaRouteButton 
    ((MediaRouteButton) mCastButton).setDialogFactory(new MyMediaRouteDialogFactory()); 
    CastButtonFactory.setUpMediaRouteButton(getActivity(), mCastButton); 
} 

つまり、私はUIMediaControllerに再生/一時停止ボタンをバインドしました。

+0

Jaewoo、お返事ありがとうございました。私が立ち往生した唯一の場所は最後の部分です。私のアプリでは、CastButtonFactory.setUpMediaRouteButton(getApplicationContext()、m、R.id.item_mediaroute)を呼び出しているので、キャストボタンはアクションバーメニューで定義されています。ここで、mはAppCompatActivity.onCreateOptionsMenu呼び出しで膨らんだメニューです。私の用法でSetDialogFactoryを設定する方法がわかりません。 – milleph

+0

(MediaRouteActionProvider)MenuItemCompat.getActionProvider(MenuItem)を呼び出すことによってMediaRouteActionProviderを取得し、その上でsetDialogFactoryを呼び出すことです。 – milleph

+0

これで、一時停止ボタンは受信側にメッセージを送りますjavascriptのcast.receiver.media.Player.pause()の私のインスタンス。完璧。受信側では、プレイヤーの状態を「再生中」から「一時停止中」に変更し、その文字列をcast.receiver.media.Player.getState()に返します。これを行うと、送信者キャストダイアログの一時停止画像が再生画像に変わります。進捗!しかし、キャストダイアログの再生ボタンを押しても何もしません.... CastVideos-androidサンプルアプリケーション – milleph

関連する問題