在android phonegap和jqtouch中声音播放和向前滑动动画闪烁问题?

时间:2010-11-03 12:54:39

标签: android jqtouch cordova

我正在开发一个使用phonegap for android的应用程序。它包含大约25个图像和相似数量的mp3文件。每个mp3文件的持续时间不超过10秒。 app的要求是每当屏幕上显示图像时,应该播放其相关的mp3文件。我正在使用jqtouch滑动操作从一个页面移动到另一个页面。我在仿真器和真实设备(三星galaxy 3)上面临以下问题 -

  1. 在15-20个图像之后声音停止在模拟器和星系3上播放。在logcat中我得到以下错误

    ERROR / AudioFlinger(34):没有足够的内存用于AudioTrack大小= 49216

  2. 我正在使用以下代码播放mp3文件

    if(mp3file!=null){
                mp3file.stop();
    
                mp3file = null;
            }
    
            mp3file = new Media("/android_asset/www/name_of_file.mp3",
                function() {
                    console.log("playAudio():Audio Success");
                },
                    function(err) {
    
                },
                    function(status) {
                                   });
              mp3file.play();
    

    我认为错误是由于每个mp3文件的phonegap api中的audiomanager对象留在内存中。  我想知道如何破坏在javascript中创建的媒体对象。你可以玩,停止,暂停。但是有什么方法在phonegap中为android来销毁它,以便它在完成播放后不会留在内存中。

    1. 我面临的另一个问题是与jqtouch中的左侧滑动操作相关,以查看下一张图像。如果我当前正在查看image1并且如果我尝试通过左滑动动作来查看image2,则会在短时间内显示image2,之后会显示image1片刻,然后再显示image2。简而言之,从image1过渡到 image2不平滑,有闪烁效果。但是,如果我使用右滑动转换从image2转到image1是顺利的。
    2. 由于

1 个答案:

答案 0 :(得分:0)

我得到了另一个开发人员的帮助。这个技巧是在函数外面创建一个函数声明mp3文件,然后在它上面调用stopRecord()。(即使你没有做录音)。我用一个简单的测试了按钮一遍又一遍地播放声音,在我厌倦了玩它之前它已经工作了75次。

让我知道它适合你。

var mp3file;
function playAudio(){


if(mp3file!=null){
            mp3file.stop();
            mp3file.stopRecord();
            mp3file=null;

        }

       mp3file = new Media("/android_asset/www/yourmp3.mp3",
            function() {
                console.log("playAudio():Audio Success");
            },
                function(err) {

            },
                function(status) {
                               });
          mp3file.play();



}