El teléfono Android no produce sonido utilizando el plugin de teléfono de Córdoba y no da un mensaje de error
Estoy utilizando el marco iónico para crear una aplicación. Me gustaría reproducir un sonido así que usé https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-media/ . Este es mi pedazo de código utilizado para reproducir el sonido:
var my_media = new Media('/android/assets/www/audio/National Anthem.mp3', // success callback function () { console.log("playAudio():Audio Success"); }, // error callback function (err) {console.dir("playAudio():Audio Error: " + err); } ); my_media.play();
Desafortunadamente no está jugando y el mensaje de error dado es:
- Android hace que las aplicaciones de Cordova se reinicien cuando se usan los complementos de Cámara y Captura de Cordova
- Cómo ejecutar cordova reproductor de música en el fondo con las opciones disponibles en la barra de notificación
- Combinación de servicio de Android, Cordova plugin de fondo y Skype O365 sdk no funciona después de pocas horas mientras se ejecuta en segundo plano?
- Video HTML5 - búsqueda precisa en dispositivos Android?
- Mostrar la vista de la cámara dentro de html en android y luego tomar una foto
playAudio():Audio Error: [object Object]
¡En qué no puedo ver el objeto en la consola del cromo!
Si reemplazo var my_media = new Media(..
con var my_media =$cordovaMedia.newMedia(...
No consigo ningún mensaje en la $ionicPlatform.ready(function()..
código se coloca en $ionicPlatform.ready(function()..
así que Sé que el complemento está listo antes de usarlo. ¿Alguna sugerencia?
- La compilación de Cordova devuelve el plugin.xml que falta
- Target plataforma específica para el marco personalizado en un complemento Cordova
- Cordova Plugin para pasar el keycode de un evento keyUp a la aplicación
- Configuración twitter sdk tela para cordova plugin
- Cordova: No se puede construir el proyecto con corodva-plugin-calendar
- Obtener la fuerza de la conexión en Phonegap
- Cómo obtener su contexto en su plugin phonegap
- Acceder al almacenamiento interno de android con cordova file plugin
Así que mi solución para reproductor de medios está abajo:
En primer lugar, crear un servicio:
.factory('MediaSrv', function($q, $ionicPlatform, $window){ var service = { loadMedia: loadMedia, getStatusMessage: getStatusMessage, getErrorMessage: getErrorMessage }; function loadMedia(src, onError, onStatus, onStop){ var defer = $q.defer(); $ionicPlatform.ready(function(){ var mediaSuccess = function(){ if(onStop){onStop();} }; var mediaError = function(err){ _logError(src, err); if(onError){onError(err);} }; var mediaStatus = function(status){ if(onStatus){onStatus(status);} }; if($ionicPlatform.is('android')){src = '/android_asset/www/' + src;} defer.resolve(new $window.Media(src, mediaSuccess, mediaError, mediaStatus)); }); return defer.promise; } function _logError(src, err){ console.error('media error', { code: err.code, message: getErrorMessage(err.code) }); } function getStatusMessage(status){ if(status === 0){return 'Media.MEDIA_NONE';} else if(status === 1){return 'Media.MEDIA_STARTING';} else if(status === 2){return 'Media.MEDIA_RUNNING';} else if(status === 3){return 'Media.MEDIA_PAUSED';} else if(status === 4){return 'Media.MEDIA_STOPPED';} else {return 'Unknown status <'+status+'>';} } function getErrorMessage(code){ if(code === 1){return 'MediaError.MEDIA_ERR_ABORTED';} else if(code === 2){return 'MediaError.MEDIA_ERR_NETWORK';} else if(code === 3){return 'MediaError.MEDIA_ERR_DECODE';} else if(code === 4){return 'MediaError.MEDIA_ERR_NONE_SUPPORTED';} else {return 'Unknown code <'+code+'>';} } return service; })
Entonces, en el controlador:
.controller('phrasebookCtrl', function ($scope, $ionicPlatform, $timeout, $cordovaMedia,MediaSrv) { $scope.play = function(src){ MediaSrv.loadMedia(src).then(function(media){ media.play(); });
Y en su opinión (en el tecleo me prueba):
<p>Welcome: <a ng-click="play('audio/welcome1_el.mp3')">Test me</a></p>
Nota: Esta solución funciona bien para plataformas Android y iOS. También debe crear una carpeta con el nombre audio en la carpeta www en su proyecto, con los archivos .mp3.
Por favor, hágamelo saber si esto solucionó su problema.
NOTA: la ruta cdvfile se admite como parámetro src :
var my_media = new Media('cdvfile://localhost/temporary/recording.mp3', ...);
Por favor, establezca su camino de acuerdo con eso.