我想在我的 Android 应用程序中使用 soundcloud,如下所示: 我想在 soundcloud 播放器上播放带有 url 地址的歌曲。 我在 webview 中使用了以下代码,但它没有正确运行。 我该怎么做? 谢谢。
<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F31416027&auto_play=false&show_artwork=false&color=ff7700\"></iframe>
您是否考虑过使用 SoundCloud 的官方 Java 包装器?
我还尝试了带有网络视图的嵌入式播放器解决方案,但这不起作用。
现在我正在使用 Soundcloud Java API 包装器,效果很好。 按照 GitHub 存储库上的说明来实现 API:https://github.com/soundcloud/java-api-wrapper
代码非常简单。您只需要一个客户端 ID 和一个客户端密钥,两者都必须在 soundcloud 开发人员网站上获取。
代码非常简单:
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();
}
物体
m_soundcloudPlayer
是一个android.media.MediaPlayer
。
我也有同样的问题。我发现标准嵌入代码不起作用的原因是 Android 浏览器不支持 HTML5 音频编解码器。 我猜最好的镜头是官方包装,但我还不知道如何做到这一点(只是一个业余爱好者)。
//In Activity_layout.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
// In ActivityClass.java
mSoundCloudPlayer =(WebView) findViewById(R.id.webview);
String VIDEO_URL = "Set Your Embedded URL";
String html = "<!DOCTYPE html><html> <head> <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"target-densitydpi=high-dpi\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <link rel=\"stylesheet\" media=\"screen and (-webkit-device-pixel-ratio:1.5)\" href=\"hdpi.css\" /></head> <body style=\"background:black;margin:0 0 0 0; padding:0 0 0 0;\"> <iframe id=\"sc-widget " +
"\" width=\"100%\" height=\"50%\"" + // Set Appropriate Width and Height that you want for SoundCloud Player
" src=\"" + VIDEO_URL // Set Embedded url
+ "\" frameborder=\"no\" scrolling=\"no\"></iframe>" +
"<script src=\"https://w.soundcloud.com/player/api.js\" type=\"text/javascript\"></script> </body> </html> ";
mSoundCloudPlayer.setVisibility(View.VISIBLE);
mSoundCloudPlayer.getSettings().setJavaScriptEnabled(true);
mSoundCloudPlayer.getSettings().setLoadWithOverviewMode(true);
mSoundCloudPlayer.getSettings().setUseWideViewPort(true);
mSoundCloudPlayer.loadDataWithBaseURL("",html,"text/html", "UTF-8", "");
您的 Google 商店中有一个 SoundCloud 应用程序。您可以将其安装在您的 Android 设备上。您还可以使用 Macsome Music One 将 SoundCloud 歌曲和播放列表下载到 MP3,以便您可以将 SoundCloud 音乐传输到 Android 设备进行播放。