java - 如何在android中将特定的用户代理与(神奇的)ExoPlayer一起使用?

标签 java android user-agent exoplayer

我正在使用 Android Studio,我需要在我的应用程序中添加 ExoPlayer,并且我需要使用特定的用户代理,所以我找到了这个 MagicalExoPlayer:

https://github.com/HamidrezaAmz/MagicalExoPlayer

ExoPlayer 的这个“版本”非常易于使用,在自述文件中我们可以看到很容易放置特定的 header 。 所以我尝试放置一个特定的用户代理,如下所示:

HashMap<String , String> extraHeaders = new HashMap<>();
extraHeaders.put("User-Agent","My User Agent");
andExoPlayerView.setSource("STREAM_URL", extraHeaders);

但是用户代理不会改变,我有ExoPlayer的默认用户代理。

那么如何将特定的用户代理与 ExoPlayer 一起使用? (如果我能使用 MagicalExoPlayer 就更好了)。

最佳答案

在为播放器准备数据源时,将用户代理提供给 Exoplayer。示例:

DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,"MY_USER_AGENT");

由于 MagicalExoPlayer 是 Exoplayer 的包装,因此它已将该字段设置为常量。请参阅 github 存储库中的 PublicValues.java class。您可以要求作者向该字段公开公共(public) setter 。另一种方法是将库模块复制到您的项目并更改 PublicValues 类中 User Agent 的值。您需要更改 build.gradle 来编译该模块。我强烈建议询问作者,除非有必要,否则不要复制模块,因为之后您必须手动更新模块。

关于java - 如何在android中将特定的用户代理与(神奇的)ExoPlayer一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57837407/

相关文章:

android - 如何在不显示设备默认电子邮件表单的情况下直接从 android 应用程序发送电子邮件?

php - 用 PHP 确定访问者的操作系统

java - Java中的隐藏方法?

java - 如何从 timepickerdialog 设置系统当前时间的最短时间

java - GridBagLayout对齐和Button样式

Java 泛型类型在这种情况下不起作用

android - 显示自定义对话框会强制关闭

android - 原始文件夹中文本文件中的除法符号

ios - 从 iOS 8 开始,如何获取浏览器 UserAgent 字符串?

javascript - PHP 应用程序出现无法解释的 404 错误