为视频流实现浮动视图

Posted

技术标签:

【中文标题】为视频流实现浮动视图【英文标题】:Implement Floating View for video streaming 【发布时间】:2016-07-27 14:33:07 【问题描述】:

我想实现FloatingView。这使得 Activity 调整大小和可拖动(如下图所示)。我也看到了这个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;
    

 

编辑:不是draggable panel,因为在这个应用程序中,如果用户转到另一个活动视频没有被中断并且仍在播放。

【问题讨论】:

您好,很抱歉这个愚蠢的问题,但是当您说“无法继续播放视频”时,究竟是什么意思?是不是不能“流畅”看视频? @jos 正如您在 Gif 图像视频中看到的那样,视频没有停止(或中断)。当调整活动大小时不需要调用 setOnPreparedListener. 【参考方案1】:

您想要实现的是Picture in Picture,类似于 YouTube 应用所做的。

android N 起,Android 正式在电视上支持此功能。但对于移动设备,您可以使用 Draggable Panel library。

【讨论】:

谢谢,但是 Draggable 面板不起作用,因为它绑定到它的活动,当你去另一个活动时,可拖动的被破坏。 这就是我们使用 Fragments 的原因,我的朋友 :) 这是你认为是片段的应用程序链接? play.google.com/store/apps/details?id=tv.perception.android.aio 这很难说。但如果我是你,我会使用 Fragments 来完成它。我确信图书馆的自述文件已经充分解释了如何设置它。 我反编译了 APK 我确定它是一个服务 ;)

以上是关于为视频流实现浮动视图的主要内容,如果未能解决你的问题,请参考以下文章

Android:使用 JW Player SDK 实现浮动视频播放器(如 YouTube android 应用)

MobileFirst 中的浮动原生视图

lwuit 视频组件浮动在命令上

关于浮动的设置 清除 音频 视频选择器

如何在收藏视图中实现视频播放?

浅谈float浮动