如何在 android 中使用 specific User-Agent 和 (Magical) ExoPlayer?

How to use spécific User-Agent with (Magical) ExoPlayer in android?

我正在使用 Android Studio,我需要在我的应用程序中添加 ExoPlayer,我需要使用特定的 user-agent,所以我找到了这个 MagicalExoPlayer :

https://github.com/HamidrezaAmz/MagicalExoPlayer

ExoPlayer的这个"version"非常好用,在readme中可以看到具体的header很容易放。 所以我试着像这样放置一个特定的 user-agent :

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

但是 user-agent 没有改变,我有 ExoPlayer 的默认用户代理。

那么如何在 ExoPlayer 中使用特定的 user-agent 呢? (如果能用MagicalExoPlayer就更好了)

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

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

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