2013-03-31 4 views
1

내 안드로이드 앱에서 SoundCloud로 트랙을 재생할 수 있습니까? 이 코드를 시도하고 있지만 그것은 작동하지 않습니다SoundCloud Track 재생

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

    } 
+0

오류가 있습니까? – ElefantPhace

+0

내 logcat : 03-31 11 : 10 : 26.160 : E/MediaPlayer (1780) : 오류 (1, -4) 03-31 11 : 10 : 26.710 : I/MediaPlayer (1780) : 정보 (1,26) – user2062413

+0

-4 오류는 잘못된 인수를 의미합니다. – ElefantPhace

답변

0

이를 추가하려고하면 URL 리디렉션과 MediaPlayer를를 사용하는 경우도 있었다 문제가 언급 한

mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 

데이터 소스를 설정하기 전에. 그런 다음 사용하여이 같은 soemthing을 할 수있는 리디렉션 URL을 얻으려면 그에 따라

하여 데이터 소스를 설정, 먼저 리디렉션을 해결해야 할 수도 있습니다 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(); 
     //... 
    } 
} 
8

나는 사운드 클라우드를 재생하려고 같은 문제가되었다 Android의 스트림. 내가 나를 위해 내 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를 들어

나는

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(); 
} 
+0

이 prepareAsync()에서 충돌합니다. . IllegalStateException. ? – usman

관련 문제