【发布时间】:2010-11-03 12:54:39
【问题描述】:
我正在开发一个使用 phonegap for android 的应用程序。它由大约 25 张图像和类似数量的 mp3 文件组成。每个 mp3 文件的时长不超过 10 秒。应用程序的要求是,只要在屏幕上显示图像,就应该播放其相关的 mp3 文件。我正在使用 jqtouch 滑动操作从一页移动到另一页。我在模拟器和真实设备上都面临以下问题(三星银河 3)-
-
在模拟器和 Galaxy 3 上播放 15-20 张图像后,声音停止播放。在 logcat 中出现以下错误
ERROR/AudioFlinger(34):AudioTrack size=49216 内存不足
我正在使用以下代码播放 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销毁它,这样它就不会在播放完成后留在内存中。
- 我面临的另一个问题与 jqtouch 中的左滑动动作有关,以查看下一张图像。如果我当前正在查看 image1 并且我尝试通过向左滑动操作查看 image2,则会显示 image2 很短的时间,然后显示 image1 片刻,然后再次显示 image2。简而言之,从 image1 到 image2 不平滑,有闪烁效果。但是,如果我使用右滑动过渡从 image2 转到 image1 是平滑的。
谢谢
【问题讨论】:
-
如果您认为 PhoneGap 代码中存在错误,您可以使用 HTML5 音频标签播放歌曲