我正在尝试使用SoundCloud API来播放歌曲,并且一切都可以通过浏览器正常工作,但是当我尝试使用PhoneGap打包并将其安装到手机上时,它就不再有效了。
问题似乎与SC.get()函数有关。 SC.initialize()工作正常,但是当我尝试获取曲目时,每次安装在手机上时都会返回0结果。这是我正在使用的代码:
SC.get('/tracks', {q: query, filter: 'streamable' }, function(tracks){
Ext.each(tracks, function(track){
if(track.streamable){
results.push(track);
}
});
if(results.length > 0){
var tracksStore = Ext.getStore('Tracks');
tracksStore.removeAll();
tracksStore.sync();
tracksStore.setData(results);
}
else
{
Ext.Msg.alert('No tracks found!', 'Try something different.');
}
});
在初始化函数之后立即调用此函数。有什么想法吗?
答案 0 :(得分:0)
您必须使用SC.stream()
功能。所以,你可以这样做:
SC.initialize({
client_id: "YOUR_CLIENT_ID"
});
SC.stream("/tracks/293", function(sound){
sound.play();
}
你可以这样做来获取特定用户的曲目:
SC.initialize({
client_id: "YOUR_CLIENT_ID"
});
//Select the song in the list you want to play
var songNumber=1;
//Get tracks from a user
SC.get('/users/8030565/tracks/', function(tracks) {
for (var i=0;i<tracks.length; ++i){
tracksList.push(tracks[i]);
}
//Stream a track
SC.stream("/tracks/"+tracksList[songNumber].id, function(sound){
sound.play();
}
}
希望这有帮助! Read the docs,一段时间后会变得更简单。
答案 1 :(得分:0)
问题是,当它安装在手机上时没有任何东西被返回,SC.get只是不会返回任何曲目,因此它肯定无法传输它们。事实证明,无论出于何种原因,当您通过phonegap在手机上安装时,您必须使用完整路径:api.soundcloud.com/tracks而不仅仅是/ tracks /否则它无法正常工作。不知道为什么会这样,但这对我来说是固定的。