Cordova 播放第二个音频时是否可以自动停止第一个音频?
我正在尝试创建一个Android应用程序,使用Cordova播放声音 声音正常工作。除了当我添加两个声音时,我播放的第一个声音是唯一要播放的声音。即使单击另一个声音的按钮,它也会播放第一个声音Cordova 播放第二个音频时是否可以自动停止第一个音频?,cordova,cordova-plugins,Cordova,Cordova Plugins,我正在尝试创建一个Android应用程序,使用Cordova播放声音 声音正常工作。除了当我添加两个声音时,我播放的第一个声音是唯一要播放的声音。即使单击另一个声音的按钮,它也会播放第一个声音 // Wait for device API libraries to load // document.addEventListener("deviceready", onDeviceReady, false); // device AP
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
var my_media = new playAudio();
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
if (my_media == null) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
} // else play current audio
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
// success callback
function(position) {
if (position > -1) {
setAudioPosition((position) + " sec");
}
},
// error callback
function(e) {
console.log("Error getting pos=" + e);
setAudioPosition("Error: " + e);
}
);
}, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
</head>
<body>
<a href="#" class="btn large" onclick="playAudio('file:///android_asset/www/media/1.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="playAudio('https://ia800902.us.archive.org/23/items/tagot/rain.mp3');">Play Audio2</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
//等待设备API库加载
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
//
函数ondevicerady(){
var my_media=新播放音频();
}
//音频播放器
//
var my_media=null;
var mediaTimer=null;
//播放音频
//
功能播放音频(src){
if(my_media==null){
//从src创建媒体对象
my_media=新媒体(src、onSuccess、onError);
}//否则播放当前音频
//播放音频
我的媒体播放();
//每秒更新我的媒体位置
如果(mediaTimer==null){
mediaTimer=setInterval(函数(){
//得到我的媒体职位
my_media.getCurrentPosition(
//成功回调
职能(职位){
如果(位置>-1){
设置音频位置((位置)+“秒”);
}
},
//错误回调
职能(e){
console.log(“获取位置时出错=”+e);
设置音频位置(“错误:+e”);
}
);
}, 1000);
}
}
//暂停音频
//
函数pauseAudio(){
如果(我的媒体){
我的媒体暂停();
}
}
//停止音频
//
函数stopAudio(){
如果(我的媒体){
我的媒体。停止();
}
clearInterval(mediaTimer);
mediaTimer=null;
}
//onSuccess回调
//
函数onSuccess(){
log(“playAudio():音频成功”);
}
//错误回调
//
函数onError(错误){
警报('code:'+error.code+'\n'+
'消息:'+error.message+'\n');
}
//设置音频位置
//
功能设置音频位置(位置){
document.getElementById('audio_position')。innerHTML=position;
}
我试图得到的是播放例如5种声音,每当我点击其中一种时,播放的声音立即停止。
感谢您的帮助:)第一个声音继续播放,因为您正在检查以下条件,即在播放第一个音频后返回
true
if (my_media == null) {
my_media = new Media(src, onSuccess, onError);
}
相反,如果需要播放多个音频文件,请使用对象
my_media = {}; // init the play object
function playAudio(src, id) {
if (!my_media[id]) { // check if media already created
my_media[id] = new Media(src, onSuccess, onError);
}
my_media[id].play();
}
playAudio('file:///android_asset/www/media/1.mp3', 458);
playAudio('file:///android_asset/www/media/2.mp3', 33);
playAudio('file:///android_asset/www/media/3.mp3', 44);
第一个声音继续播放,因为您正在检查以下条件,即播放第一个音频后返回
true
if (my_media == null) {
my_media = new Media(src, onSuccess, onError);
}
相反,如果需要播放多个音频文件,请使用对象
my_media = {}; // init the play object
function playAudio(src, id) {
if (!my_media[id]) { // check if media already created
my_media[id] = new Media(src, onSuccess, onError);
}
my_media[id].play();
}
playAudio('file:///android_asset/www/media/1.mp3', 458);
playAudio('file:///android_asset/www/media/2.mp3', 33);
playAudio('file:///android_asset/www/media/3.mp3', 44);
以下是我如何使用您的代码:
function playAudio(src) {
my_media = {}; // init the play object
function playAudio(src, id) {
if (!my_media[id]) { // check if media already created
my_media[id] = new Media(src, onSuccess, onError);
}
my_media[id].play();
}
playAudio('file:///android_asset/www/media/1.mp3', 1);
playAudio('https://ia800902.us.archive.org/23/items/tagot/rain.mp3', 2);
- 音频是自动播放的,我不想要。但是使用onclick来播放
它李>
- 以下是我如何使用您的代码:
function playAudio(src) { my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); } playAudio('file:///android_asset/www/media/1.mp3', 1); playAudio('https://ia800902.us.archive.org/23/items/tagot/rain.mp3', 2);
- 音频是自动播放的,我不想要。但是使用onclick来播放
它李>
但当我将src移动到链接到“onclick”按钮时,它停止工作:function playAudio(src) { my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); } playAudio('file:///android_asset/www/media/1.mp3', 458')
<a href="#" class="btn large" onclick="playAudio('file:///android_asset/www/media/1.mp3', 458');">Play Audio</a>
此代码自动播放声音:
但当我将src移动到链接到“onclick”按钮时,它停止工作:function playAudio(src) { my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); } playAudio('file:///android_asset/www/media/1.mp3', 458')
<a href="#" class="btn large" onclick="playAudio('file:///android_asset/www/media/1.mp3', 458');">Play Audio</a>
工作正常:
但当我播放第二个声音时,第一个声音并没有停止 整个代码:function onDeviceReady() { var my_media = new playAudio(); } // Audio player // var my_media = null; var mediaTimer = null; // Play audio // my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); }
工作完美:// Wait for device API libraries to load // document.addEventListener("deviceready", onDeviceReady, false); // device APIs are available // function onDeviceReady() { var my_media = new playAudio(); } // Audio player // var my_media = null; var mediaTimer = null; // Play audio // my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); } //playAudio('file:///android_asset/www/media/1.mp3'); // Pause audio // function pauseAudio() { if (my_media) { my_media.pause(); } } // Stop audio // function stopAudio() { if (my_media) { my_media.stop(); } clearInterval(mediaTimer); mediaTimer = null; } // onSuccess Callback // function onSuccess() { console.log("playAudio():Audio Success"); } // onError Callback // function onError(error) { alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); } // Set audio position // function setAudioPosition(position) { document.getElementById('audio_position').innerHTML = position; }
但当我播放第二个声音时,第一个声音并没有停止 整个代码:function onDeviceReady() { var my_media = new playAudio(); } // Audio player // var my_media = null; var mediaTimer = null; // Play audio // my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); }
// Wait for device API libraries to load // document.addEventListener("deviceready", onDeviceReady, false); // device APIs are available // function onDeviceReady() { var my_media = new playAudio(); } // Audio player // var my_media = null; var mediaTimer = null; // Play audio // my_media = {}; // init the play object function playAudio(src, id) { if (!my_media[id]) { // check if media already created my_media[id] = new Media(src, onSuccess, onError); } my_media[id].play(); } //playAudio('file:///android_asset/www/media/1.mp3'); // Pause audio // function pauseAudio() { if (my_media) { my_media.pause(); } } // Stop audio // function stopAudio() { if (my_media) { my_media.stop(); } clearInterval(mediaTimer); mediaTimer = null; } // onSuccess Callback // function onSuccess() { console.log("playAudio():Audio Success"); } // onError Callback // function onError(error) { alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); } // Set audio position // function setAudioPosition(position) { document.getElementById('audio_position').innerHTML = position; }
我试图实施你的解决方案,但没有成功。如果您能用完整的代码将您的解决方案添加到我上面的代码中,我将不胜感激。如果你能增加两个声音而不是一个,那会更有帮助。感谢您指定哪些不起作用?您是否提供了两个不同的ID?只是想澄清一下:例如,我想添加3个音频文件,并使用带有唯一按钮的“onclick”播放每个文件。谢谢。。。它正在工作。但是如何将每个声音的播放链接到一个“onclick”按钮。请随意接受这个答案,如果它解决了问题,我试图实现你的解决方案,但没有成功。如果您能用完整的代码将您的解决方案添加到我上面的代码中,我将不胜感激。如果你能增加两个声音而不是一个,那会更有帮助。感谢您指定哪些不起作用?您是否提供了两个不同的ID?只是想澄清一下:例如,我想添加3个音频文件,并使用带有唯一按钮的“onclick”播放每个文件。谢谢。。。它正在工作。但是如何将每个声音的播放链接到“onclick”按钮。如果这个答案已经解决了问题,请随意接受它,删除它,因为它应该是一个注释,而不是一个答案伴侣。删除它,因为它应该是一个注释,而不是一个答案伴侣。 - 音频是自动播放的,我不想要。但是使用onclick来播放
它李>