我试图找到一个解决方案,但没有找到任何可以最终解决此问题的方法。因此,问题很基本,在很多地方我找到了他,并且很多地方都解决了这个问题。无论如何,问题在于,成功播放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()都会触发media_success函数,该函数会在Android设备上释放Media输出,我的程序会多次使用此声音功能,多数情况下cordova会中断播放并播放最新的声音,而每种声音都会触发media_error,错误为:{code:0}
我需要设法使用它的人的帮助,我的代码有什么问题?还有一件事:logcat输出中有一个奇怪的事情:
D/MediaPlayer(xxxxx): Don't notify duration to com.adamos42.application!
现在,我尝试使用这种方式,它似乎可以正常工作:
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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句