SoundCloudからオーディオをストリーミングできるIonic 2アプリがあります。soundcloudからaudiosをダウンロードするには
public loadSelectedTrack(): void {
SC.get('/tracks/' + this.audio.id, {
filter: 'public'
}).then((track) => {
this.soundCloudCurrentTrack = track;
this.playSelectedTrack();
});
}
public playSelectedTrack(): void {
SC.stream('/tracks/' + this.soundCloudCurrentTrack.id).then((player) => {
this.togglePlayPause();
player.on('buffering_start',() => {
console.log('buffering...');
});
player.on('buffering_end',() => {
console.log('party!');
this.audioLoaded = true;
});
player.on('finish',() => {
this.navCtrl.pop();
});
this.player = player;
player.on('time',() => {
this.updateTrackTime();
this.updateTrackPercent();
});
this.saveUserData();
});
}
は今、私はオーディオをダウンロードする方法を知っておく必要があり、その後、どのデバイスでそれを見つけるために:
これは私がストリーミング行う方法です。
私は、オーディオをダウンロードすることができれば、私はStorageまたはNativeStorage
とストレージIDをすることができますが、それはそれを行うための最善の方法である場合、私は知らないと思いました。誰かがいつでもやった?
編集:私はオーディオをダウンロードしようとしましたが、問題があります。私がダウンロードボタンを押すと、何も表示されません。だから私がアプリケーションのフォルダに行くと、私はオーディオファイルを見ることができますが、それはいつも600バイトのサイズを持っているので壊れていて、私は手動でそれを再生することはできません。
私は進歩を見たいと思っていました。研究の後、私はそのことをイベントにしました。だからトースト通知で一時的に進捗状況を表示しようとしましたが、それは私に "97" .. "98"と表示され、それ以上のことは起こっていません。エクスプローラでappフォルダに移動すると、オーディオファイルが表示されますが、壊れています。そしてそれはエラーを表示していません! これはコードです:
public download(audio: any): void {
this.platform.ready().then(() => {
console.log("Clicked to download: " + audio.id);
let url = `https://api.soundcloud.com/tracks/${audio.id}/download?client_id=${this.SC_CLIENT_ID}`;
let pathToSaveTo: string = '';
if (this.platform.is('android')) {
pathToSaveTo = cordova.file.externalApplicationStorageDirectory + audio.id + '.wav';
let fileTransfer = new Transfer();
fileTransfer.onProgress(this.onProgress);
fileTransfer.download(url, pathToSaveTo)
.then((entry) => {
console.log('download complete: ' + entry.toURL());
}, (error) => {
let prompt = this.alertCtrl.create({
title: 'Error',
subTitle: error,
buttons: ['Accept']
});
prompt.present();
});
}
});
}
onProgress = (progressEvent: ProgressEvent) : void => {
this.ngZone.run(() => {
if (progressEvent.lengthComputable) {
let progress: any = Math.round((progressEvent.loaded/progressEvent.total) * 100);
console.log(progress);
let toast = this.toastCtrl.create({
message: progress,
duration: 100
});
toast.present();
}
});
}
私のコードで投稿を編集しました、ごめんなさい –
あなたが見たい場合、私はどのようにオーディオをダウンロードしようとしているのですか? –