我正在尝试为游戏创建声音效果。 但是当声音效果开始播放时使用MediaPlayer - 游戏速度会慢一点。 如果我使用了很多声音效果 - 游戏真的很有效。 我想我的意识有问题。
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// ...
if(somethingHappened) {
final MediaPlayer mySound = MediaPlayer.create(getContext(), R.raw.sound1);
mySound.start();
//...
}
//...
}
使用短mp3文件
答案 0 :(得分:1)
尝试清理mySound:
public class MyService extends Service {
MediaPlayer mySound;
// ...
@Override
public void onDestroy() {
if (mySound != null) mySound.release();
}
}
了解更多详情:http://developer.android.com/guide/topics/media/mediaplayer.html
希望这有帮助!
答案 1 :(得分:0)
最好将媒体播放器声明为字段,并在onCreate()中仅在onDraw()中创建一次。现在,每次调用onDraw()(通常很多)都会创建一个新的Media Player,从而占用资源。 另外好处是mySound.pause()如果它不需要,就像Mounir说mySound.release()当你想杀死它时。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
final MediaPlayer mySound = MediaPlayer.create(getContext(),R.raw.sound1);
...
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(somethingHappened) {
mySound.start();
// might also want to call mySound.stop() at some point too
}
protected void onPause(){
super.onPause();
mySound.pause();
}
protected void onDestroy(){
super.onDestroy();
mySound.release();
}