我试图找到一个解决方案,但没有发现任何最终会解决这个问题的东西。所以,问题是非常基本的,有很多地方我找到了他,许多地方解决了这个问题。无论如何问题是,在50-100成功播放声音后的Cordova Media插件已停止在Android 4.2.2上工作
adamos42@a42book:~$ cordova -v
3.5.0-0.2.6
adamos42@a42book:~/place/of/project$ cordova plugins
com.badrit.MacAddress 0.1.0 "MacAddress"
com.megster.cordova.bluetoothserial 0.3.0 "Bluetooth Serial"
com.randdusing.bluetoothle 1.0.2 "Bluetooth LE"
org.apache.cordova.battery-status 0.2.10 "Battery"
org.apache.cordova.device 0.2.11-dev "Device"
org.apache.cordova.file 1.2.0 "File"
org.apache.cordova.file-transfer 0.4.5-dev "File Transfer"
org.apache.cordova.geolocation 0.3.8 "Geolocation"
org.apache.cordova.media 0.2.12-dev "Media"
org.apache.cordova.media-capture 0.3.2-dev "Capture"
org.apache.cordova.network-information 0.2.11-dev "Network Information"
org.apache.cordova.vibration 0.3.10-dev "Vibration"
我的代码:
var SOUND = true;
var myMedia = null;
var mediaSRC = '';
var LastSnd = '';
function sound(snd)
{
if(SOUND)
{
LastSnd = snd;
mediaSRC = "/android_asset/www/sound/"+snd+".mp3";
console.log("Media::load('"+mediaSRC+"');");
myMedia = new Media(mediaSRC, media_success, media_error);
myMedia.play();
return true;
}
return false;
}
function media_success()
{
console.debug('Media::success(\''+LastSnd+'\');');
myMedia.stop();
myMedia.release();
mediaSRC = "";
}
function media_error(error)
{
console.error('Media::error(): '+json_encode(error));
if(mediaSRC != "" && error.message != undefined)
alert(error.message);
}
所以每次成功media.play()都会触发在Android设备上发布Media输出的media_success函数,我的程序使用这个声音函数sereveal次,大多数时候cordova打破播放并播放最直接的声音声音触发media_error,其中错误是:{code:0}
我需要一些设法使用它的帮助,我的代码有什么问题?还有一件事:在logcat输出中有一个奇怪的事情:
D/MediaPlayer(xxxxx): Don't notify duration to com.adamos42.application!
答案 0 :(得分:0)
现在我尝试使用这种方式,它似乎有效:
var SOUND = true;
var myMedia = null;
var mediaSRC = '';
var LastSnd = '';
function sound(snd)
{
if(SOUND)
{
LastSnd = snd;
mediaSRC = "/android_asset/www/sound/"+snd+".mp3";
console.log("Media::load('"+mediaSRC+"');");
if(myMedia != null) myMedia.release();
myMedia = new Media(mediaSRC, media_success, media_error);
myMedia.play();
return true;
}
return false;
}
function media_success()
{
console.debug('Media::success(\''+LastSnd+'\');');
//myMedia.stop();
//myMedia.release();
mediaSRC = "";
}
function media_error(error)
{
console.error('Media::error(): '+json_encode(error));
if(mediaSRC != "" && error.message != undefined)
alert(error.message);
}