gpt4 book ai didi

java - 媒体播放器播放完毕后如何释放它?

转载 作者:行者123 更新时间:2023-12-01 18:38:48 25 4
gpt4 key购买 nike

我正在创建一个音板,在单击大约 30 种不同的声音后,它停止工作;我相信安卓内存不足。下面是我的代码。如何实现 .release() 以便声音播放完毕后被释放?我并不关心是否有两件事同时进行;剪辑太短,无法实现这一点。我只想得到我的代码集。

public class soundPageOne extends Activity {
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.soundsone);

final MediaPlayer pg1 = MediaPlayer.create(this, R.raw.peter1);
Button playSound1 = (Button) this.findViewById(R.id.peter1Button);

playSound1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
pg1.start();

}
});

我已经做了很多搜索,但由于我缺乏 java/android 知识,我无法得到任何东西。预先感谢,如果有人需要更多代码,请告诉我。

最佳答案

我发表了评论,但无论如何我都会发布一个答案来表明我的意思......

这个想法是您有一定数量的可以使用的 MediaPlayer 实例。这样您就永远不会超过最大实例数。该数组的长度应该是您期望能够听到的并发声音的数量。如果声音是本地文件,则准备声音所需的时间几乎可以忽略不计,因此在点击处理程序中调用 create 不会导致糟糕的性能。我想,每个按钮都与特定的资源相关联,因此我设置了一个辅助方法来以相同的方式为每个按钮创建和播放声音。

public class soundPageOne extends Activity {

private MediaPlayer[] mPlayers = new MediaPlayer[2];
private int mNextPlayer = 0;

@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.soundsone);
Button playSound1 = (Button)this.findViewById(R.id.peter1Button);
playSound1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startSound(R.raw.peter1);
}
});
}

public void onDestroy() {
super.onDestroy(); // <---------------------- This needed to be there
for (int i = 0; i < mPlayers.length; ++i)
if (mPlayers[i] != null)
try {
mPlayers[i].release();
mPlayers[i] = null;
}
catch (Exception ex) {
// handle...
}
}

private void startSound(int id) {
try {
if (mPlayers[mNextPlayer] != null) {
mPlayers[mNextPlayer].release();
mPlayers[mNextPlayer] = null;
}
mPlayers[mNextPlayer] = MediaPlayer.create(this, id);
mPlayers[mNextPlayer].start();
}
catch (Exception ex) {
// handle
}
finally {
++mNextPlayer;
mNextPlayer %= mPlayers.length;
}
}

}

关于java - 媒体播放器播放完毕后如何释放它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20754272/

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