0

我想在我的游戏中播放声音。但是每次启动应用程序时声音只播放半秒。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Shapes shapes = new Shapes(this);
    setContentView(shapes);
    MediaPlayer mp = MediaPlayer.create(this, R.raw.back);
    try {
        mp.prepare();
    } catch (IllegalStateException e) {}
      catch (IOException e) {}
    mp.start();
    mp.setLooping(true);
}

mp.setLooping(true) 没有帮助,它仅在我删除“setContentView(shapes);”时才有效。我该怎么做才能让声音在半秒后停止?

4

4 回答 4

0

如果这是一个游戏,我假设它在一个线程中运行。你的游戏在线程中运行吗?

您的线程应该有一个 doStart() 或已经声明 MediaPlayer 的类似方法。

在游戏线程中启动背景音乐的截断基本示例:

布尔型 BGMisOn;媒体播放器背景音乐;

doStart() { ... ... if(BGMisOn)BGM.start() ... ... }

于 2013-03-09T11:10:04.567 回答
0

如果声音很短,添加循环

mp.setLooping(true);

另外,您在标题中提到了onDraw()方法,但是您给出的命令来自onCreate()

于 2013-03-09T10:11:41.993 回答
0

您可以使用 setLooping(true) http://developer.android.com/reference/android/media/MediaPlayer.html#setLooping(boolean)

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Shapes shapes = new Shapes(this);
        setContentView(shapes);
        MediaPlayer mp = MediaPlayer.create(this, R.raw.back);
        try {
            mp.prepare();
        } catch (IllegalStateException e) {}
          catch (IOException e) {}
        mp.setLooping(true);
        mp.start();
    }
于 2013-03-09T10:15:16.260 回答
0

您的 MediaPlayer 对象 ( mp) 在以下情况下播放一次mp.start()

如果您连续播放,请添加setLooping(true).

MediaPlayer mp = MediaPlayer.create(this, R.raw.back);
try {
    mp.prepare();
    mp.setLooping(true);
    mp.start();
} catch (IllegalStateException e) { 
    e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}
于 2013-03-09T10:20:36.490 回答