Jouer un son dans WebView à partir de JavaScript
Je suis en train de lire le son à partir du code JavaScript chargé de WebView d'actifs:
WebView web_view = (WebView) findViewById(R.id.web_view);
web_view.getSettings().setJavaScriptEnabled(true);
web_view.setWebChromeClient(new WebChromeClient());
web_view.loadUrl("file:///assets/www/index.html");
J'ai essayé toutes les combinaisons de l'une des manières suivantes comment lire l'audio en OGG, MP3 et WAV, le JavaSrcipt code de la assets/www/js/play.js:
audio = new Audio("../audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio("./audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio("audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio("file:///android_asset/www/audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio();
audio.src = document.getElementById("audio_tag").src;
audio.load();
audio.play();
Où audio_tag est <audio id="audio_tag" src="audio/sound.mp3" preload="auto"></audio>
, a également essayé avec toutes les combinaisons de chemins et de formats.
Mais le son n'est pas en lecture et seulement la moindre idée de ce qui peut être mauvais, c'est suite à erreur générale:
E/MediaPlayer(1530): erreur (1, -2147483648)
Deviner à partir de ce message d'information, le chemin vers le fichier audio doit être correcte pour la deuxième fosse du cinquième cas:
I/StagefrightPlayer(33): setDataSource('file:///android_asset/www/audio/sound.mp3');
Bien que cette question peut être considéré comme un double de
WebView Android jouer de l'audio avec javascript et la réponse n'est pas d'aider, de toute façon, depuis shouldOverrideUrlLoading n'est jamais appelée, je vais essayer de préciser ce problème plus précisément ici.
Avez-vous une idée de ce que peut être mal ou comment trouver de quoi s'agit-il?
Merci.
Edit: Test du Galaxy Gio avec Android 2.3 me donne de l'autre ensemble d'erreurs si:
02-06 17:15:13.829: V/PlayerDriver(95): AddToScheduler 02-06
17:15:13.829: V/PlayerDriver(95): PendForExec 02-06 17:15:13.829:
V/PlayerDriver(95): OsclActiveScheduler::Courant 02-06
17:15:13.829: V/PlayerDriver(95): StartScheduler 02-06
17:15:13.829: V/PVPlayer(95): envoyer PLAYER_SETUP 02-06 17:15:13.829:
V/PlayerDriver(95): Envoyer un lecteur de code: 2 02-06 17:15:13.829:
V/PlayerDriver(95): CommandCompleted 02-06 17:15:13.829:
V/PlayerDriver(95): achèvement de la commande PLAYER_SETUP statut=PVMFSuccess
02-06 17:15:13.829: V/PVPlayer(95):
setDataSource(file:///android_asset/www/audio/bruit.mp3) 02-06
17:15:13.839: V/PVPlayer(95): prepareAsync 02-06 17:15:13.839:
V/PVPlayer(95): source de données =
file:///android_asset/www/audio/bruit.mp3 02-06 17:15:13.849:
V/PlayerDriver(95): Envoyer un lecteur de code: 3 02-06 17:15:13.849:
V/PlayerDriver(95): handleSetDataSource 02-06 17:15:13.849:
V/PlayerDriver(95): handleSetDataSource - numérisation pour l'extension
02-06 17:15:13.849: V/PlayerDriver(95): HandleInformationalEvent:
PVMFInfoErrorHandlingStart 02-06 17:15:13.849: V/PlayerDriver(95):
HandleInformationalEvent: type=26 non GÉRÉE 02-06 17:15:13.849:
W/MediaPlayer(4361): info/avertissement (1, 26) 02-06 17:15:13.849:
V/PlayerDriver(95): CommandCompleted 02-06 17:15:13.849:
V/PlayerDriver(95): achèvement de la commande PLAYER_SET_DATA_SOURCE
statut=PVMFErrNotSupported 02-06 17:15:13.849: E/PlayerDriver(95):
Commande PLAYER_SET_DATA_SOURCE terminé avec une erreur ou info
PVMFErrNotSupported 02-06 17:15:13.849: E/MediaPlayer(4361): erreur
(1, -4) 02-06 17:15:13.849: V/PVPlayer(95): run_init s=-2147483648,
annulé=0 02-06 17:15:13.849: V/PlayerDriver(95):
HandleInformationalEvent: PVMFInfoErrorHandlingComplete 02-06
17:15:13.849: W/PlayerDriver(95): PVMFInfoErrorHandlingComplete
02-06 17:15:13.939: I/MediaPlayer(4361): Info (1,26) 02-06
17:15:13.939: E/MediaPlayer(4361): Erreur (1,-4) 02-06 17:15:13.939:
V/PVPlayer(95): réinitialisation 02-06 17:15:13.939: V/PlayerDriver(95): Envoyer
lecteur de code: 18 02-06 17:15:13.939: V/PlayerDriver(95):
handleCancelAllCommands 02-06 17:15:13.939: V/PlayerDriver(95):
CommandCompleted 02-06 17:15:13.939: V/PlayerDriver(95): Terminé
commande PLAYER_CANCEL_ALL_COMMANDS statut=PVMFSuccess 02-06
17:15:13.939: V/PlayerDriver(95): Envoyez le code du lecteur: 11 02-06
17:15:13.939: V/PlayerDriver(95): handleReset 02-06 17:15:13.939:
V/PlayerDriver(95): CommandCompleted 02-06 17:15:13.939:
V/PlayerDriver(95): achèvement de la commande PLAYER_RESET statut=PVMFSuccess
02-06 17:15:13.939: V/PlayerDriver(95): Envoyez le code du lecteur: 17 02-06
17:15:13.939: V/PlayerDriver(95): handleRemoveDataSource 02-06
17:15:13.939: V/PlayerDriver(95): CommandCompleted 02-06
17:15:13.939: V/PlayerDriver(95): achèvement de la commande
PLAYER_REMOVE_DATA_SOURCE statut=PVMFSuccess 02-06 17:15:13.939:
V/PlayerDriver(95): retirez de la source de données complète 02-06 17:15:13.939:
V/PVPlayer(95): annuler le mappage de fichier
- crois que j'ai trouvé une merveilleuse solution pour ce. S'il vous plaît, vérifier ma réponse ici stackoverflow.com/a/40634355/3866399
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème et enfin, je suis en utilisant phonegap et cordoue, où vous pouvez jouer et enregistrer des fichiers audio facilement:
http://docs.phonegap.com/en/2.9.0/cordova_media_media.md.html
Re: MediaPlayer( ): Erreur (1,-2147483648)
Android MediaPlayer besoins des fichiers médias pour être lisible par tout le monde donc ils ne peuvent pas résider dans les “actifs” dossier à l'intérieur du projet Eclipse. Poussez les fichiers audio/vidéo sur le périphérique de stockage externe. Pour ce faire, avec un émulateur, l'utilisation de la Perspective DDMS dans Eclipse (alors que votre émulateur est en cours d'exécution d'aller à la Fenêtre->Ouvrir Prospective->Autre->DDMS) pour créer un dossier et de pousser les fichiers sur la carte SD de l'image ou interne (non amovible) de stockage.
De référence sur DDMS:
http://developer.android.com/guide/developing/debugging/ddms.html
Dans DDMs, sélectionnez votre émulateur dans le panneau Périphériques sur la gauche, puis choisissez le FileExplorer onglet sur la droite, recherchez un dossier nommé /mnt/sdcard/qui contient la carte sd contenu, ou, alternativement /Android/data/nom_du_paquet/fichiers/pour la standardisation de l'application de zone de stockage. Ainsi, dans l'exemple ci-dessus, si vous créez un dossier myaudio sur la carte sd le nom du fichier chemin d'accès serait:
audio = new Audio("/mnt/sdcard/myaudio/son.mp3");
De référence:
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
Et ne pas abandonner le HTML5!
Cela dépend de votre appareil Android et les codecs disponibles... Mais sans doute le chemin n'est pas correct. Êtes-vous à l'aide de Phonegap? Est-ce que votre code de jeu sur les navigateurs de bureau?
Je suis en utilisant un code similaire:
Et mon HTML balise audio est ceci:
Je suis en utilisant le format de fichier audio mp3, car il fonctionne pour iOS et Android dispositifs.
En outre, notez que la balise Audio de l'élément n'est pas disponible sur toutes les versions d'android. Comme vous pouvez le voir ici, il fonctionne pour Android 2.3 et plus.