android - 如何修复 E/ExoPlayerImplInternal:源错误
问题描述
当我尝试"Response Code:400"
在 Android Lolipop 和 Marsmallow 上播放音频形式的服务器 exoplayer 时出现错误,但在 Android 更高版本上播放歌曲的代码相同。
E/ExoPlayerImplInternal: Source error. com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 400 at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:211) at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:147)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:848) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:317) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818)
解决方案
由于您的 Web 客户端在 API ~30 中,您可能会收到此错误
使用下面的代码段来允许 URL
new WebViewClient() {
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(Classname.this, description, Toast.LENGTH_SHORT).show();
}
@TargetApi(android.os.Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
// Redirect to deprecated method, so you can use it in all SDK versions
onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
}
};
推荐阅读
- naming - 如何命名同一事物的两个类,一个复数和一个单数
- php - 在 Laravel 中创建谷歌地图,
- search - Substr - Power BI 中的 Instr 函数错误
- ruby-on-rails - Gem 安装错误版本的 bundler
- javascript - 如何在 VueJS 中读取 Firebase 数据?
- javascript - 递归函数类型如何推导流程?
- javascript - onChange 输入类型[复选框] 不适用于 Vue 样式的组件
- python - 使用 Python3.7 进行网页抓取:ConnectionError: HTTPSConnectionPool(host='www.google.com', port=443):
- ios - 自动将WKWebView 中的 HTML 保存到应用程序的 tmp 目录
- python - 为什么 python open() 函数不会在与主机文件相同的文件夹中创建 .txt 文件?