2016-07-27 6 views
7

Я хочу реализовать FloatingView. Которые изменяют размер и перетаскивают Activity (как показано на рисунке). Я также вижу это thread и на основе этого создаю свой собственный service. (См. Также thisthis)Реализация плавающего изображения для потоковой передачи видео

Проблема В соответствии с осуществлением я не могу продолжить видео, а также иногда экран переходит в черный цвет и ничего не отображается. Я хочу знать, каков правильный способ справиться с этим? Без видео прерывается и продолжает играть. (Я знаю, что прерывание из-за setOnPrepareListener, но как избежать этого?)

Вот мой код:

public class FloatingStream extends Service implements FloatingViewListener { 


    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     if (mFloatingViewManager != null) { 
      return START_STICKY; 
     } 


     final DisplayMetrics metrics = new DisplayMetrics(); 
     final WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
     windowManager.getDefaultDisplay().getMetrics(metrics); 
     floatingServiceBinder = new FloatingServiceBinder(this); 
     final View rootView = LayoutInflater.from(this).inflate(R.layout.view_exoplayer, null, false); 
     final VideoView videoView = (VideoView) rootView.findViewById(R.id.video_view); 
     videoView.setVideoURI(Uri.parse(MY_URL)); 
     videoView.setOnPreparedListener(new OnPreparedListener() { 
      @Override 
      public void onPrepared() { 
       videoView.start(); 
      } 
     }); 

     mFloatingViewManager = new FloatingViewManager(this, this); 
     mFloatingViewManager.setFixedTrashIconImage(R.drawable.ic_play_circle_filled); 
     mFloatingViewManager.setActionTrashIconImage(R.drawable.ic_menu); 
     final FloatingViewManager.Options options = new FloatingViewManager.Options(); 
     mFloatingViewManager.addViewToWindow(rootView, options); 


     return START_REDELIVER_INTENT; 
    } 

} 

enter image description here

Edit: это не draggable panel, потому что в этом приложении, если пользователь перейти к другому видео активности не прерывается и продолжает воспроизводиться.

+0

Привет, извините за этот фиктивный вопрос, но когда вы говорите, что вы «не можете продолжать видео», что это значит? Разве вы не можете смотреть видео «плавно»? – jos

+0

@jos Как вы видите, в видео Gif видео не останавливается (или прерывается). когда операция изменения размера не требуется вызывать ** setOnPreparedListener **. – Amir

ответ

1

То, что вы пытаетесь достичь, - Picture in Picture, похожее на то, что делает приложение YouTube.

Android официально поддерживает это для ТВ, так как Android N. Для мобильных устройств, однако, вы можете использовать Draggable Panel library.

+0

Спасибо, но панель Draggable не работает, потому что она привязана к ее активности, и когда вы переходите на другую деятельность, которую можно уничтожить. – Amir

+0

Вот почему мы используем Фрагменты, мой друг :) – Suleiman19

+0

Вот ссылка приложения, которую вы считаете фрагментом? https://play.google.com/store/apps/details?id=tv.perception.android.aio – Amir