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

  • Ionic no puede ejecutar la plataforma iónica android
  • Cordova 2.1.0 (PhoneGap) crea un script para Android dice "Project already exists" o "Un error ocurrió. Eliminación del proyecto "
  • Phonegap / Cordova plataforma independiente servicio de fondo
  • WebSocket HTML5 en el teléfono para Android
  • Icono de notificación en blanco para Android con Phonegap Build y PushPlugin
  • Phonegap: Clasificación de la lista de contactos
  • GCM - Rara vez recibiendo mensajes temáticos
  • Phonegap.js bloquea la aplicación Android
  • Cree una función que se active sólo una vez después de instalar la aplicación en el teléfono
  • Cordova / PhoneGap pantalla de bienvenida de 9 parches
  • No se pudo implementar en el dispositivo mientras se implementaba la aplicación cordova en un dispositivo conectado.
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.