播放SoundCloud Track

时间:2013-03-31 17:51:12

标签: android soundcloud

我可以在Android应用中播放SoundCloud中的曲目吗?我尝试使用此代码但它不起作用:

String res = "https://api.soundcloud.com/tracks/84973999/stream?client_id=cd9d2e5604410d714e32642a4ec0eed4";

MediaPlayer mp = new MediaPlayer();
try {
        mp.setDataSource(res);
        mp.prepare();
        mp.start();
    } catch (IOException e) {

    }

2 个答案:

答案 0 :(得分:9)

我在尝试从Android播放Soundcloud流时遇到了同样的问题。

为我修复的是将以下权限添加到我的AndroidManifest.xml

<permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET" />
<permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

对我而言,这是一个面子。这是我的媒体播放器实现。

对于我的媒体播放器,我有一个实现

的类
MediaPlayer.OnPreparedListener

在该课程中,我使用以下代码设置MediaPlayer。

 mMediaPlayer = new MediaPlayer();
 mMediaPlayer.setOnPreparedListener(this);
 mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try{
        mMediaPlayer.setDataSource("http://api.soundcloud.com/tracks/7399237/stream?client_id=XXX");
    }catch (IllegalArgumentException e){
        e.printStackTrace();

    } catch (IOException e) {
        e.printStackTrace();

    }
    mMediaPlayer.prepareAsync();

在我的onPrepared回调中,我只是开始播放该流。

@Override
public void onPrepared(MediaPlayer mediaPlayer) {
    mMediaPlayer.start();
}

答案 1 :(得分:0)

在设置数据源之前尝试添加此内容

mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

使用带有网址重定向的MediaPlayer时也存在问题。您可能需要先解决重定向,然后相应地设置数据源

要获取重定向的网址,您可以使用soundcloud java-api-wrapper

执行此类操作
HttpResponse resp = wrapper.get(Request.to(res));
if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY) {
    final Header location = resp.getFirstHeader("Location");
    if (location != null && location.getValue() != null) {
        String redirectedStream = location.getValue();
        //...
    }
}