Media.release() in cordova's Media plugin

╄→гoц情女王★ 提交于 2019-12-07 18:53:14

问题


How does Media.release() work. Looking at the docs it feels that you have to use it like this:

MediaService.loadMedia('sounds/connection-error.wav').then(function(media){
    media.play();
    media.release();
});

But I googled enough to know that is wrong. We have to explicitly release the core instances on Android.

But how to do that? If I have 8 views in my app and if I play a sound file on each of those views does that count as 8 core instances being used? And can I go back to say view number 1 and again play the sound associated with that view? If so, would that count as a 9th instances ?

Straight away calling media.release() just like above does not play any sound at all.


回答1:


Most common way to play sounds using Cordova Media plugin is following:

function playAudio(src) {
    // HTML5 Audio
    if (typeof Audio != "undefined") { 
        new Audio(src).play() ;

    // Phonegap media
    } else if (typeof device != "undefined") {

        // Android needs the search path explicitly specified
        if (device.platform == 'Android') {
            src = '/android_asset/www/' + src;
        }

        var mediaRes = new Media(src,
            function onSuccess() {
               // release the media resource once finished playing
               mediaRes.release();
            },
            function onError(e){
                console.log("error playing sound: " + JSON.stringify(e));
            });
         mediaRes.play();
   } else {
       console.log("no sound API to play: " + src);
   }
}


来源:https://stackoverflow.com/questions/25590304/media-release-in-cordovas-media-plugin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!