微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MediaPlayer.isplaying()方法中的java.lang.IllegalStateException

public static MediaPlayer mp=null;
public static void playGeneric(int name,final ImageButton button,final ImageButton pervIoUs,Context context) {
    button.setEnabled(false);
button.setClickable(false);
pervIoUs.setEnabled(false);
pervIoUs.setClickable(false);
    try{
        if(mp != null && mp.isPlaying())
        {
            mp.stop();
            mp.release();
            mp = null;
           mp=MediaPlayer.create(context,name);
           mp.start();
        }
        else
        {
            mp = MediaPlayer.create(context,name);
            mp.setonPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer arg0) {
                    //mp.prepare();
                    mp.start();

                }

            });
        mp.setonCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                // Todo Auto-generated method stub
                mp.release();
                System.out.println("Object released");
                button.setEnabled(true);
                button.setClickable(true);
                pervIoUs.setEnabled(true);
                pervIoUs.setClickable(true);
            }
        });
        }



} catch (IllegalStateException e) {
    // Todo Auto-generated catch block
    e.printstacktrace();
}catch (SecurityException e) {
    // Todo Auto-generated catch block
    e.printstacktrace();
    e.getMessage();
} catch (NullPointerException e) {
    // Todo Auto-generated catch block
    e.printstacktrace();
    e.getMessage();
}

}

give me java.lang.IllegalStateException on mp.isplaying() method,i am new in android please help me to solve out.
i want to stop music if its playing and play another song one after another.if anyone have idea let me kNow thanks in andvance.

logcat :

10-14 15:12:05.474: E/MediaPlayer(15411): prepareAsync called in state 8
10-14 15:12:05.474: W/System.err(15411): java.lang.IllegalStateException
10-14 15:12:05.474: W/System.err(15411):    at android.media.MediaPlayer.prepare(Native Method)
10-14 15:12:05.474: W/System.err(15411):    at com.rogerscenter.LearnReadWriteSpell.Utility.Music.playGeneric(Music.java:93)
10-14 15:12:05.474: W/System.err(15411):    at com.rogerscenter.LearnReadWriteSpell.LetterCategory.Letter_Lesson1_activity.onCreate(Letter_Lesson1_activity.java:140)
10-14 15:12:05.474: W/System.err(15411):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-14 15:12:05.474: W/System.err(15411):    at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1586)
10-14 15:12:05.474: W/System.err(15411):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
10-14 15:12:05.474: W/System.err(15411):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-14 15:12:05.474: W/System.err(15411):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
10-14 15:12:05.484: W/System.err(15411):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-14 15:12:05.484: W/System.err(15411):    at android.os.Looper.loop(Looper.java:123)
10-14 15:12:05.484: W/System.err(15411):    at android.app.ActivityThread.main(ActivityThread.java:3647)
10-14 15:12:05.484: W/System.err(15411):    at java.lang.reflect.Method.invokeNative(Native Method)
10-14 15:12:05.484: W/System.err(15411):    at java.lang.reflect.Method.invoke(Method.java:507)
10-14 15:12:05.484: W/System.err(15411):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-14 15:12:05.484: W/System.err(15411):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-14 15:12:05.484: W/System.err(15411):    at dalvik.system.NativeStart.main(Native Method)

解决方法

由于android文档建议,如果mp是如果没有被初始化,那么java.lang.IllegalStateException将被抛出,所以你必须首先启动,或者你必须写

查看文档http://developer.android.com/reference/android/media/MediaPlayer.html#isPlaying()

尝试这样

mp=MediaPlayer.create(context,name);

     try {

    if (mp.isPlaying()) {
        mp.stop();
        mp.release();
        mp=MediaPlayer.create(context,name);
    }



    mp.start();
} catch (Exception e) {
}

原文地址:https://www.jb51.cc/java/123400.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