Android SHOUTcast广播流不适用于Kitkat
这是我的应用程序url 在这部电影中,我从shout cast播放音频,效果很好,直到android发布kitkat更新,最近我遇到了一个问题,当我在android kitkat上运行应用程序时,kitkat OS版本中并没有播放广播 这是我正在使用的流url 这是我在kitkat版本上得到的错误日志Android SHOUTcast广播流不适用于Kitkat,android,audio,stream,streaming,audio-streaming,Android,Audio,Stream,Streaming,Audio Streaming,这是我的应用程序url 在这部电影中,我从shout cast播放音频,效果很好,直到android发布kitkat更新,最近我遇到了一个问题,当我在android kitkat上运行应用程序时,kitkat OS版本中并没有播放广播 这是我正在使用的流url 这是我在kitkat版本上得到的错误日志 07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): Unable to initia
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): Unable to initialize the MediaPlayer for fileUrl=http://s8.voscast.com:7112
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): java.net.ProtocolException: Unexpected status line: ICY 200 OK
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.RawHeaders.setStatusLine(RawHeaders.java:108)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.sirius.fm.radio.StreamingMediaPlayer.downloadAudioIncrement(StreamingMediaPlayer.java:117)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.sirius.fm.radio.StreamingMediaPlayer$startRadio.doInBackground(StreamingMediaPlayer.java:88)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at com.sirius.fm.radio.StreamingMediaPlayer$startRadio.doInBackground(StreamingMediaPlayer.java:1)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at android.os.AsyncTask$2.call(AsyncTask.java:288)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
07-17 06:15:22.911: E/com.sirius.fm.radio.StreamingMediaPlayer$startRadio(1425): at java.lang.Thread.run(Thread.java:841)
07-17 06:15:22.941: E/on post exte(1425): post exte
在所有其他版本的android中,如Micromax Canvas 4 A210、三星Galaxy s3等。。它没有kitkat版本,工作正常
在kitkat设备中,如Lg Optimus
,Nexus 5
,Nexus 4
,它不工作,但显示上述错误
如有任何帮助/指导,将不胜感激
不管怎样谢谢你我终于找到了解决办法
我用新方法替换下面的方法
URLConnection cn = new URL(mediaUrl).openConnection();
cn.setRequestProperty("Icy-metadata", "1");
cn.connect();
InputStream stream = cn.getInputStream();
if (stream == null) {
Log.e(getClass().getName(),"Unable to create InputStream for mediaUrl:" + mediaUrl);
}
用下述新方法替换上述方法
final int CONNECT_TIMEOUT_MILLIS = 60 * 1000; // 30s
final int READ_TIMEOUT_MILLIS = 85 * 1000; // 45s
OkHttpClient client = new com.squareup.okhttp.OkHttpClient();
client.setConnectTimeout(CONNECT_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
client.setReadTimeout(READ_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
OkUrlFactory okUrlFact= new OkUrlFactory(client);
HttpURLConnection con= okUrlFact.open(new URL(mediaUrl) );
con.setRequestProperty("Icy-metadata", "1");
con.connect();
希望它能帮助一些人
谢谢Aamir,我没有在okhttp jar中找到OkUrlFactory类。它存在于okhttp-urlconnection.jar中,但由于包名相同,它试图在okhttp.jar中查找。有什么解决办法吗?