Cordova Media no reproducirá mp3 desde www

He encontrado un montón de posibles soluciones a este problema en StackOverflow, pero nada parece estar resolviendo para mí. Estoy intentando reproducir un archivo mp3 dentro de mi aplicación de Cordova (3.5) usando org.apache.cordova.media@0.2.10

 var sound = new Media('audio/el/hello.mp3'); sound.play() 

Pero simplemente no se reproducirá y obtendré el siguiente error en LogCat

 MediaPlayer error (1, -2147483648) 

He intentado servir la carpeta localmente y los trabajos siguientes que señalan en el mismo archivo

 var sound = new Media('http://10.0.2.2:9999/www/audio/el/hello.mp3'); sound.play() 

Lo que sugiere que no es porque el archivo tiene un problema de codificación.

No pude usar la última versión del plugin de media porque el evento deviceready nunca se deviceready .

Actualización : Acabo de intentar descomprimir los archivos en el almacenamiento persistente y reproducirlos desde allí y obtengo el mismo error.

Actualización : Pasando por la fuente AudioPlayer.java parece que el directorio www no es parte de los activos porque la siguiente llamada lanza una FileNotFoundException donde f == "www/el/hello.mp3"

 fd = this.handler.cordova.getActivity().getAssets().openFd(f); 

Sin embargo, si coloco los archivos directamente en la carpeta de assets entonces funciona.

3 Solutions collect form web for “Cordova Media no reproducirá mp3 desde www”

Ruta del archivo multimedia incorrecta. Debe obtener ruta correctamente:

 var getPathMedia = function () { var path = window.location.pathname; var phoneGapPath = path.substring(0, path.lastIndexOf('/') + 1); // Return path at www folder return 'file://' + phoneGapPath; }; var media = new Media(getPathMedia() + 'media/message.mp3'); media.play(); 

En android, sólo necesita tener la ruta correcta para la carpeta www .

Androide:

 var media = new Media("/android_asset/www/audio/el/hello.mp3", successFunction, errorFunction ); 

Si su aplicación va a ejecutarse en iOS también, debe agregar el /android_asset/www/ dinámicamente, ya que iOS no lo necesita.

IOS:

 var media = new Media("audio/el/hello.mp3", successFunction, errorFunction ); 

Finalmente me di cuenta de esto por mí mismo, pero pensé que compartiría.

Lo que necesitaba hacer no es conseguir la ubicación, sino la URL actual de la página en la que estaba. A partir de eso podría construir un url para el activo que quería jugar.

 var path = window.location.href; var phoneGapPath = path.substring(0, path.lastIndexOf('/') + 1); var media = new Media(phoneGapPath + 'media/message.mp3'); media.play(); 

espero que esto ayude

  • Cómo utilizar PhoneGap Developer App en proyectos de Córdoba
  • Obtener la fuerza de la conexión en Phonegap
  • ¿Cómo soluciono las esquinas de `ui-corner-all` de JQuery Mobile?
  • Cordova androide emulador dejó de funcionar
  • Video HTML5 - búsqueda precisa en dispositivos Android?
  • Error en la compilación en el dispositivo Android
  • ¿Cómo genera Ionic / Cordova la clave hash?
  • Fuentes personalizadas en Android PhoneGap
  • Android installLocation al construir con cordova cli
  • Guardar y restaurar WebView en una aplicación integrada de PhoneGap
  • ¿Cómo utilizar iconos personalizados en jQuery móvil?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.