我可以在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) {
}
答案 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();
//...
}
}