【发布时间】:2014-08-18 13:41:27
【问题描述】:
我试图找到解决方案,但没有找到最终解决此问题的任何方法。所以,问题很基本,我在很多地方找到了他,很多地方都解决了这个问题。无论如何,问题是,在 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 设备上释放媒体输出,我的程序会多次使用这个声音函数,大多数情况下,cordova 会中断播放并播放最新的声音声音触发 media_error 错误所在:{code:0}
我需要那些设法使用它的人的帮助,我的代码有什么问题?还有一件事:在 logcat 输出中有一个奇怪的东西:
D/MediaPlayer(xxxxx): Don't notify duration to com.adamos42.application!
【问题讨论】: