在onPause和onResume之后,MediaPlayer不起作用

时间:2011-02-22 20:12:46

标签: android android-activity media-player android-2.2-froyo

我正在开发Android 2.2应用程序。

我有以下活动:

public class StartActivity extends Activity {

    private MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.startpage);
    }

    @Override
    protected void onResume() {
        super.onResume();
        ImageView ship = (ImageView)findViewById(R.id.greekShip);

        ship.startAnimation(AnimationUtils.loadAnimation(this, R.anim.translate_right));

        if (mp == null) {
            mp = MediaPlayer.create(getApplicationContext(), R.raw.oceanwave);
        }
        else {
            if (mp.isPlaying())
                mp.stop();
            mp.reset();
            try {
                mp.prepare();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        mp.start();
    }

    @Override
    protected void onPause() {
        super.onPause();

        if (mp != null) {
            if (mp.isPlaying())
                mp.stop();
        }
    }
}

如果我按下电话上的主页按钮,声音会停止。但是,如果我重新启动应用程序,媒体播放器就会启动,但我听不到任何声音。

你知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:0)

mp.prepare()仅在else代码中。根据您的代码,我会在活动停止时释放mp以释放资源而不使用,然后您可以在onResume()

中创建一个新的