为视频流实施浮动视图

时间:2016-07-27 14:33:08

标签: android video-streaming android-videoview

我想实施FloatingView。这使活动调整大小和拖动(如下图)。我也看到了这个thread,并在此基础上创建了自己的service。 (另见this& this图书馆)

问题是根据实施我不能继续视频而且有时屏幕会变黑并且没有任何显示。我想知道处理这个问题的正确方法是什么?没有视频中断并继续播放。 (因为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

修改它不是draggable panel,因为在此应用中,如果用户转到另一个未中断且仍在播放的活动视频。

1 个答案:

答案 0 :(得分:1)

您要实现的目标是http://blog.instagram.com/post/148348940287/160802-stories,类似于YouTube应用的功能。

Android正式支持此电视,因为Android N.但是对于移动设备,您可以使用Picture in Picture