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

Android 按下后退按钮时停止媒体播放器MP3,android,android-mediaplayer,mp3,media,Android,Android Mediaplayer,Mp3,Media,我的代码工作正常,除非你按下后退按钮 当我按下“停止”按钮时,名为“测试”的MP3文件停止播放,音频检查屏幕返回到菜单屏幕。完美的在我在手机上测试代码之前,一切都很好。当我使用Android手机上的后退按钮(而不是应用程序上的停止按钮)退出时,媒体播放器会继续播放。我尝试了所有的代码并查看了所有相关的问题。我使用onStop on pause finish keyevent.KEYCODE_实现了代码,以此类推,什么都不起作用。我被难住了 这是我的密码。如何通过按下与此代码相关的Android后

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

当我按下“停止”按钮时,名为“测试”的MP3文件停止播放,音频检查屏幕返回到菜单屏幕。完美的在我在手机上测试代码之前,一切都很好。当我使用Android手机上的后退按钮(而不是应用程序上的停止按钮)退出时,媒体播放器会继续播放。我尝试了所有的代码并查看了所有相关的问题。我使用onStop on pause finish keyevent.KEYCODE_实现了代码,以此类推,什么都不起作用。我被难住了

这是我的密码。如何通过按下与此代码相关的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);


        }




    });


        }
    }
我使用onStop on pause finish keyevent.KEYCODE\u BACK实现了代码 诸如此类,什么都不起作用

无需在
onPause
onStop
中执行此操作,只需覆盖后退按钮并停止媒体播放器并完成活动

@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);
}
我使用onStop on pause finish keyevent.KEYCODE\u BACK实现了代码 诸如此类,什么都不起作用

无需在
onPause
onStop
中执行此操作,只需覆盖后退按钮并停止媒体播放器并完成活动

@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);
}
把这个方法,

            @Override
    protected void onDestroy() {

        super.onDestroy();

        buttonSound.stop();
        buttonSound.reset();
        buttonSound.release();
        buttonSound = null;
    }
希望它能起作用。

把这个方法

            @Override
    protected void onDestroy() {

        super.onDestroy();

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

希望它能起作用。

我睡不着。整晚都在编码和研究,直到我把它投入工作

成功了!但我必须在运行时根据详细的错误消息找出下一步。我必须拿出“final and 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);
//它是有效的
谢谢你,我睡不着。整晚都在编码和研究,直到我把它投入工作

成功了!但我必须在运行时根据详细的错误消息找出下一步。我必须拿出“final and 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);
//它是有效的
谢谢

现在它可以工作了。。。问题就在这里

注意按钮sound.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

现在它工作了。。。问题就在这里

注意按钮sound.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

邹祖。。谢谢,但我两种代码都试过了。我以前找到过。也许是我插入代码的地方,但我会出错。。。我正在使用Eclipse构建id:20120920-0800的版本:Juno Service Release 1。。。。编程Android 4.2..我应该把代码放在哪里,这样它就可以工作,而不会让Eclipse给我错误?我以前试过各种各样的方法。也许我遗漏了什么错误2。。。语法错误,插入“EnumBody”以完成BlockStatement在另一个区域插入代码我收到此错误。。。类型为new View.OnClickListener(){}的方法onBackPressed()必须重写或实现超类型方法我甚至尝试了>>>@override public boolean onKeyDown(int-keyCode,KeyEvent-event){//TODO自动生成的方法存根if(keyCode==KeyEvent.keyCode\u-BACK){if(buttonSound!=null&&buttonSound.isPlaying())buttonSound.stop();finish();return true;}否则返回super.onKeyDown(keyCode,event);}//不好,因为buttonSound无法解析。我做错了什么?邹祖..谢谢,但我尝试了两个代码。我以前找到过它们。可能是在插入代码的地方,但我遇到了错误…我使用的是Eclipse Build id:20120920-0800的版本:Juno Service Release 1…编程Android 4.2..我应该将这些代码放在哪里,以便它可以运行rk和Eclipse没有给我错误?我以前尝试过所有的变体。可能我遗漏了什么。错误2…语法错误,插入“EnumBody”来完成BlockStatement在另一个区域插入代码我得到了这个错误…类型为new View.OnClickListener()的方法onBackPressed(){}必须重写或实现超类型方法我甚至尝试了>>>@override public boolean onKeyDown(int keyCode,KeyEvent event){//TODO自动生成的方法存根if(keyCode==KeyEvent.keyCode_BACK){if(buttonSound!=null&&buttonSound.isPlaying())buttonSound.stop();finish();返回true;}否则返回super.onKeyDown(keyCode,event);}//不好,因为buttonSound无法解决。我做错了什么?Mavani,谢谢你,但邹祖的评论确实有效。当我使用后退按钮停止线程时,我可能会使用你的建议。它只起了一次作用,现在停止了作用。我将它下载到手机上,以防它是Eclipse/Android仿真器问题。它现在不起作用。…我将尝试onDestroy。Mavani,谢谢你,但邹祖的评论确实有效。当我使用后退按钮停止线程时,我可能会使用你的建议。它只工作过一次,现在停止工作。我将它下载到手机上,以防它是Eclipse/Android模拟器问题。它现在不工作…我将尝试onDestroy。