1-2 秒后暂停 YouTube 视频

2024-03-29

我正在使用 Youtube Player api 在我的应用程序中播放 YouTube 视频。视频开始播放并在 1-2 秒后暂停

我创建了视频片段和视图组。随后我创建了一些 youtobe 视频视图。

视频片段

public static final class VideoFragment extends YouTubePlayerSupportFragment implements
        OnInitializedListener
{

    private YouTubePlayer player;
    private String videoId;

    public static VideoFragment newInstance()
    {
        return new VideoFragment();
    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        initialize(Constants.DEVELOPER_KEY, this);
    }

    @Override
    public void onDestroy()
    {
        if (player != null)
        {
            player.release();
        }
        super.onDestroy();
    }

    public void setVideoId(String videoId)
    {
        if (videoId != null && !videoId.equals(this.videoId))
        {
            this.videoId = videoId;
            if (player != null)
            {
                player.cueVideo(videoId);
            }
        }
    }

    public void pause()
    {
        if (player != null)
        {
            player.pause();
        }
    }

    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player,
            boolean restored)
    {
        this.player = player;
        if (!restored && videoId != null)
        {
            player.cueVideo(videoId);
        }
    }

    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult result)
    {
        this.player = null;
    }

}

创建 Youtobe 视频视图的功能

private ViewGroup createYouTubePlayer(final VideoData data, final FrameLayout youTubePlayer)
{

    youTubePlayer.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            FragmentManager fm = mActivity.getSupportFragmentManager();

            if (v.getId() == mCurrentYouTubePlayer)
            {
                return;
            }

            VideoFragment fragment = (VideoFragment) fm.findFragmentById(mCurrentYouTubePlayer);
            if (fragment == null)
            {
                fragment = VideoFragment.newInstance();
                fragment.setVideoId(data.srcPath);

                fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit();
                mCurrentYouTubePlayer = v.getId();
            }
            else
            {
                fm.beginTransaction().remove(fragment).commit();

                fragment = VideoFragment.newInstance();
                fragment.setVideoId(data.srcPath);
                fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit();
                mCurrentYouTubePlayer = v.getId();
            }
        }
    });



    return youTubePlayer;
}

无法按照 Google 的规定在播放器上方添加按钮作为叠加层,否则播放器将停止:

https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView

请注意,在播放视频时,此视图的最小尺寸为 200x110 dp。如果您将视图缩小,视频就会 自动停止播放。另外,不允许叠加 播放视频时与其他视图一起查看。

该视图不支持填充。要达到相同的效果,请将 另一个 ViewGroup 中的视图或为其提供边距。

YouTubePlayer 也不支持填充。

要将您的视图叠加到视频上,我建议您使用外放播放器, 它不是 android sdk 的一部分,但由 google 推荐并包含在 android 开发人员文档中:

http://google.github.io/ExoPlayer/ http://google.github.io/ExoPlayer/

Exoplayer 允许您流式传输任何类型的视频,而不仅仅是 Youtube 视频。

