Ionic 3 и Firebase хранилище - PullRequest
0 голосов
/ 27 июня 2018

В некоторых случаях у меня есть несколько аудиозаписей в хранилище Firebase, и мне нужно загрузить их в локальную память телефона, поэтому при запуске приложения оно должно проверить, есть ли какой-либо звук в локальной памяти, если оно воспроизводится, в противном случае загрузить его из хранилища Firebase.

Кто-нибудь может мне помочь с этой ионной 3 и огненной базой?

У меня есть эта связь

<script src="https://www.gstatic.com/firebasejs/5.0.4/firebase.js"></script>
<script >
var config = {
apiKey: "AIzaSyAg6dBk2BJ-DlFHm0f0G-9XpIcjb-Zl7DY",
authDomain: "helloworld-4e6e6.firebaseapp.com",
databaseURL: "https://helloworld-4e6e6.firebaseio.com",
projectId: "helloworld-4e6e6",
storageBucket: "helloworld-4e6e6.appspot.com",
messagingSenderId: "386944915967"
};
firebase.initializeApp(config);
</script>

вот файл my.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AboutPage } from '../about';
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic- 
native/file-transfer';
import { NativeAudio } from '@ionic-native/native-audio';

@Component({
   selector: 'page-home',
   templateUrl: 'home.html'
 })
 export class HomePage {
 bleep = new Audio();
   constructor() {
}
 download() {
     const url = 'https://firebasestorage.googleapis.com/v0/b/helloworld- 
 4e6e6.appspot.com/o/audio%2Fp10_1.mp3?alt=media&token=12bf3400-17a7-4cf9- 
 b862-973707a3164e';
      fileTransfer.download(url, this.file.dataDirectory + 
 'test.mp3').then((entry) => {
       console.log('download complete: ' + entry.toURL());
     }, (error) => {
          console.log('Error during download: '+error);
      });
   }


 wajid()
 {

 const fileTransfer: FileTransferObject = this.transfer.create();
 this.download();
 this.nativeAudio.preloadSimple('uniqueId1', this.file.dataDirectory + 
 'test.mp3').then((res) => {
         console.log('Mp3 ready');
     }, (error) => {
         console.log("Some error during load the audio "+error);
      });

      this.nativeAudio.play('uniqueId1').then((onSuccess)=>{
          console.log('Mp3 reproduced ok');
      }, (onError)=>{
          console.log("Some error during reproduce of the audio "+onError);
      });

      // can optionally pass a callback to be called when the file is done 
   playing
      //this.nativeAudio.play('uniqueId1', () => console.log('uniqueId1 is 
  done playing'));


 }

вот моя кнопка HTML

<div class= "sections" style="width: 18%;" (tap)="wajid()" (press) = "wajidlong5()">
      <div class = "sections" id = "sec1" >
       ﻞَ  
      </div><!--
      --><div class = "sections" id = "sec2" >
         ﻌَ  
      </div><!--
      --><div class = "sections" id = "sec3" >
           ﺟَ  
      </div>

    </div> 

1 Ответ

0 голосов
/ 27 июня 2018

Для загрузки аудио используйте: Передача файлов

const fileTransfer: FileTransferObject = this.transfer.create();

import { File } from '@ionic-native/file';

constructor(private file: File) { }

download() {
  const url = 'https://firebasestorage.googleapis.com/v0/b/helloworld-4e6e6.appspot.com/o/audio%2Fp10_1.mp3?alt=media&token=12bf3400-17a7-4cf9-b862-973707a3164e';
  fileTransfer.download(url, this.file.dataDirectory + 'test.mp3').then((entry) => {
    console.log('download complete: ' + entry.toURL());
  }, (error) => {
    // handle error
  });
}

Чтобы проверить, находится ли файл в вашей папке, используйте этот собственный плагин Файл .

Посмотрите на две спецификации плагинов.

Если проблема, задайте здесь, и я отредактирую ответ

Для воспроизведения файла вы должны использовать NATIVE AUDIO . SO:

this.nativeAudio.preloadSimple('uniqueId1', this.file.dataDirectory + 'test.mp3').then(onSuccess, onError);

И СЕЙЧАС:

this.nativeAudio.play('uniqueId1').then(onSuccess, onError);

// can optionally pass a callback to be called when the file is done playing
this.nativeAudio.play('uniqueId1', () => console.log('uniqueId1 is done playing'));

Полный код:

import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';
import { NativeAudio } from '@ionic-native/native-audio';

constructor(private transfer: FileTransfer,private file: File,private nativeAudio: NativeAudio) {
    const fileTransfer: FileTransferObject = this.transfer.create();
    this.download();
    this.nativeAudio.preloadSimple('uniqueId1', this.file.dataDirectory + 'test.mp3').then((res) => {
        console.log('Mp3 ready');
    }, (error) => {
        console.log("Some error during load the audio "+error);
    });

    this.nativeAudio.play('uniqueId1').then((onSuccess)=>{
        console.log('Mp3 reproduced ok');
    }, (onError)=>{
        console.log("Some error during reproduce of the audio "+onError);
    });

    // can optionally pass a callback to be called when the file is done playing
    //this.nativeAudio.play('uniqueId1', () => console.log('uniqueId1 is done playing'));

 }

download() {
    const url = 'https://firebasestorage.googleapis.com/v0/b/helloworld-4e6e6.appspot.com/o/audio%2Fp10_1.mp3?alt=media&token=12bf3400-17a7-4cf9-b862-973707a3164e';
    fileTransfer.download(url, this.file.dataDirectory + 'test.mp3').then((entry) => {
      console.log('download complete: ' + entry.toURL());
    }, (error) => {
        console.log('Error during download: '+error);
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...