1

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) {

    }
4

2 に答える 2

8

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();
}
于 2013-07-28T19:04:11.027 に答える
0

trying adding this before you set data source

mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

there have also been issues noted when using MediaPlayer with URL redirects. You may need to resolve the redirects first, then set your datasource accordingly

To get the redirected url you can do soemthing like this using the 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();
        //...
    }
}
于 2013-03-31T18:05:24.087 に答える