0

J'ai écrit mon propre plugin cordova qui gère le chargement des médias à partir de fichiers d'extension. J'ai également construit mon propre support de base pour la lecture audio, mais j'ai quelques problèmes lors de la lecture de plusieurs fichiers audio après quelques minutes. Qu'est-ce qui se passe est que les premiers 10-20 fichiers audio jouera sans problèmes, mais il arrête juste de jouer sans aucune erreur notable. Si j'attends quelques minutes, l'audio reviendra parfois. Cela me fait penser que je ne me débarrasse pas correctement des choses.L'audio cesse de fonctionner après avoir joué plusieurs fichiers différents

Fichier du projet:https://github.com/mcfarljw/cordova-plugin-expansion/blob/master/src/android/Expansion.java

Voici l'extrait où je suis en contact avec le lecteur multimédia:

@Override 
    public void onPrepared(MediaPlayer media) { 
     media.start(); 
    } 

    public void pauseMedia() { 
     if (media != null && media.isPlaying()) 
      media.pause(); 
    } 

    public void playMedia(String filename) throws IOException { 
     if (!this.isPlaying()) { 
      Log.e("EXPANSION", "Media is currently playing!"); 
     } 
     if (expansionFile == null) { 
      Log.e("EXPANSION", "Expansion file not found!"); 
     } 
     AssetFileDescriptor file = expansionFile 
       .getAssetFileDescriptor(filename); 
     if (file == null) { 
      Log.e("EXPANSION", "Filename '" + filename + "' not found!"); 
     } 
     if (media != null) { 
      media.stop(); 
      media.release(); 
     } 
     media = new MediaPlayer(); 
     media.setDataSource(file.getFileDescriptor(), file.getStartOffset(), 
       file.getLength()); 
     media.setOnPreparedListener(this); 
     media.prepareAsync(); 
    } 

    public void stopMedia() { 
     if (media != null && media.isPlaying()) { 
      media.release(); 
      media.stop(); 
     } 
    } 
+0

Est-ce que logcat sais quelque chose? –

+0

Rien d'intéressant n'est apparu à moi, mais je vais regarder de plus près. Je me demandais juste si quelqu'un voyait quelque chose que je faisais mal quand je manipulais le lecteur multimédia qui pouvait le provoquer. – Josh

Répondre

0

J'ai eu un problème similaire mais je libérer après le succès et l'échec. Voici le code de base. Dans votre cas, ajoutez les gestionnaires de succès et d'erreurs comme suit. Je ne comprends pas pourquoi vous appelez stop() pendant playMedia() mais seulement si l'utilisateur clique sur stop.

 media = new Media(url, 
    function() { console.log("playAudio():Audio Success"); 
    if (media != null) media.release(); }, 
    function (err) { console.log("playAudio():Audio Error: " + err); 
    if (media != null) media.release(); } 
    ); 

    media.play(); 
Questions connexes