2017-04-10 3 views
2

Ich entwickle eine App, wo ich einige Audiodateien in den Ordner /src/assets legen und sie abspielen muss, wenn eine Taste angetippt wird.So spielen Sie Audio, das mit Ionic2 geliefert wurde

verwendet I Muttermedienobjekt wie folgt:

import { MediaPlugin, MediaObject } from '@ionic-native/media'; 

constructor(public navCtrl: NavController, public navParams: NavParams, 
    public media: MediaPlugin) { 

    } 

listenAudio() { 
    const onStatusUpdate = (status) => console.log(status); 
    this.media.create('assets/audio/sample.mp3', onStatusUpdate) 
     file.play(); 
     }) 

    } 

die Funktion aufgerufen wird listenAudio(), wenn die Taste abgegriffen wird.

Der Ton spielt einfach nicht !!

Irgendwelche Gründe?

+0

vielleicht ist der Pfad nicht korrekt .. probiere '../assets/audio/sample.mp3' –

Antwort

1

Ich habe das gleiche Problem gestern (nur mit Ionic beginnen). Nach einigen Versuch und Irrtum, ich habe endlich die folgenden mit der MP3-Datei in src/assets/mp3/sample.mp3 gespeichert zu arbeiten:

let filepath: string = 'assets/mp3/sample.mp3'; 

// The filepath needs to be a URL for Android 
if(this.platform.is('android')) { 
    filepath = 'file:///android_asset/www/assets/mp3/sample.mp3'; 
} 

this.media.create(filepath, onStatusUpdate).then((file: MediaObject)) => { 
    file.play(); 
}) 
.catch(e => console.log('Error opening media file', e)); 

Ein paar andere Fragen, die ich gefunden habe:

  • Wenn der Pfad der Audio-Datei ist falsch (zB die Audiodatei existiert nicht), würde ich erwarten, dass der catch() Block ausgeführt wird, aber der Code schlägt im Hintergrund fehl.

  • Die Audiodatei wird nicht auf dem Android-Emulator (mit Android 6.0) abgespielt, funktioniert aber auf einem echten Gerät.