- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Companion library用于将视频从我的应用转换到 Chromecast。有什么办法可以添加字幕/隐藏式字幕切换按钮,以便用户能够打开和关闭它们吗?
我正在阅读他们的 documentation在我可以看到的地方,如何设置字幕 URL
MediaTrack englishSubtitle = new MediaTrack.Builder(1 /* ID */,
MediaTrack.TYPE_TEXT)
.setName("English Subtitle")
.setSubtype(MediaTrack.SUBTYPE_SUBTITLE)
.setContentId("https://some-url/caption_en.vtt")
/* language is required for subtitle type but optional otherwise */
.setLanguage("en-US")
.build();
但没有说明我应该在哪里处理显示/隐藏操作。
您对我如何添加切换按钮和处理显示/隐藏操作有什么建议吗?
我正在使用 VideoCastManager
,它正在使用来自转换库的 VideoCastControllerActivity
。
这是我的CastConfiguration
// Build a CastConfiguration object and initialize VideoCastManager
CastConfiguration options = new CastConfiguration.Builder(MyAppConfig.CHROMECAST_APP_ID)
.enableAutoReconnect()
.enableCaptionManagement()
.enableDebug()
.enableLockScreen()
.enableNotification()
.enableWifiReconnection()
.setCastControllerImmersive(true)
.setLaunchOptions(false, Locale.getDefault())
.setNextPrevVisibilityPolicy(CastConfiguration.NEXT_PREV_VISIBILITY_POLICY_DISABLED)
.addNotificationAction(CastConfiguration.NOTIFICATION_ACTION_REWIND, false)
.addNotificationAction(CastConfiguration.NOTIFICATION_ACTION_PLAY_PAUSE, true)
.addNotificationAction(CastConfiguration.NOTIFICATION_ACTION_DISCONNECT, true)
.setForwardStep(10)
.build();
// Google Chrome Cast initialization of the VideoCastManager that is a helper class from the CasCompanionLibrary
// that helps us deal with the flow of communicating with chromecast
VideoCastManager.
initialize(this, options)
.setVolumeStep(MyAppConfig.VOLUME_INCREMENT);
我正在创建 MediaInfo
MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
mediaMetadata.addImage(new WebImage(Uri.parse(MyAppConfigBase.IMAGE_API_ENDPOINT + movieVideoItem.getImages().getKeyart())));
mediaMetadata.addImage(new WebImage(Uri.parse(MyAppConfigBase.IMAGE_API_ENDPOINT + movieVideoItem.getImages().getKeyart())));
mediaMetadata.putString(MediaMetadata.KEY_TITLE, movieVideoItem.getTitle());
mediaMetadata.putString(MediaMetadata.KEY_SUBTITLE, movieVideoItem.getDescription());
mediaMetadata.putString("movie-urls", url);
mediaMetadata.putString("content-type", movieVideoItem.getContent().getHighRes().getType());
MediaTrack englishSubtitle = new MediaTrack.Builder(1 /* ID */, MediaTrack.TYPE_TEXT)
.setName("English Subtitle")
.setSubtype(MediaTrack.SUBTYPE_CAPTIONS)
.setContentId(closedCaptionsUrl)
/* language is required for subtitle type but optional otherwise */
.setLanguage("en-US")
.build();
List tracks = new ArrayList();
tracks.add(englishSubtitle);
MediaInfo mediaInfo = new MediaInfo.Builder(url)
.setStreamDuration(movieVideoItem.getDuration())
.setStreamType(MediaInfo.STREAM_TYPE_NONE)
.setContentType(type)
.setMetadata(mediaMetadata)
.setMediaTracks(tracks)
.setCustomData(customData)
.build();
最佳答案
您需要执行以下操作:
确保您的 MediaInfo 项具有轨道信息。
确保在设置中启用轨道,并在配置 CastVideoManager 时启用对轨道的支持。
在您的 Activity 中注册一个 OnTracksSelectedListener
监听器,以便在轨道发生变化时通知您的 Activity 。
4.向您的 Activity 添加一个按钮,并在单击该按钮时调用如下方法。
private void showTracksChooserDialog()
throws TransientNetworkDisconnectionException, NoConnectionException {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag(DIALOG_TAG);
if (prev != null) {
transaction.remove(prev);
}
transaction.addToBackStack(null);
// Create and show the dialog.
TracksChooserDialog dialogFragment = TracksChooserDialog
.newInstance(mCastManager.getRemoteMediaInformation());
dialogFragment.show(transaction, DIALOG_TAG);
}
这将打开一个( fragment )对话框,显示当前文本和音轨并允许用户选择一个。 When one is selected and Ok is pressed in that dialog, the listener that you had registered in the previous step is called and then you can enable the track in your listener.
关于Android Chromecast Companion Library - 字幕切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341172/
我正在查看与 Akka 相关的类型安全激活器代码,以下构造引起了我的兴趣: 伴侣对象: object MarkerActor { sealed trait MarkerMessage case
我在所有 Jetpack compose 项目中多次收到此错误。此错误是否与 Gradle 相关?因为我没有对主题进行任何更改。 java.lang.NoSuchFieldError: No fiel
我第一次使用 Jetpack Compose,但出现此错误。我还没有弄清楚问题到底出在哪里,但我正在使用单 Activity 架构。如果需要更多信息,请告诉我。 根据错误,问题似乎来自脚手架。
在 Kotlin 中,如果我在带有 Companion. 的伴随对象中有一个函数作为前缀( Companion.foo ),它与 foo 相比有何不同?在伴生对象内? 我注意到在下面的代码中,Comp
一本书谈论string::size_type (这是 string.size() 类的 std::string 函数的返回类型)。 我不明白这些“同伴类型”是什么。有人能给我详细解释一下它们是什么吗?
阅读 Ordesky 关于 Scala 的书的第 20 章,我发现内部类是路径相关的。在其他特性中,这意味着它们只能在外部类中实例化或提供外部类实例。 问题来了:我想在 Scala 中实现一个stat
出于某种原因,我的应用程序图标从未出现在 中同伴 应用程序 苹果 watch . 图标出现在 iPhone 和 苹果 watch 仪表盘。 我提供了配套设置所需的 58*58(29*29@2x) 和
所以我是学习 Kotlin 的新手,来自 C# 背景。我一直在处理类型和其他一些事情。我正在尝试创建一个静态类“WalMartGreeters”,它可以将欢迎词添加到列表中,然后调用一个简单的静态函数
我是 GNUradio 的新手,我正在制作一个 FM 接收器。我正在将数据记录到文件接收器中。但是我只需要1毫秒的数据。我如何指定这个时间,以便我的流程图在这个时间之后自动停止? 我还阅读了一些关于调
如何计算特定带宽内信号的平均功率并将该值存储在一个变量中供以后引用? 例如,我有一个 15kHz 宽的低通滤波器,我想知道 GNU Radio Companion 中是否有一个工具可以让我计算特定时间
我有 2 个枚举 enum class Enum1{ X1, X2, X3, X4; companion object { val default = X2 }
如果我有一个看起来像这样的(简化的)类: class MyManager @JvmOverloads constructor(/*constructor args*/) : MyManagerInte
我正在使用 Companion library用于将视频从我的应用转换到 Chromecast。有什么办法可以添加字幕/隐藏式字幕切换按钮,以便用户能够打开和关闭它们吗? 我正在阅读他们的 docum
tl:博士;是否可以 import 另一个类的伴生对象内的方法,无需使用 Companion 限定导入?也就是说,假设 toFoo 是一种方法,我是否可以说 import Bar.toFoo 而不是
我正在尝试使用 GNURadio Companion GUI 创建一个分层 block 。我在其他帖子中找到的答案说选择要合并的 block ,然后转到“更多”->“创建层次”。然后应该会出现一个新屏
我遇到了 Companion Objects 选择其类型而不是 case 类的问题 我正在使用喷雾 json serdes。他们需要一个隐式的 JsonFormat。这种格式是通过调用一个依赖于案例类
在 IntelliJ IDEA 中,是否有键盘快捷键或导航快捷键可以在 Scala 伴侣之间跳转object和一个同伴 class ? 最佳答案 似乎答案是否定的,没有。 关于scala - Inte
我正在尝试使用 Cast Companion 库实现音量控制。不过,我有点困惑应该怎么做。 最初,我一直在使用 VideoCastManager.onDispatchVolumeKeyEvent,它运
我正在使用 Cast Companion Library,它大部分工作正常,我有迷你播放器,还有锁屏控件和播放内容的 Activity ,但我永远无法显示通知屏幕。初始化时我正在执行以下操作: mCa
我正在按照教程部署 Wordpress使用 Docker在 Ubuntu服务器。教程在这个website . 值得一提的是,此时我已经有两个子域,一个用于 Wordpress 站点,另一个用于 php
我是一名优秀的程序员,十分优秀!