2017-03-21 4 views
2

Ich verwende Cordova-Plugin-Media-mit-Kompression in einer Ionic 2 App.cordova-plugin-media-with-compression auf iOS scheint nicht zu spielen Audiodateien nach dem Verschieben

Auf iOS kann ich aufzeichnen und wiedergeben, wenn ich startRecord() einen Dateinamen übergebe und das wieder ohne Änderung this.media aufrufen.

Ich kann nicht scheinen, Audiodateien abzuspielen, die an anderer Stelle im Dateisystem gespeichert werden - da ich einen neuen src an startRecord() übergeben muss und dieses ist das Bit, das ich denke, dass ich falsch tue.

import { Component } from '@angular/core'; 
import { ModalController, LoadingController, ToastController, Platform } from 'ionic-angular'; 
import { File, FileEntry, Entry, FileError, DirectoryEntry} from 'ionic-native'; 

declare var Media: any; // stops errors w/ cordova-plugin-media-with-compression types 

@Component({ 
    selector: 'page-add-doc', 
    templateUrl: 'add-doc.html' 
}) 
export class AddDocPage { 
    isRecording = false; 
    isRecorded = false; 
    audioUrl =''; 
    localAudioUrl = ''; 
    media: any; 
    newFileName: string; 
    newFileNameM4A: string; 
    homerAudio = 'http://techslides.com/demos/samples/sample.m4a' 

    constructor(private modalCtrl: ModalController, 
       private loadingCtrl: LoadingController, 
       private toastCtrl: ToastController, 
       private platform: Platform, 
      ) { 
       platform.ready() 
       .then(() => { 
        console.log('Platform Ready'); 
       }); 
       } 

    ionViewDidLoad() { 
     this.newFileName = new Date().getTime().toString(); 
     this.newFileNameM4A = this.newFileName +'.m4a'; 
    } 

    onRecordAudio() { 
    this.media = new Media(this.newFileNameM4A); 
    this.media.startRecord(); 
    this.isRecording = true; 
    } 
    onStopRecordAudio() { 
    this.media.stopRecord(); 
    this.media.release(); 
    this.isRecording = false; 
    this.isRecorded = true; 
    try { 
     File.copyFile(File.tempDirectory, this.newFileNameM4A, File.dataDirectory, this.newFileNameM4A) 
     .then(
      (data: Entry) => { 
       this.audioUrl = data.nativeURL; 
     }); 
    } catch (FileError) { 
     console.log(FileError) 
    }; 
    } 

    onPlayback() { 
    this.media = new Media(this.newFileNameM4A); 
    this.media.play(); 
    this.media.release(); 
    } 
    onPlaybackTempDirectory() { 
    this.media = new Media(File.tempDirectory + this.newFileNameM4A); 
    this.media.play(); 
    this.media.release(); 
    } 

    onPlaybackDataDirectory() { 
    this.media = new Media(File.dataDirectory + this.localAudioUrl); 
    this.media.play(); 
    this.media.release(); 
    }  

    onHomerAudio() { 
    this.media = new Media(this.homerAudio) 
    this.media.play(); 
    this.media.release(); 
    } 
} 

Antwort

Verwandte Themen