I also tried the built-in solutions for the webview player, but this does not work.
Now I am using the Soundcloud Java API Wrapper and it works fine. Follow the instructions in the Github repository to implement the API: https://github.com/soundcloud/java-api-wrapper
Then the code is really simple. You only need the client ID and client secret, both of which must be obtained on the soundcloud developers website.
Then the code is really simple:
String id = getResources().getString(R.string.sc_client_id); String secret = getResources().getString(R.string.sc_client_secret); ApiWrapper wrapper = new ApiWrapper(id,secret, null, null); try { //Only needed for user-specific actions; //wrapper.login("<user>", "<pass>"); //HttpResponse resp = wrapper.get(Request.to("/me")); //Get a track HttpResponse trackResp = wrapper.get(Request.to("/tracks/60913196")); //Track JSON response OK? if(trackResp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { JSONObject trackJSON = new JSONObject(EntityUtils.toString(trackResp.getEntity())); //If track is streamable, fetch the stream URL (mp3-https) and start the MediaPlayer if(trackJSON.getBoolean("streamable")) { HttpResponse streamResp = wrapper.get(Request.to("/tracks/60913196/stream")); JSONObject streamJSON = new JSONObject(EntityUtils.toString(streamResp.getEntity())); String streamurl = streamJSON.getString("location"); Log.i("SoundCloud", trackJSON.getString("streamable")); Log.i("SoundCloud", streamurl); m_soundcloudPlayer.stop(); m_soundcloudPlayer = new MediaPlayer(); m_soundcloudPlayer.setDataSource(streamurl); m_soundcloudPlayer.prepare(); m_soundcloudPlayer.start(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }
The m_soundcloudPlayer object is android.media.MediaPlayer .
Lukas source share