我正在开发一个使用phonegap for android的应用程序。它包含大约25个图像和相似数量的mp3文件。每个mp3文件的持续时间不超过10秒。 app的要求是每当屏幕上显示图像时,应该播放其相关的mp3文件。我正在使用jqtouch滑动操作从一个页面移动到另一个页面。我在仿真器和真实设备(三星galaxy 3)上面临以下问题 -
在15-20个图像之后声音停止在模拟器和星系3上播放。在logcat中我得到以下错误
ERROR / AudioFlinger(34):没有足够的内存用于AudioTrack大小= 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来销毁它,以便它在完成播放后不会留在内存中。
由于
答案 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();
}