Voici ma fonction de lecture: Comme vous pouvez le voir, i SetVolume () dans plusieurs endroits sur 0. Cela n'a absolument aucun effet. J'ai essayé également de régler 0,8, 0,2, n'a pas d'importance ne fonctionnera pas. J'ai également essayé une valeur non chaîne, ce qui n'a pas d'importance car la valeur est convertie en un Val de flotteur à l'intérieur du module Obj-C. J'ai également nslogged pour que la valeur soit passée correctement et elle est.
Test avec iPad iOS 9.2 | Cordoue 6.2 | Plugin Media Cordova 2.3.1. P>
play: function(src, seekTime) { App.Log.info('Playing audio source', src); seekTime = seekTime ? seekTime : 0; var obj = { source: src, startTime: new Date().getTime(), seekTime: seekTime, duration: 0, preloadedNext: false, audioSource: false }; obj.audioSource = new Media(src, function(event){ $this.player().onAudioEnd(event, obj); }, function(){ //on error }, function(status) { obj.audioSource.setVolume("0.0"); if(status == 2){ obj.audioSource.setVolume("0.0"); obj.audioSource.seekTo(obj.seekTime * 1000); obj.timer = setInterval(function(){ obj.seekTime++; obj.duration = obj.audioSource._duration; if(obj.duration < 0){ return; } if(obj.seekTime >= (obj.duration - $this.default.fadeTime)) { if(obj.preloadedNext){ return; } obj.preloadedNext = true; $this.player().preloadNext(obj); } }, 1000); } }); obj.audioSource.setVolume("0.0"); obj.audioSource.play(); obj.audioSource.setVolume("0.0"); obj.audioSource.seekTo(obj.seekTime * 1000); console.log('Audio Source', JSON.stringify(obj)); $this.playing.push(obj); }
3 Réponses :
Je ne suis pas sûr que cela résoudra votre problème, mais peut-être que le volume n'est peut-être pas défini sur zéro car le SETVOLume est appelé trop "tôt". Pourriez-vous essayer ce code et signaler éventuellement quelques journaux afin d'affiner ma solution?
J'apprécie que vous vous preniez le temps de répondre, si vous remarquez ci-dessus dans le bloc IF (Status == 2) {} Block ... Si Statut = 2, le fichier audio est dans l'état "State exécutant" afin de régler le volume de ce point devrait me permettre d'avoir un contrôle de volume même s'il n'est pas encore prêt à l'extérieur de ce bloc.
Le code d'échantillon suivant fonctionne bien et il est testé dans les périphériques Android et iOS:
index.html: strong> p> document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
document.querySelector("#playMp3").addEventListener("touchend", playMP3, false);
document.querySelector("#playMp3Mild").addEventListener("touchend", playMp3Mild, false);
document.querySelector("#playRemoteFile").addEventListener("touchend", playRemoteFile, false);
};
function playMP3() {
var mp3URL = getMediaURL("sounds/button-1.mp3");
var media = new Media(mp3URL, null, mediaError);
media.setVolume(1.0);
media.play();
}
function playMp3Mild() {
var mp3URL = getMediaURL("sounds/button-1.mp3");
var media = new Media(mp3URL, null, mediaError);
media.setVolume(0.1);
media.play();
}
function playRemoteFile() {
var media = new Media("http://SERVER_IP:PORT/media/test.mp3");
media.setVolume(0.1);
media.play();
}
function getMediaURL(s) {
if(device.platform.toLowerCase() === "android") return "/android_asset/www/" + s;
return s;
}
function mediaError(e) {
alert('Media Error');
alert(JSON.stringify(e));
}
@Davidnathan Bonjour David, je ne comprends pas comment cette question est liée à ma réponse
Pouvez-vous définir un délai muet d'une seconde pour voir s'il crée au moins un comportement retardé correct? (processus d'élimination)
envisager de remplir un rapport de bogue sur les problèmes.cordova.io
Avez-vous vérifié la version code> android code>? Je n'ai pas
Mac code> sur moi pour le moment, mais avez-vous vérifié l'exécution entravant actuellement le
si code> sur Github.com/apache/cordova-plugin-media/blob/master/src/ios/... ?
@ Anthony.c J'ai essayé le plugin multimédia dans une application d'exemple et SetVolume fonctionne parfaitement bien. Ont posté l'application de test dans mon github - github.com/gandhirajan/cordova_media S'il vous plaît vérifier s'il vous plaît voir si ça aide. J'ai également remarqué que la version du plugin que vous avez mentionnée est 2.3.1 mais si j'ajoute le plugin à l'aide de Ajouter une commande, la dernière version disponible est 2.3.0 J'espère que vous testez dans la branche BETA. Veuillez consulter la branche principale et voir si cela aide. Tiens moi au courant
Vous utilisez un fichier local comme j'utilise un fichier externe que je me demande si cela fait toute différence?
@ anthony.cès a essayé de jouer au fichier distant à l'aide du code suivant: Fonction PlayRemotefile () {var Media = nouveau support (" localhost : 8080 / test.mp3 "); media.setvolume (0,1); media.play ();} Il fonctionne bien dans le périphérique iOS en cours d'exécution avec la version 9.2. Avez-vous essayé avec le plugin multimédia version 2.3.0 comme je mentionné plus tôt?
Je suis curieux de ce que vous faites dans la méthode PreloadNext spécifiquement à cette ligne. "$ ceci.player (). PreloadNext (obj)" Pouvez-vous poster cette méthode? Merci.