java - MediaHTTPConnection : readAt 3110239/32768 => java.net.ProtocolException 错误

标签 java android

我制作了一个应用程序,它只是从 URL 播放歌曲。这个 url 将使用 NanoHTTP 创建。这个 URL 只不过是设备 ip 和端口地址的组合。

代码规范 我刚刚收到此 URL 作为消息。我获取 URL 并将此 URL 提供给 Media Player 类。

  try {

                if (mediaPlayer != null) {
                    mediaPlayer.stop();
                    mediaPlayer.reset();
                    mediaPlayer.release();
                    mediaPlayer = null;
                }
                if (handler != null) {
                    handler.removeCallbacks(notification);

                }
                mediaPlayer = new MediaPlayer();
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                // String url =  URLEncoder.encode(commandHelper.getSongDetails().getSongURL(), "UTF-8");
                String url = commandHelper.getSongDetails().getSongURL();
                Log.e("Tag", "Receiving Url  Data ::" + url);// Song URL ::: http://192.168.1.160:8085/
                mediaPlayer.setDataSource(url);
                mediaPlayer.prepare();
                mediaPlayer.start();

            } catch (IOException e) {

                DebugLog.e("Value ::" + e.getMessage());
                e.printStackTrace();
            }

我的网址类似于 http://192.168.1.160:8085/

问题

一切正常,但当我启动 Media Player 时出现以下错误

  • W/MediaHTTPConnection: readAt 3110239/32768 => java.net.ProtocolException

还有我的设备挂起并且设备没有响应。 我也尝试过 mediaPlayer.prepareAsync(),mediaPlayer.prepare(FileDescriptor) 来处理这个错误,但我得到了相同的结果。

注意

此问题是特定于操作系统的,它只发生在 5.0(LOLIPOP) 操作系统中。

如果有人对此问题有适当的解决方案,请帮助我。我几乎没有尝试解决这个问题,但我遇到了同样的错误。所以请帮助解决这个问题。

最佳答案

对我来说,这个问题是在数据源被使用两次时发生的。我通过禁用缓存来修复它。问题是缓存保存了错误的长度或位置信息或其他东西。不知道为什么可能是因为压缩。

我只在特定的 mp3 文件上有这个问题(我仍在研究为什么只有这些文件受到影响)。

Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "audio/mp3"); // change content type if necessary
headers.put("Accept-Ranges", "bytes");
headers.put("Status", "206");
headers.put("Cache-control", "no-cache");
Uri uri = Uri.parse(yourContentUrl);
player.setDataSource(getApplicationContext(), uri, headers);

关于java - MediaHTTPConnection : readAt 3110239/32768 => java.net.ProtocolException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33568542/

相关文章:

java - java中另一个字符的正方形内的字符正方形

android - 写入/读取然后保存文本文件 Basic4Android

java - 在 Android 中为 LinearLayout 添加边距

java - 在 Eclipse 中使用 AutoValue 注释

java - 如何使用java将值插入sql server?

java - JPanel 周围的数字; JPanel边框?

java - 为什么必须首先在 Java 构造函数中委托(delegate)给不同的构造函数?

android - 即使在 android :configChanges is specified? 时,应用程序也会重新创建

android - 如何从android中的edittext中获取选定的文本?

android - jack 似乎并没有自己混淆代码