android - onDestroy 媒体播放器释放

标签 android media-player ondestroy

我希望当我点击手机上的后退按钮时关闭当前 Activity 并返回菜单并停止媒体播放器
但我收到错误消息:不幸的是武器已停止!单击后退按钮
那么如何解决呢?

public class pushke extends Activity {

    private SeekBar volumeSeekbar = null;
    private AudioManager audioManager = null; 
    MediaPlayer mp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        setContentView(R.layout.guns);
        initControls();

        final MediaPlayer mp=MediaPlayer.create(this, R.raw.uzi);
        ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (mp.isPlaying()){
                    mp.pause();
                    mp.seekTo(0);
                }
                else{
                    mp.start();
                }
            }
        });
    }

    private void initControls()
    {
        try
        {
            volumeSeekbar = (SeekBar)findViewById(R.id.seekBar1);
            audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            volumeSeekbar.setMax(audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC));
            volumeSeekbar.setProgress(audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC));   


            volumeSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
            {
                @Override
                public void onStopTrackingTouch(SeekBar arg0) 
                { }

                @Override
                public void onStartTrackingTouch(SeekBar arg0) 
                { }

                @Override
                public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) 
                {
                    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                            progress, 0);
                }
            });
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        mp.release();
    }
}

日志:

enter image description here

最佳答案

1) I want when I click on back button on the phone to close current activity and get back to menu and stop Media Player

1) 菜单是什么意思?我的意思是应用程序菜单或设备菜单或通知栏等。

2) But I get error: Unfortunately Weapons has stopped! upon clicking on back button So how to fix that?

2)

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        if(mp!=null){
             mp.stop();
             mp.release();
             mp = null;
        }
    }

编辑:

private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
    setContentView(R.layout.guns);
    initControls();

    mp=MediaPlayer.create(this, R.raw.uzi);
    ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (mp.isPlaying()){
                mp.pause();
                mp.seekTo(0);
            }
            else{
                mp.start();
            }
        }
    });
}

关于android - onDestroy 媒体播放器释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882028/

相关文章:

java - 监控文件夹 Eclipse

android - setLayerType 替代Android 2.3.3?

java - Android:NTLM 身份验证、ksoap 和持久连接

android - onDestroy 被调用

android - HTML 格式在 android 上看起来不错,但在 iphone 上却不行

android - 禁用视频中的声音

java - 如何让 MediaPlayer 的声音继续播放?不循环

android - 仅当您显式调用 finish() 时才会调用 onDestroy 吗?或者有什么异常(exception)吗?

Activity 崩溃后android停止后台服务

java - 在 AppWidgetProvider 中使用 MediaPlayer?