gpt4 book ai didi

java - 如何正确释放Android MediaPlayer

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:05 24 4
gpt4 key购买 nike

我正在尝试向我的 Android 应用程序添加一个按钮,当点击该按钮时它会播放 MP3。我已经让它工作了,但是没有办法释放 mediaPlayer 对象 - 因此即使在我离开 Activity 后它也会继续播放。如果我在我的 react() 方法之外初始化 MediaPlayer 对象(按下按钮时调用的方法),它会导致应用程序在 Activity 打开时强制关闭。但是如果我在 react() 方法中初始化 MediaPlayer,那么我就不能在 onQuit() 方法中使用 mplayer.release。我在这里没有看到什么?

    public void react(View view) {
MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}

由于明显的原因而不起作用

MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
public void react(View view) {
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}

使其强制关闭。

更新:这是整个java类。

public class ToBeOrNot extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_be_or_not);

}
MediaPlayer mediaPlayer;

public void react(View view) {
mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.activity_to_be_or_not, menu);
// Locate MenuItem with ShareActionProvider
return true;
}

}

我认为它的作用相对来说是不言自明的。调用时,它会显示一些文本和一个按钮,点击该按钮会开始播放录音。当有人点击后退按钮时,它应该返回到之前的 Activity 并停止录制。谢谢你帮助我!

最佳答案

您不能在所有方法之外初始化媒体播放器对象。如果这样做,它会尝试使用尚未创建的上下文。您需要将其声明为类变量(在方法之外),并在内部对其进行初始化:

MediaPlayer mediaPlayer;

public void react(View view) {
mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}

protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}

此外,我建议您继续阅读 variable scope in Java .

关于java - 如何正确释放Android MediaPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com