Aamirkhan
Aamirkhan

Reputation: 5784

SHOUTcast Radio Streaming Not Working For Kitkat

https://play.google.com/store/apps/details?id=com.sirius.fm.radio here is my application url.

in which i am streaming audio from shout cast, It was working fine, Until android release kitkat update, recently i faced issue with that when i run application on android kitkat, it doesn't stream radio in kitkat OS version.

Here is my stream url i am using

http://s8.voscast.com:7112

And Here is error log i am getting on kitkat version

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

In all other version of android like Micromax Canvas 4 A210 , Samsung Galaxy s3 etc.. Which doesn't have kitkat version it works fine.

While in kitkat Devices Like Lg Optimus , Nexus 5 , Nexus 4 It doesn't works, it shows above error

Any Help/Guide Line will be appreciated.

Thanks Any Way

Upvotes: 0

Views: 608

Answers (1)

Aamirkhan
Aamirkhan

Reputation: 5784

Finally i got solution

I replace below method with new one

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);
        }

replace above method with new one method described below

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();

Hope it will help some one

Thanks

Upvotes: 1

Related Questions