值得一提的是,Exoplayer 用于 YouTube 应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1-2 秒后暂停 YouTube 视频 的相关文章

  • SharedPreferences - java.lang.Boolean 无法转换为 java.lang.String

    我对因不应该抛出的异常而感到困惑 错误如下 java lang ClassCastException java lang Boolean cannot be cast to java lang String 但是 我的代码不会尝试将布尔值转
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 获取 NullPointerException:尝试从字段“int android.view.View.mViewFlags”读取 - Android 动画

    我已经实现了一个动画 其中我在回收器视图中有图像视图 单击该项目时我想在回收器视图之外的图像视图上做一些动画 这样 我创建了一个新的图像视图 将其添加到主容器中 做了动画 最后我将它从主容器中取出 以下是回收器视图的点击项的代码 Code
  • Android 错误 - close() 从未在数据库上显式调用

    我应该在代码的哪里调用 close LogCat 返回此错误 close 从未在数据库上显式调用 android database sqlite DatabaseObjectNotClosedException 应用程序未关闭此处打开的游标
  • 从SQLite列中获取所有数字字符串并进行总和计算

    我是 Android 和 SQLite 的新手 我在 SQLite 中有一个只有数字的 AMOUNT 列 我可以在 ListView 中显示它 但我无法找到任何我理解的方法来将它们全部添加并显示在 TextView 中 这是数据库助手 im
  • 支持 API 28(Android Pie) 上的 Android StrongBox 的 Android 智能手机列表

    我需要 Android 9 中支持安全元件和 StrongBox 的 Android 手机列表 在哪里或如何找到该列表 我在 Samsung Galaxy S9 和 AVD Google Pixel XL API 28 上尝试了下面的代码
  • 有没有办法隐藏 TextView 中的文本?

    有没有办法隐藏 TextView 中的部分 但不是全部 文本 我尝试使用 AbsoluteSizeSpan 将大小设置为 0 但这没有任何我看到的视觉效果 你可以将大小设置为 1 但实际上你会得到凹凸不平的线条 而不是可读的文本 很可爱 但
  • Moshi 无法解析 nullable

    你好 希望你能帮助我 使用 kotlin Retrofit2 moshi 我从 https api spacexdata com v3 launches 获取数据并解析它 一切都很顺利 我得到的属性如下 flight number miss
  • WebView 与 Chrome 自定义选项卡

    我正在构建一个应用程序 在详细活动中我必须显示一个网页 我本来打算使用 WebView 但后来我看到了 Chrome Custom Tab 你们认为最好实施什么 为什么 如果您只想显示某个页面 那么我建议您使用 chrome 自定义选项卡
  • 片段开始时显示用于编辑文本的键盘

    当我的片段开始时 我希望我的编辑文本成为焦点 让用户开始输入内容 我可以使用 requestFocus 将其聚焦 但无法显示键盘 我已经尝试过这两种方法 edit EditText view findViewById R id search
  • 如何在android 4.2中显示选项菜单

    我正在尝试在我的测试应用程序中创建菜单选项 当我将清单中的主题设置为默认时 我可以看到菜单 菜单显示在顶部 如果我将清单中的主题设置为 NoTitleBar 我看不到菜单选项 我想在清单中设置主题 NoTitleBar 时获取菜单 如何修复
  • Android 设备选择器在目标列中显示红色 X

    我最近构建了一个 Android 应用程序 minSdkVersion 为 7 targetSdkVersion 为 10 我现在正在使应用程序兼容平板电脑并添加操作栏 因此 我将 targetSdkVersion 更新为 15 并在项目属
  • TabHost 中的 Webview = 以黑屏启动

    我正在尝试在有 4 个选项卡的 tabhost 中使用 webview 所有选项卡都链接到同一个 webview 这很好 除了一个问题 启动时 网络视图是黑色的 单击选项卡 2 3 或 4 使其 活跃起来 我的快速解决方法是使用 setCu
  • 如何修补更新 Android Studio (0.80 -> 0.81)?

    我安装了 Android Studio Beta v0 8 0 并下载了 v0 8 1 因为 IDE 不会自动下载 v0 80 并使用新版本修补 Android Studio 的预览系列自动做到了这一点 从他们的网页 http tools
  • 找不到元素“android.support.constraint.ConstraintLayout”的声明

    我创建了一个名为的 xml 文件activity main sw50dp 但是当我尝试验证它时 它给了我错误 错误 4 42 cvc elt 1 a 找不到元素 android support constraint ConstraintLa
  • 是否可以在本机代码中读取/编辑共享首选项?

    我有一个 Android 应用程序 其中包含一个使用 NDK 执行一些代码的 C 库 在 C 库中 我想更新应用程序共享首选项 我的问题 是否可以在本机代码中读取 编辑共享首选项 您可以在本机代码中做任何您想做的事情 这只是很麻烦 您需要
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • Android 处理 ListView 中的多个 EditText 字段

    只是一个基本问题 如果我有几十个 EditText 字段是 ListAdapter 的一部分 那么各个 EditText 字段如何知道它们属于哪一行 目前我正在使用 TextWatcher 来监听文本输入 我尝试扩展 TextWatcher
  • 在edittext android中插入imageview

    我想将 imageview 放在 edittext 中 可能吗 我检查了 evernote 应用程序 它能够将照片放在编辑文本部分 我想让我的应用程序完全相同 我如何才能将从图库中选择的图像视图放入编辑文本中 我首先尝试将 imagevie
  • 在应用程序的所有活动中重用操作栏

    我创建了一个 MenuActivity 它有一个操作栏和一个拆分操作栏 我想将此操作栏和 splitactionbar 视图用于我的应用程序中的所有活动 我是 android 的新手 所以有人可以逐步指导我 另外 我试图将搜索图标放在操作栏

