2017-02-20 4 views
1

Кнопка паузы в диалоговом окне Cast не работает. Я заметил ту же проблему с примером приложения CastVideos-android. Кто-нибудь работал вокруг этого?Кнопка паузы, не работающая в диалоговом окне отливки Android

+0

Можете добавить несколько кодов и журналов возникшей проблемы? –

ответ

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. Не знаете, как установитьDialogFactory с моим использованием. – milleph

+0

Trick должен получить MediaRouteActionProvider, вызвав (MediaRouteActionProvider) MenuItemCompat.getActionProvider (MenuItem), а затем вызвав setDialogFactory на этом – milleph

+0

Теперь кнопка паузы отправляет сообщение получателю, который в свою очередь вызывает мой экземпляр cast.receiver.media.Player.pause() в javascript. Отлично. Снова на стороне приемника я меняю состояние проигрывателя с «ВОСПРОИЗВЕДЕНИЕ» на «PAUSED» и возвращает эту строку в файле cast.receiver.media.Player.getState(). Выполнение этого приводит к отображению паузы в диалоговом окне передачи отправителя, чтобы изменить изображение воспроизведения. Прогресс! Тем не менее, нажатие кнопки воспроизведения в диалоговом окне приведения ничего не делает .... Я попробую это в приложении примера CastVideos-android. – milleph

Смежные вопросы