【问题标题】:Android - MediaPlayer HTTP Error HandlingAndroid - MediaPlayer HTTP 错误处理
【发布时间】:2015-07-15 21:18:05
【问题描述】:

我正在尝试创建一个 Android 应用程序,该应用程序收集各种远程歌曲链接并为用户播放它们。该应用使用 Android 的 MediaPlayer,每个歌曲链接都会重定向到 MediaPlayer 处理并最终播放的 Stream URL。

但是,其中一些歌曲链接实际上重定向并提供 HTTP 404 错误,因为它们不可用,我想知道是否有任何方法可以直接处理/捕获这些 HTTP 错误即刻。到目前为止,MediaPlayer 所做的是发出一个信号:

error (1, -2147483648)

...在尝试连接数据源 10 次之后,我可以捕捉到该数据源以通知用户歌曲不可用。

当然,让用户等待 10 次重试会花费太多时间,因此我想知道是否有一种方法可以在 MediaPlayer 发生 HTTP 错误的第一时间捕捉到,而无需检查 URL在将其发送到 MediaPlayer 之前,或者必须使用连接到 MediaPlayer 的网络代理来破解和管理异常。

MediaPlayer 10 次给出异常:

07-16 05:16:30.549: E/MediaHTTPConnection(16698): IOException: java.io.IOException: Http Response: 404

【问题讨论】:

  • 这 10 个异常列表是否仅在 logcat 中可见,但应用程序在 MediaPlayer.OnErrorListener 回调中仅收到一个异常?还是将它们全部传递给错误侦听器?
  • 这10个异常列表只在Logcat中可见,应用程序本身只通过MediaPlayer.OnErrorListener通知第10个(最后一个)异常。

标签: java android android-mediaplayer


【解决方案1】:

如果错误弹出 10 次,并且每次都抛出一个错误,那么我不明白为什么简单的 try-catch 循环不起作用:

try {
    // download URL
} catch (IOException e) {
    // presumably an exception is thrown the first time it gets 404 so put the error handling code here
}

另外,我是否建议使用多线程从 URL 下载使用类似 ExectutorService 的东西,它允许您向它提交 Runnable 类并同时运行它们(即每个视频的下载任务,以便它们同时下载时间)

【讨论】:

  • Logcat 中显示的异常来自 MediaHTTPConnection,它在 Android 的 MediaPlayer 框架下工作。只有第 10 个异常作为来自 MediaPlayer.OnErrorListener 的回调弹出,然后我可以使用它来通知用户歌曲不可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2016-08-06
  • 2012-07-17
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多