随机推荐

  • 导航栏下拉菜单不适用于移动设备

    我在 Bootstrap 3 中遇到了导航栏问题 我的菜单项之一是下拉菜单 它在我的笔记本电脑上运行良好 但在我的 Android 手机上不起作用 具体来说 当按下手机上的下拉菜单项时 没有任何反应 我已经在谷歌 这个网站和其他几个网站上搜
  • 排除子项目提交 Git

    我怎样才能排除Subproject commit 我在子模块中没有更改任何内容 仅从远程存储库中提取更改 我认为在创建子模块时 我在主存储库中提交了一些不需要的东西 有任何想法吗 1 当我创建子模块时git diff在主存储库中还显示 su
  • 如何完成删除文件流和所有附加文件

    我已经在本地数据库上尝试了 MSSQL 2008R2 数据中心 的 FILESTREAM 功能来进行实验 真正的数据库运行在服务器上 我已经使用以下查询设置了整个 FILESTREAM CREATE FILESTREAM AND FILES
  • 在闪亮的仪表板中永久更改标题标题颜色

    我有下面闪亮的仪表板 我需要永久更改包含标题的标题的颜色 现在 当我将鼠标悬停在其上时 它会返回到之前的颜色 library DT ui lt dashboardPage dashboardHeader title Dynamic side
  • Android 6.0 上的 Android 文件权限

    我想列出下面的文件和目录 proc 在安卓中 当作为我的应用程序进程运行时 许多文件不可读 如果我将目录列为shell用户我得到以下输出 shell flounder whoami shell shell flounder system b
  • “永久”SessionFactory、ASP.NET MVC 和 nHibernate

    我一直在使用 Fluent nHibernate ASP NET MVC 构建一个应用程序 我已经深入研究并发现保持 永久 SessionFactory 打开 然后对数据库的每个请求使用会话被认为是最合适的做法 好吧 这听起来不错 不过 我
  • iOS僵尸检测

    在我看来 我的代码中遇到了一个非常困难的问题 它在代码中的不同位置随机崩溃 该项目是一个ARC项目 所以我的程序偶尔会崩溃并显示以下消息 malloc error for object 0xd2dd8b0 incorrect checksu
  • 使用正则表达式计算字符串中的元音

    我刚刚开始学习 JavaScript 却陷入了正则表达式的困境 该程序应该计算输入字符串中元音的数量并显示元音 如果元音没有放在一起 程序运行良好 但如果元音出现在一起 则不会给出正确的值 e g 树 元音将显示为 ee 计数将为 1 Ty
  • RabbitMQ C# API:如何检查绑定是否存在?

    使用 RabbitMQ C API 我如何检查给定队列到给定交换是否存在绑定 很多 RabbitMQ 调用都是幂等的 所以有些人可能会说在这些情况下检查是不必要的 但我认为它们在测试中很有用 您可以使用他们的 REST API 来调用并查看
  • 为什么 sockJS 将“/info”添加到给定的 websocket url 路径

    我想打开一个带有 webapp socket do 路径的 websocket 端口 当我使用 SockJS 并尝试通过代码发起调用时 var socket new SockJS webapp socket do stompClient S
  • sizeof(*ptr) 和 sizeof(struct) 之间的区别

    我尝试了以下程序 struct temp int ab int cd int main int argc char argv struct temp ptr1 printf Sizeof struct temp d n sizeof str
  • Safari 中的 CSS 间距问题?

    我为我的最新项目制作了一个基于列表的导航栏 并在导航的每一侧添加了两个信息栏 它在 Firefox 和 IE 中的表现符合预期 但奇怪的是 Safari 却表现不佳 它在导航栏和右侧信息栏之间留出了很大的空间 CSS body backgr
  • Laravel 雄辩的变异器不适用于更新数据

    我的模型中有用于数据库表字段中的哈希 重新哈希数据的访问器和修改器 例如 public function setFullNameAttribute value this gt attributes full name Helper gete
  • 安装nodejs npm 和 grunt 出现错误

    我不熟悉 Python NodeJS NPM 或 Grunt 但我需要安装它 因为我想尝试一下Github项目 https github com raphaelluchini popcorntime smarttv 我从 node org
  • 如何在 AppFog 中使用 Apache 提供静态内容(WSGI Python 应用程序)

    我在用着AppFog http www appfog comPaaS 系统使用了几天 我喜欢它 它可能是我测试过的最好的 PaaS 系统 我之前使用过其他 3 个 但没有找到有关如何使用 Web 服务器提供静态内容的信息在前端 Apache
  • 从地图中获取一段键

    有没有更简单 更好的方法从 Go 中的映射中获取键的切片 目前我正在迭代地图并将键复制到切片 i 0 keys make int len mymap for k range mymap keys i k i 这是一个老问题 但这是我的两分钱
  • 在 C# 中获取特定时区的日期时间时出现 System.TimeZoneNotFoundException 错误

    我有一个 JSON 文件 其中包含time zone范围 它的值如下London Casablanca Arizona Pacific Time US Canada 等 基于time zone 我想得到DateTime该时区的结果 例如 C
  • Ubuntu 17.04 上 sudo apt-get 更新失败

    运行时sudo apt get update在 ubuntu 17 04 Zesty Zapus 上 我收到以下错误 我已经在错误行上发布了 我想安装 python 库 如 matplotlib 和 tkinter 但由于上述命令未成功运行
  • CSS 文件和不需要的覆盖

    我有一个简单的 HTML 页面 它引用了 3 个 CSS 文件 第一个是仅适用于页面的样式表 另外两个是针对两个独特情态动词的样式 这些模态 CSS 文件不是我创建的 它们很高兴被使用分别地在整个网站的其他页面上 我的问题是 这两个模态 C
  • 1-2 秒后暂停 YouTube 视频

    我正在使用 Youtube Player api 在我的应用程序中播放 YouTube 视频 视频开始播放并在 1 2 秒后暂停 我创建了视频片段和视图组 随后我创建了一些 youtobe 视频视图 视频片段 public static f