2017-02-23 7 views
0

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(); 

      } 
     }); 
    } 
+0

私のコードで投稿を編集しました、ごめんなさい –

+0

あなたが見たい場合、私はどのようにオーディオをダウンロードしようとしているのですか? –

答えて

2

あなたは簡単にTransferモジュールイオン2つの申し出を使用してファイルをダウンロードすることができます。 異なるプラットフォームの別のディレクトリにファイルをダウンロードして、ドキュメントを読むhere ファイルをダウンロードするときに、後で使用するためにファイルに関するデータを保存することは本当に便利です。 Storageを使用すると、ファイルに関する必要なデータ(名前など)を保存できます。 次に。プラットフォームに応じて、このファイルにアクセスすることもできます。ファイルへのアクセスの詳細についてはcordova-plugin-fileのドキュメントを参照してください。

+0

ニース!私はそれを研究します.. –

+0

私はちょうど私の投稿を編集しました。あなたはそれを見ることができますか?ありがとうございました! –

関連する問題