科尔多瓦媒体停止工作

时间:2014-08-18 13:41:27

标签: android cordova media

我试图找到一个解决方案,但没有发现任何最终会解决这个问题的东西。所以,问题是非常基本的,有很多地方我找到了他,许多地方解决了这个问题。无论如何问题是,在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!

1 个答案:

答案 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);
}