spec run plugin name engine javascript ios xcode cordova

javascript - run - Objeto multimedia iOS Phonegap: ¿cómo accedo a un recurso en la carpeta WWW?



cordova-plugin-whitelist (6)

Estoy desarrollando una aplicación con phonegap, y tengo un archivo de sonido que quiero reproducir que esté en una ruta como www / Sounds / sound.mp3, y estoy tratando de acceder a este archivo usando el objeto Media de Phonegap en orden para jugarlo

No puedo encontrar la ruta para acceder a este archivo de sonido dentro de un archivo javascript que usa el objeto Media? He probado rutas como, file: ///www/Sounds/sound.mp3, rutas relativas, etc. y no puedo acceder a ellas. Sigo recibiendo el siguiente error en xcode 4

Will attempt to use file resource ''file:///www/Sounds/sound.mp3'' Unknown resource ''file:///www/Sounds/sound.mp3''

¿Qué camino debo usar para acceder al archivo? ¿O necesito copiar el archivo de sonido de mi directorio www y en mi carpeta de Recursos y acceder allí?

Se hace referencia a mi carpeta WWW, no estoy seguro si eso hace la diferencia.


Mejor intente esto para tener en cuenta cualquier código de API de historial de HTML5 que pueda agregar entradas de historial con directorios ("/"):

function get_phonegap_path () { var path = window.location.pathname return path.slice(0, path.indexOf("/www/") + 5) }


A partir de Cordova 3.3+, las otras 2 respuestas no son correctas. Debería funcionar incluso si solo le pasa un nombre de archivo.

Pero, solo funcionará en iOS si la extensión del archivo es .wav .

Esto funcionará:

var media = new Media(''recording.wav'', ...);

Esto no:

var media = new Media(''recording.mp3'', ...);


Aquí hay una versión modificada de getPhoneGapPath que me funciona tanto en iOS como en Android. Tampoco se limita a trabajar solo en archivos que tienen un nombre de archivo de 10 caracteres de longitud :)

getPhoneGapPath: function () { ''use strict''; var path = window.location.pathname; var phoneGapPath = path.substring(0, path.lastIndexOf(''/'') + 1); return phoneGapPath; } var resource = getPhoneGapPath() + ''audio/audio.mp3'';

getPhoneGapPath () devolverá:

iOS: / var / mobile / Applications / {GUID} / {appName} / www /

Android: / android_asset / www /


Tuve el mismo problema y todas las respuestas sobre las rutas de archivos por sí solas no me funcionaron con la aplicación Phone Gap Developer . El problema fue que la aplicación de desarrollador no empujó los archivos físicamente en el dispositivo, lo que me impidió acceder a ellos de ninguna manera.

El complemento de Media funcionó según lo previsto

$ phonegap ejecutar Android

$ phonegap ejecutar ios

con este código js:

function getPhoneGapPath() { var path = window.location.pathname; var phoneGapPath = path.substring(0, path.lastIndexOf(''/'') + 1); return phoneGapPath; } var sound = new Media(getPhoneGapPath()+"assets/sounds/sound.mp3" //... sound.play();

Esto devuelve un error en la aplicación de desarrollador:

''No se puede usar el archivo de audio de la fuente var / mobile / Containers / data / Application / {GUID} / Library / NoCloud / phonegapdevapp /www/assets/sounds/sound.mp3''

pero funciona si está construido desde la consola.

Los detalles se pueden encontrar aquí: https://forums.adobe.com/thread/2135718


La mejor respuesta está desactualizada. Ahora puede reproducir formatos wav , mp3 y caf en iOS usando este método de "ruta relativa":

var media = new Media(''beep.wav'', ...);

Tenga en cuenta que el código anterior requiere que el archivo de sonido esté en la raíz de su directorio www/ - en este ejemplo en www/beep.wav . Si desea colocarlos en un subdirectorio como www/sounds/ , deberá especificarlo utilizando una ruta relativa a su directorio www/ . Por ejemplo, esto también funciona ahora:

var media = new Media(''sounds/beep.wav'', ...);

para el archivo de sonido en www/sounds/beep.wav .


Use window.location.pathname para obtener la ruta de su aplicación. Se verá algo así en el iPhone:

/var/mobile/Applications/{GUID}/{appname}.app/www/index.html

Y esto en Android:

/android_asset/www/index.html

Quite el /index.html , /index.html file:// y anexe su ruta relativa Sounds/sound.mp3 .

Aquí hay algo para que comiences:

Demostración: http://jsfiddle.net/ThinkingStiff/chNVY/

Código:

function getPhoneGapPath() { var path = window.location.pathname; path = path.substr( 0, path.length - 10 ); return ''file://'' + path; }; var resource = getPhoneGapPath() + ''Sounds/sound.mps'';