按下后退按钮时停止媒体播放器MP3

时间:2013-06-20 20:08:16

标签: android android-mediaplayer mp3 media

除非按下后退按钮,否则我的代码工作正常。

当我按下停止按钮并且音频检查屏幕返回到我的菜单屏幕时,名为“测试”的MP3文件停止播放。完美...一切正常,直到我在手机上测试代码。当我使用Android手机上的手机后退按钮(不是我的应用程序上的停止按钮)退出时,媒体播放器会继续播放。我尝试了所有代码并查看了每个相关问题。我使用onStop实现代码onPause完成keyevent.KEYCODE_BACK等等,没有任何效果。我很难过。

这是我的代码。如何通过按相对于此代码的Android后退按钮来停止此MP3?

    public class Audio_Check extends Activity{

/* (non-Javadoc)
 * @see android.app.Activity#onCreate(android.os.Bundle)
 */

    import android.app.Activity;
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.widget.Button;

    public class Audio_Check extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.audio_check);

    final MediaPlayer buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);

    Button stbutton = (Button) findViewById(R.id.startbutton);

    stbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            buttonSound.start();



        }
    });
    Button spbutton = (Button) findViewById(R.id.stopbutton);

    spbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            buttonSound.stop();
            buttonSound.release();
            Intent openE1 = new Intent("com.myapp.mysite.MENU");
            startActivity(openE1);


        }




    });


        }
    }

4 个答案:

答案 0 :(得分:1)

把这个方法,

            @Override
    protected void onDestroy() {

        super.onDestroy();

        buttonSound.stop();
        buttonSound.reset();
        buttonSound.release();
        buttonSound = null;
    }

希望它能奏效。

答案 1 :(得分:0)

  

我使用onStop实现了代码onPause完成keyevent.KEYCODE_BACK   等等,没有任何作用

无需在onPauseonStop中实现此功能,只需覆盖后退按钮并停止媒体播放器即可完成活动。

@Override
public void onBackPressed(){
    if(buttonSound != null && buttonSound.isPlaying())
        buttonSound.stop();
    finish();
}

如果您使用的API低于5:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if(buttonSound != null && buttonSound.isPlaying())
            buttonSound.stop();
        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

答案 2 :(得分:0)

我无法入睡。保持编码和研究,直到我开始工作。

它工作了!但是我必须在运行时基于详细的错误消息找出下一步。我不得不拿出“final和MediaPlayer”,否则当我通过模拟器运行它时,我会从Eclipse中强制关闭。编译代码时没有出现错误。

MediaPlayer buttonSound ; // declared above first @Override

 // code after that

//从此

更改了代码
final MediaPlayer buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);

//到这个

buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);

//它有效 谢谢

答案 3 :(得分:0)

现在它的工作原理......这是问题

注意buttonSound.start();被放在原始代码中?它高于}); 当我把它放在})之下;有效。显然它之前受到了保护,但现在工作正常。

buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);

    Button stbutton = (Button) findViewById(R.id.stbutton);

    stbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


        }



    });
    buttonSound.start();
// onDestroy goes right here