从Ionic 2下载soundcloud音轨

时间:2017-02-28 19:45:25

标签: cordova angular ionic2 soundcloud file-transfer

我试图在我的Ionic 2应用程序中下载音频,但是存在问题。当我按下载按钮时,我什么也看不见。因此,如果我转到app文件夹,我可以看到一个音频文件,但它已经坏了因为总是有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();

            }
        });
    }

提前感谢。

伊凡。

0 个答案:

没有答案
相关问题