1

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

当我按下停止按钮并且音频检查屏幕返回到我的菜单屏幕时,名为“测试”的 MP3 文件停止播放。完美......一切都很好,直到我在手机上测试代码。当我使用 Android 手机上的手机后退按钮(不是我的应用程序上的停止按钮)退出时,媒体播放器会继续播放。我尝试了所有代码并查看了每个相关问题。我使用 onStop onPause finish 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

4 回答 4

1

把这个方法,

            @Override
    protected void onDestroy() {

        super.onDestroy();

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

希望它会奏效。

于 2013-06-21T09:26:47.213 回答
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
于 2013-06-23T18:43:55.167 回答
0

我无法入睡。整夜不停地编码和研究,直到我开始工作。

有效!但是我必须在运行时根据详细的错误消息找出下一步。我必须取出“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);

// 它可以工作 谢谢

于 2013-06-21T10:18:42.003 回答
0

我使用 onStop onPause finish keyevent.KEYCODE_BACK 等实现了代码,没有任何效果

无需在onPauseor中实现此功能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);
}
于 2013-06-20T20:25:15.240 回答