android - 媒体播放器 : prepareAsync called in state 8, mPlayer(0x9a318160)

标签 android

如何解决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/

相关文章:

android - 从使用自定义程序对话框的异步任务更新 TextView

android - 哪些 Android 设备不支持 draw_texture?

android - 在距底部 30% 的位置创建相对布局

java - Android OpenGLES 骨骼动画问题

java - 断点没有被击中?

Android inter-Activity signaling(新手问题)

android - 有没有办法将参数传递给应用程序的市场安装程序

android - 在 WebView 中托管的 HTML 页面中捕获 Javascript onclick 事件

android - 接收事件,如果文件已下载/添加到下载文件夹

android - 可展开的 ListView onGroupExpanded 和 onGroupCollapsed