Java 在反按时停止音频播放

Java 在反按时停止音频播放,java,android,Java,Android,我有一个活动,当我点击播放按钮,它播放mp3声音。当我点击后退时,音频仍然在后台播放,并且还可以与其他音频一起播放,这很烦人。我曾尝试在这里实现其他方法,但没有效果 代码: public class InstructionsManualActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

我有一个活动,当我点击播放按钮,它播放mp3声音。当我点击后退时,音频仍然在后台播放,并且还可以与其他音频一起播放,这很烦人。我曾尝试在这里实现其他方法,但没有效果

代码:

public class InstructionsManualActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_instructions_manual);
    Button one = (Button) this.findViewById(R.id.instructionsManual_but);
    final MediaPlayer mp = MediaPlayer.create(this, R.raw.instructions_manual);
    one.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            mp.start();
        }
    });
}

}
我已尝试过此代码,但应用程序在按下后崩溃

@Override
public void onBackPressed() {
    super.onBackPressed();
    if (mp.isPlaying()) {
        mp.stop(); // or mp.pause();
        mp.release();

您的代码很好,只需在停止前检查是否存在空播放器

    super.onBackPressed();
if (mp!=null && mp.isPlaying()) {
    mp.stop(); // or mp.pause();
    mp.release();

您的代码很好,只需在停止前检查是否存在空播放器

    super.onBackPressed();
if (mp!=null && mp.isPlaying()) {
    mp.stop(); // or mp.pause();
    mp.release();

首先,全局声明MediaPlayer对象

  MediaPlayer mp = null;  //Declaring globally so can access anywhere in activity.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_instructions_manual);
        Button one = (Button) this.findViewById(R.id.instructionsManual_but);
        mp = MediaPlayer.create(this, R.raw.instructions_manual);
        one.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mp.start();
            }
        });
    }
当您在任何活动中按下后退按钮时
onBackPressed()
将被调用,在那里您可以停止播放媒体播放器


首先,全局声明MediaPlayer对象

  MediaPlayer mp = null;  //Declaring globally so can access anywhere in activity.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_instructions_manual);
        Button one = (Button) this.findViewById(R.id.instructionsManual_but);
        mp = MediaPlayer.create(this, R.raw.instructions_manual);
        one.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mp.start();
            }
        });
    }
当您在任何活动中按下后退按钮时
onBackPressed()
将被调用,在那里您可以停止播放媒体播放器


您需要检查mediaplayer实例是否不为null,然后执行代码,检查下面的回答,如果您仍然面临错误,请告诉我。您正在本地onCreate()中声明mediaplayer,可能是您试图暂停或释放尚未创建的mediaplayer。只需在全局范围内声明您的MediaPlayer并在onCreate()中创建它就好了@GhulamMinulQuadir,我已经添加了一个带有附加条件的答案来处理所有这些错误案例。我已经意识到,但无法通过将它移到onCreate()之外来让它工作。你能帮我做这件事吗?从下面的答案中提取代码,我已经添加了代码,让我知道你面临的错误。如果需要检查mediaplayer实例是否为null,然后执行你的代码,检查我下面的答案,让我知道你是否仍然面临错误。你在本地onCreate()中声明mediaplayer,可能是您试图暂停或释放尚未创建的MediaPlayer。只需在全局范围内声明您的MediaPlayer并在onCreate()中创建它就好了@GhulamMinulQuadir,我已经添加了一个带有附加条件的答案来处理所有这些错误案例。我已经意识到,但无法通过将它移到onCreate()之外来让它工作。你能帮我做这件事吗?从下面的答案中提取代码,我已经添加了代码,并让我知道你面临的错误是什么,如果任何这项工作只有在我设置MediaPlayer mp=null时才起作用;谢谢你,伙计@DavidG欢迎你的朋友,请随意接受,upvoteThis仅在我设置MediaPlayer mp=null时有效;谢谢你,伙计@大卫,欢迎你的朋友,欢迎接受并投票