L'événement de pause Phonegap / Cordova déclenché sur le résumé pour Android; Ne peut pas désactiver l'audio en conséquence

Je développe une application Phonegap qui joue de l'audio à l'aide du plugin Phonegap Media. Lorsque j'appuie sur le bouton de démarrage ou le bouton de verrouillage de l'écran sur mon appareil Android (KitKat 4.4), l'application va en arrière-plan comme il se doit, mais l'audio ne s'arrête pas car l'événement de pause n'est pas appelé. Seulement lorsque je reprend l'application, l'événement de pause s'exécute, et mon code pour éteindre l'audio s'exécute finalement. L'événement de CV fonctionne également immédiatement après.

En lisant les documents Phonegap sur l'événement de pause, il y a une note sur iOS Quirks:

  • Le panneau mobile jQuery ne se ferme pas entièrement sur le navigateur Android
  • Erreur dans la construction d'une application Android utilisant apache cordova
  • Pincer zoom avant, zoom arrière - javascript / jquery / jquery événements mobiles pour le Web sur la plate-forme Android
  • L'application Android Phonegap déclenche la mise à jour par programme
  • L'erreur de référence sur la notification n'est pas définie dans la notification push cordova android
  • Méthodes WebView sur la même erreur de thread
  • "Dans le gestionnaire de pause, tous les appels à l'API Cordova ou aux plugins indigènes qui fonctionnent Objective-C ne fonctionnent pas, ainsi que tous les appels interactifs, tels que les alertes ou console.log (). Ils ne sont traités que lorsque l'application reprend , Sur la prochaine boucle d'exécution. "

    Ceci est très similaire à ce que je vois sur mon appareil Android, mais je me demande si c'est le même problème. J'ai vraiment besoin d'un correctif ou d'une solution de rechange, car il s'agit d'un showtopper pour ne pas pouvoir éteindre l'audio lorsqu'un utilisateur met l'application en pause.

    Voici mon code pour ajouter l'écouteur d'événement de pause:

    document.addEventListener('deviceready', on_device_ready, false); function on_device_ready() { document.addEventListener('pause', on_pause, false); document.addEventListener('resume', on_resume, false); } 

    MISE À JOUR: Je pense que je l'ai résolu, mais je ne suis pas trop content de la solution. J'avais défini la variable de configuration de Phonegap config.xml KeepRunning sur false. Je suis devenu vrai et maintenant il obtient l'événement de pause lorsqu'il est censé le faire. J'ai l'impression que je pourrais empêcher mon application de fonctionner en arrière-plan et d'exécuter aussi un certain code de pause.

    Quoi qu'il en soit, voici la ligne config.xml dont je parle:

     <preference name="KeepRunning" value="true"/> 

  • Dagger2: erreur lorsque deux composants ont la même signature de méthode d'injection
  • Accès à appView from Cordova 5.0.0
  • Android - Désactiver le support d'écran x grands écrans
  • Uncaught ReferenceError: cordova n'est pas défini
  • La plate-forme cordova ajouter Android donne l'erreur: "Erreur: le chemin fourni n'est pas un projet Android".
  • Comment utiliser Javascript pour détecter lorsque l'application Android Phonegap est perdue
  • coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.