java media.player_关于Java:如何正确发布Android 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();
}
總結
以上是生活随笔為你收集整理的java media.player_关于Java:如何正确发布Android MediaPlayer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单核工作法16:循序渐进(下)
- 下一篇: Python学习笔记:类