online radio streaming in android not working mediaplayer.setdatasource method
public class mainactivity extends activity implements view.onclicklistener { private final static string radio_station_url = "http://tunein.com/radio/hindi-desi-bollywood-evergreen-hits-s129208/"; private progressbar playseekbar; private button buttonplay; private button buttonstopplay; private button buttonrecord; private button buttonstoprecord; private mediaplayer player; private inputstream recordingstream; private recorderthread recorderthread; private boolean isrecording = false; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initializeuielements(); initializemediaplayer(); } private void initializeuielements() { playseekbar = (progressbar) findviewbyid(r.id.progressbar1); playseekbar.setmax(100); playseekbar.setvisibility(view.invisible); buttonplay = (button) findviewbyid(r.id.buttonplay); buttonplay.setonclicklistener(this); buttonstopplay = (button) findviewbyid(r.id.buttonstopplay); buttonstopplay.setenabled(false); buttonstopplay.setonclicklistener(this); buttonrecord = (button) findviewbyid(r.id.buttonrecord); buttonrecord.setonclicklistener(this); buttonstoprecord = (button) findviewbyid(r.id.buttonstoprecord); buttonstoprecord.setonclicklistener(this); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } @override public void onclick(view v) { if (v == buttonplay) { startplaying(); } else if (v == buttonstopplay) { stopplaying(); } else if (v == buttonrecord) { recorderthread = new recorderthread(); recorderthread.start(); buttonrecord.setenabled(false); buttonstoprecord.setenabled(true); } else if (v == buttonstoprecord) { stoprecording(); } } private void startplaying() { buttonstopplay.setenabled(true); buttonplay.setenabled(false); playseekbar.setvisibility(view.visible); player.prepareasync(); player.setonpreparedlistener(new mediaplayer.onpreparedlistener() { public void onprepared(mediaplayer mp) { player.start(); buttonrecord.setenabled(true); } }); } private void stopplaying() { if (player.isplaying()) { player.stop(); player.release(); initializemediaplayer(); } buttonplay.setenabled(true); buttonstopplay.setenabled(false); playseekbar.setvisibility(view.invisible); buttonrecord.setenabled(false); buttonstoprecord.setenabled(false); stoprecording(); } private void initializemediaplayer() { player = new mediaplayer(); try { player.setdatasource(radio_station_url); } catch (illegalargumentexception e) { e.printstacktrace(); } catch (illegalstateexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } player.setonbufferingupdatelistener(new mediaplayer.onbufferingupdatelistener() { public void onbufferingupdate(mediaplayer mp, int percent) { playseekbar.setsecondaryprogress(percent); log.i("buffering", "" + percent); } }); } @override protected void onpause() { super.onpause(); if (player.isplaying()) { player.stop(); } } private void startrecording() { bufferedoutputstream writer = null; try { url url = new url(radio_station_url); urlconnection connection = url.openconnection(); final string folder_path = environment.getexternalstoragedirectory().getabsolutepath() + file.separator + "songs"; file folder = new file(folder_path); if (!folder.exists()) { folder.mkdir(); } writer = new bufferedoutputstream(new fileoutputstream(new file(folder_path + file.separator + "sample.mp3"))); recordingstream = connection.getinputstream(); final int buffer_size = 100; byte[] buffer = new byte[buffer_size]; while (recordingstream.read(buffer, 0, buffer_size) != -1 && isrecording) { writer.write(buffer, 0, buffer_size); writer.flush(); } } catch (malformedurlexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } { try { recordingstream.close(); writer.flush(); writer.close(); } catch (ioexception e) { e.printstacktrace(); } } } private void stoprecording() { buttonstoprecord.setenabled(false); buttonrecord.setenabled(true); try { isrecording = false; if (recordingstream != null) { recordingstream.close(); } } catch (ioexception e) { e.printstacktrace(); } } private class recorderthread extends thread { @override public void run() { isrecording = true; startrecording(); } }; }
Comments
Post a Comment