如何解决java.lang.IllegalStateException
?
当移动到另一个 Activity 时会发生这种情况
这个日志:
05-24 01:48:07.312 25905-25905/andie16n.abc_ind_english E/MediaPlayer: prepareAsync called in state 8, mPlayer(0x9a318160)
此 java 代码:
package andie16n.abc_ind_english;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
/**
* Created by andie on 11/05/2017.
*/
public class Abc_play_all extends Activity implements MediaPlayer.OnCompletionListener {
private ImageButton tombol_play;
private ImageButton tombol_play_a;
private ImageButton tombol_play_b;
private ImageButton tombol_play_c;
private ImageButton tombol_play_d;
private ImageButton tombol_play_e;
private ImageButton tombol_play_f;
private ImageButton tombol_play_g;
private ImageButton tombol_play_h;
private ImageButton tombol_play_i;
private ImageButton tombol_play_j;
private ImageButton tombol_play_k;
private ImageButton tombol_stop;
private MediaPlayer MPlayer;
private MediaPlayer MPlayer_a;
private MediaPlayer MPlayer_b;
private MediaPlayer MPlayer_c;
private MediaPlayer MPlayer_d;
private MediaPlayer MPlayer_e;
private MediaPlayer MPlayer_f;
private MediaPlayer MPlayer_g;
private MediaPlayer MPlayer_h;
private MediaPlayer MPlayer_i;
private MediaPlayer MPlayer_j;
private MediaPlayer MPlayer_k;
private MediaPlayer MPlayer_back;
private ImageButton back_abc_home_play_all;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.abc_play_all);
tombol_play_a = (ImageButton) findViewById(R.id.Btn_a_play);
tombol_play_b = (ImageButton) findViewById(R.id.Btn_b_play);
tombol_play_c = (ImageButton) findViewById(R.id.Btn_c_play);
tombol_play_d = (ImageButton) findViewById(R.id.Btn_d_play);
tombol_play_e = (ImageButton) findViewById(R.id.Btn_e_play);
tombol_play_f = (ImageButton) findViewById(R.id.Btn_f_play);
tombol_play_g = (ImageButton) findViewById(R.id.Btn_g_play);
tombol_play_h = (ImageButton) findViewById(R.id.Btn_h_play);
tombol_play_i = (ImageButton) findViewById(R.id.Btn_i_play);
tombol_play_j = (ImageButton) findViewById(R.id.Btn_j_play);
tombol_play_k = (ImageButton) findViewById(R.id.Btn_k_play);
tombol_play = (ImageButton) findViewById(R.id.Btn_play_all_abc);
tombol_stop = (ImageButton) findViewById(R.id.Btn_stop_all_abc);
tombol_stop.setEnabled(false);
aktif();
tombol_play_a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_a();
}
});
tombol_play_b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_b();
}
});
tombol_play_c.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_c();
}
});
tombol_play_d.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_d();
}
});
tombol_play_e.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_e();
}
});
tombol_play_f.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_f();
}
});
tombol_play_g.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_g();
}
});
tombol_play_h.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_h();
}
});
tombol_play_i.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_i();
}
});
tombol_play_j.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_j();
}
});
tombol_play_k.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_k();
}
});
tombol_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
play_abc();
}
});
tombol_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MPlayer.stop();
try {
MPlayer.prepare();
MPlayer.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
}
});
}
@Override
public void onResume() {
super.onResume();
stop_back();
play_back();
}
private void TombolIsEnabled() {
tombol_play.setEnabled(true);
tombol_play_a.setEnabled(true);
tombol_play_b.setEnabled(true);
tombol_play_c.setEnabled(true);
tombol_play_d.setEnabled(true);
tombol_play_e.setEnabled(true);
tombol_play_f.setEnabled(true);
tombol_play_g.setEnabled(true);
tombol_play_h.setEnabled(true);
tombol_play_i.setEnabled(true);
tombol_play_j.setEnabled(true);
tombol_play_k.setEnabled(true);
}
private void play_a() {
MPlayer_a.stop();
try {
MPlayer_a.prepare();
MPlayer_a.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_a.start();
tombol_play_a.setImageResource(R.drawable.a_menu_2);
tombol_play_a.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_b() {
MPlayer_b.stop();
try {
MPlayer_b.prepare();
MPlayer_b.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_b.start();
tombol_play_b.setImageResource(R.drawable.b_menu_2);
tombol_play_b.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_c() {
MPlayer_c.stop();
try {
MPlayer_c.prepare();
MPlayer_c.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_c.start();
tombol_play_c.setImageResource(R.drawable.c_menu_2);
tombol_play_c.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_d() {
MPlayer_d.stop();
try {
MPlayer_d.prepare();
MPlayer_d.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_d.start();
tombol_play_d.setImageResource(R.drawable.d_menu_2);
tombol_play_d.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_e() {
MPlayer_e.stop();
try {
MPlayer_e.prepare();
MPlayer_e.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_e.start();
tombol_play_e.setImageResource(R.drawable.e_menu_2);
tombol_play_e.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_f() {
MPlayer_f.stop();
try {
MPlayer_f.prepare();
MPlayer_f.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_f.start();
tombol_play_f.setImageResource(R.drawable.f_menu_2);
tombol_play_f.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_g() {
MPlayer_g.stop();
try {
MPlayer_g.prepare();
MPlayer_g.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_g.start();
tombol_play_g.setImageResource(R.drawable.g_menu_2);
tombol_play_g.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_h() {
MPlayer_h.stop();
try {
MPlayer_h.prepare();
MPlayer_h.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_h.start();
tombol_play_h.setImageResource(R.drawable.h_menu_2);
tombol_play_h.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_i() {
MPlayer_i.stop();
try {
MPlayer_i.prepare();
MPlayer_i.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_i.start();
tombol_play_i.setImageResource(R.drawable.i_menu_2);
tombol_play_i.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_j() {
MPlayer_j.stop();
try {
MPlayer_j.prepare();
MPlayer_j.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_j.start();
tombol_play_j.setImageResource(R.drawable.j_menu_2);
tombol_play_j.setEnabled(false);
tombol_stop.setEnabled(true);
}
private void play_k() {
MPlayer_k.stop();
try {
MPlayer_k.prepare();
MPlayer_k.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer_k.start();
tombol_play_k.setImageResource(R.drawable.k_menu_2);
tombol_play_k.setEnabled(false);
tombol_stop.setEnabled(true);
}
@Override
public void onDestroy() {
super.onDestroy();
if (tombol_stop.isEnabled()) {
stop_all();
}
}
@Override
public void onCompletion(MediaPlayer MP) {
stop_all();
}
private void play_abc() {
MPlayer_a.stop();
MPlayer_b.stop();
MPlayer_c.stop();
MPlayer_d.stop();
MPlayer_e.stop();
MPlayer_f.stop();
MPlayer_g.stop();
MPlayer_h.stop();
MPlayer_i.stop();
MPlayer_j.stop();
MPlayer_k.stop();
MPlayer.stop();
try {
MPlayer.prepare();
MPlayer.seekTo(0);
} catch (Throwable t) {
error_(t);
}
stop_all();
MPlayer.setLooping(true);
MPlayer.start();
tombol_play.setEnabled(false);
tombol_stop.setEnabled(true);
tombol_play_a.setEnabled(false);
tombol_play_b.setEnabled(false);
tombol_play_c.setEnabled(false);
tombol_play_d.setEnabled(false);
tombol_play_e.setEnabled(false);
tombol_play_f.setEnabled(false);
tombol_play_g.setEnabled(false);
tombol_play_h.setEnabled(false);
tombol_play_i.setEnabled(false);
tombol_play_j.setEnabled(false);
tombol_play_k.setEnabled(false);
}
private void stop_all() {
tombol_stop.setEnabled(false);
tombol_play_a.setImageResource(R.drawable.a_menu);
tombol_play_b.setImageResource(R.drawable.b_menu);
tombol_play_c.setImageResource(R.drawable.c_menu);
tombol_play_d.setImageResource(R.drawable.d_menu);
tombol_play_e.setImageResource(R.drawable.e_menu);
tombol_play_f.setImageResource(R.drawable.f_menu);
tombol_play_g.setImageResource(R.drawable.g_menu);
tombol_play_h.setImageResource(R.drawable.h_menu);
tombol_play_i.setImageResource(R.drawable.i_menu);
tombol_play_j.setImageResource(R.drawable.j_menu);
tombol_play_k.setImageResource(R.drawable.k_menu);
try {
TombolIsEnabled();
} catch (Throwable t) {
error_(t);
}
}
private void aktif() {
try {
MPlayer = MediaPlayer.create(this, R.raw.abc);
MPlayer.setOnCompletionListener(this);
MPlayer_a = MediaPlayer.create(this, R.raw.a);
MPlayer_a.setOnCompletionListener(this);
MPlayer_b = MediaPlayer.create(this, R.raw.b);
MPlayer_b.setOnCompletionListener(this);
MPlayer_c = MediaPlayer.create(this, R.raw.c);
MPlayer_c.setOnCompletionListener(this);
MPlayer_d = MediaPlayer.create(this, R.raw.d);
MPlayer_d.setOnCompletionListener(this);
MPlayer_e = MediaPlayer.create(this, R.raw.e);
MPlayer_e.setOnCompletionListener(this);
MPlayer_f = MediaPlayer.create(this, R.raw.f);
MPlayer_f.setOnCompletionListener(this);
MPlayer_g = MediaPlayer.create(this, R.raw.g);
MPlayer_g.setOnCompletionListener(this);
MPlayer_h = MediaPlayer.create(this, R.raw.h);
MPlayer_h.setOnCompletionListener(this);
MPlayer_i = MediaPlayer.create(this, R.raw.i);
MPlayer_i.setOnCompletionListener(this);
MPlayer_j = MediaPlayer.create(this, R.raw.j);
MPlayer_j.setOnCompletionListener(this);
MPlayer_k = MediaPlayer.create(this, R.raw.k);
MPlayer_k.setOnCompletionListener(this);
MPlayer_back = MediaPlayer.create(this, R.raw.backsound);
} catch (Throwable t) {
error_(t);
}
TombolIsEnabled();
}
private void play_back() {
if (MPlayer_back != null && !MPlayer_back.isPlaying()) {
MPlayer_back.setLooping(true);
MPlayer_back.start();
} else {
MPlayer_back.setLooping(true);
}
}
private void stop_for_back() {
MPlayer_back.stop();
try {
MPlayer_back.prepare();
MPlayer_back.seekTo(0);
} catch (Throwable t) {
error_(t);
}
}
private void stop_back() {
if (MPlayer_back.isPlaying()) {
stop_for_back();
MPlayer_back.reset();
}
}
private void error_(Throwable t) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Failed!").setMessage(t.toString())
.setPositiveButton("OK", null).show();
}
public void btn_back_all_abc_cliked(View v) {
stop_for_back();
Intent panggil_class = new Intent(this, Abc.class);
startActivity(panggil_class);
MPlayer_a.reset();
MPlayer_b.reset();
MPlayer_c.reset();
MPlayer_d.reset();
MPlayer_e.reset();
MPlayer_f.reset();
MPlayer_g.reset();
MPlayer_h.reset();
MPlayer_i.reset();
MPlayer_j.reset();
MPlayer_k.reset();
}
@Override
public void onBackPressed() {
if (MPlayer.isPlaying() || MPlayer_back.isPlaying()) {
stop_back();
MPlayer.reset();
}
finish();
}
}
最佳答案
原始文件无需准备播放器
var mediaPlayer: 媒体播放器? = MediaPlayer.create(上下文,R.raw.sound_file_1)
mediaPlayer?.start()//无需调用 prepare(); create() 为你做这件事
关于android - 媒体播放器 : prepareAsync called in state 8, mPlayer(0x9a318160),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44148861/