0

您好,我是 android dev 的新手,我正在使用 Eclipse,并且我一直在开发一些音板。我的问题是这样的:

public class BernardsActivity extends Activity {

    MediaPlayer eileanBeag;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bernards_layout);

        Button eileanBeagButton = (Button) findViewById(R.id.ButtonB1);

        eileanBeagButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                eileanBeag = MediaPlayer.create(getApplicationContext(), R.raw.eilean_beag);
                eileanBeag.start();
            }    
      });  

    ***public void onPause() {
        eileanBeag.release();                   
    }***    
}

该应用程序运行良好,所有音频都播放良好,但是当我使用后退按钮离开应用程序时,它告诉我该过程已意外停止,我必须强制退出。

当我在 onCreate 方法之外定义 MediaPlayer 时,该方法工作正常,但我希望使用许多声音并减少加载时间,我只在按下按钮后才定义它。

我曾尝试使用 OnCompleteListener,它似乎确实有效,但它会提前切断我的声音片段。

所以对此的任何帮助将不胜感激。

谢谢。

4

3 回答 3

3

唯一看起来有问题的是,在调用之前 eileanBeag.release();你应该调用eileanBeag.stop();. 播放时不能直接释放 Player。你也失踪了super.onPause();

于 2011-10-05T13:09:48.427 回答
2

它应该是这样的:

public void onPause() {
    super.onPause();
    eileanBeag.pause();
}

protected void onDestroy() {
    super.onDestroy();
    if(eileanBeag != null) {
        eileanBeag.stop();  
        eileanBeag.release();
    }
}
于 2011-10-05T13:11:03.490 回答
0

您需要作为方法super.onPause()中的第一条语句调用onPause

于 2011-10-05T13:08:35.207 回答