gpt4 book ai didi

android - 多次播放和停止音频文件时出现内存问题

转载 作者:行者123 更新时间:2023-11-30 00:45:45 26 4
gpt4 key购买 nike

我正在编写一个需要多次播放多个声音文件的游戏。

我正在使用 MediaPlayer 对象重新定位文件并在每次需要时播放。以下代码我正在使用:

try {
if (commonPlayer.isPlaying()) {
commonPlayer.stop();
commonPlayer.release();
}

commonPlayer = null;

switch (gameAction) {
case 1:
commonPlayer = MediaPlayer.create(context, R.raw.tap);
break;

case 2:
commonPlayer = MediaPlayer.create(context, R.raw.score);
break;

case 3:
commonPlayer = MediaPlayer.create(context, R.raw.die);
break;
}

commonPlayer.start();

} catch (Exception e) {
log("Exception: " + e.getMessage());
}

但多次播放后停止播放并出现以下错误:

01-24 22:25:51.215   263 28967 I ACodec  : codec does not support config priority (err -2147483648)
01-24 22:25:51.216 263 28967 I MediaCodec: MediaCodec will operate in async mode
01-24 22:25:51.219 22703 22703 I Score : 3, 15
01-24 22:25:51.220 263 28965 E AudioFlinger: not enough memory for AudioTrack size=131176
01-24 22:25:51.221 263 28965 D MemoryDealer: AudioTrack (0xa15abbd0, size=4194304)
.......
0x00260980 | 0x00020080 | A
01-24 22:25:51.221 263 28965 D MemoryDealer:
01-24 22:25:51.221 263 28965 E AudioFlinger: createTrack_l() initCheck failed -12; no control block?
01-24 22:25:51.221 263 28965 E AudioTrack: AudioFlinger could not create track, status: -12
01-24 22:25:51.221 263 28965 E AudioSink: Unable to create audio track
01-24 22:25:51.221 263 28965 W NuPlayerRenderer: openAudioSink: non offloaded open failed status: -19
01-24 22:25:51.221 263 28962 E NuPlayer: received error(0xffffffed) from audio decoder, flushing(0), now shutting down
01-24 22:25:51.221 263 28962 D NuPlayerDriver: notifyListener_l(0xab839b00), (100, 1, -19)
01-24 22:25:51.221 22703 22773 E MediaPlayer: error (1, -19)
01-24 22:25:51.221 263 28965 W NuPlayerRenderer: onDrainAudioQueue(): audio sink is not ready

关于如何多次播放声音文件有什么建议吗?

最佳答案

代替这个

try {
if (commonPlayer.isPlaying()) {
commonPlayer.stop();
commonPlayer.release();
}

commonPlayer = null;

switch (gameAction) {
case 1:
commonPlayer = MediaPlayer.create(context, R.raw.tap);
break;

case 2:
commonPlayer = MediaPlayer.create(context, R.raw.score);
break;

case 3:
commonPlayer = MediaPlayer.create(context, R.raw.die);
break;
}

commonPlayer.start();

} catch (Exception e) {
log("Exception: " + e.getMessage());
}

试试这个

commonPlayer = null;

switch (gameAction) {
case 1:
commonPlayer = MediaPlayer.create(context, R.raw.tap);

commonPlayer.setOnCompletionListener(new musicCompletionListener());

break;

case 2:
commonPlayer = MediaPlayer.create(context, R.raw.score);
commonPlayer.setOnCompletionListener(new musicCompletionListener());

break;

case 3:
commonPlayer = MediaPlayer.create(context, R.raw.die);
commonPlayer.setOnCompletionListener(new musicCompletionListener());

break;
}

commonPlayer.start();

}

private class musicCompletionListener implements MediaPlayer.OnCompletionListener {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
commonPlayer.release();
}
}

关于android - 多次播放和停止音频文件时出现内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com