E/JavaBinder: *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
java.lang.ArrayIndexOutOfBoundsException: length=8192; index=8192
at com.android.okhttp.okio.Buffer.writeByte(Buffer.java:973)
at com.android.okhttp.internal.Platform.concatLengthPrefixed(Platform.java:212)
at com.android.okhttp.internal.Platform.configureTlsExtensions(Platform.java:116)
at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:187)
at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:26)
at android.media.MediaHTTPConnection.seekTo(MediaHTTPConnection.java:212)
at android.media.MediaHTTPConnection.getSize(MediaHTTPConnection.java:374)
at android.media.IMediaHTTPConnection$Stub.onTransact(IMediaHTTPConnection.java:81)
at android.os.Binder.execTransact(Binder.java:731)
此异常发生在 Android 媒体播放器流式传输和缓冲上,播放器卡在同一位置一段不寻常的时间,有时甚至永远卡在同一位置。
最佳答案
我认为你无能为力。这是been reported致 okhttp 开发者。但是,正如他们指出的,错误出在 android 中包含的 okhttp 内部打包版本。 square 的外部开发版本没有任何错误,因此他们理所当然地将这个问题视为非问题关闭。
该错误已为 reported to google ,但近两年来似乎没有采取任何行动。
也许您可以在项目中包含来自 square 的 okhttp 的较新上游版本,并以某种方式告诉 MediaHTTPConnection
使用 HttpURLConnection
的 okhttp3
实现>。有OkUrlFactory可以与java的URL.setURLStreamHandlerFactory一起使用。然而,这已被弃用,并且覆盖内置 url 流处理程序逻辑可能不是一个好主意。
事实上,它已从最新版本的 okhttp
中删除。删除它的开发人员确实制作了 ObsoleteUrlFactory.java您可以将其复制/粘贴到您的项目中并用作:
OkHttpClient okHttpClient = new OkHttpClient();
URL.setURLStreamHandlerFactory(new ObsoleteUrlFactory(okHttpClient));
关于android - 在 android 媒体播放器上流式传输音频时出现异常,在 okhttp 缓冲上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53538210/