热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javamedia.player_关于Java:如何正确发布AndroidMediaPlayer

我试图将一个按钮添加到我的android应用中,点击该按钮时会播放MP3。我已经使它工作了,但是没有办法释放mediaPlayer对象-因此࿰

我试图将一个按钮添加到我的android应用中,点击该按钮时会播放MP3。

我已经使它工作了,但是没有办法释放mediaPlayer对象-因此,即使我离开活动后,它仍然可以播放。如果我在我的react()方法(按下按钮时调用什么)之外初始化MediaPlayer对象,则它将导致应用程序在活动打开时强制关闭。但是,如果我在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;

}

}

我认为它的作用是相对自我解释的。调用时,它会显示一些文本以及一个按钮,轻按该按钮即可开始播放录音。当某人按下"后退"按钮时,它应返回到上一个活动并停止录制。

感谢您的帮助!

如果您回答了另一个问题,并且想提出一个新问题,则应该打开一个新问题,而不仅仅是编辑该问题。

好吧,我会不想问太多问题。

这是新问题。 stackoverflow.com/questions/15046888/如果您想回答这个问题很棒,谢谢。 或可能有人,或者我可能自己想出答案。

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

MediaPlayer mediaPlayer;

public void react(View view) {

mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);

mediaPlayer.start();

}

protected void onStop(){

mediaPlayer.release();

mediaPlayer = null;

}

另外,我建议您阅读Java中的变量范围。

啊,非常感谢! 那真是一个愚蠢的错误。 我意识到范围是我遇到的麻烦,但是我的大脑无法正常工作,因此我无法考虑如何解决它。

所以我复制了您的示例,现在它运行正常,但是当我按下启动声音的按钮后再按"后退"按钮时,应用程序强制关闭。 有什么想法吗?

它有很多潜在的问题。 我建议您提出另一个问题,解释您在所有生命周期方法(创建,恢复,暂停,停止等)中的工作。 另外,请说明您要执行的操作。

这对我很好。

public class MainActivity extends AppCompatActivity {

MediaPlayer mediaPlayer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mediaPlayer = MediaPlayer.create(this, R.raw.beep_warning);

final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);

checkBox.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (checkBox.isChecked()) {

mediaPlayer.start();

mediaPlayer.setLooping(true);

}

else{

mediaPlayer.pause();

}

}

});

}

@Override

protected void onStop() {

super.onStop();

mediaPlayer.release();

}



推荐阅读
author-avatar
鄙人fisher_779
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有