Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 音频文件引发非法状态异常_Android - Fatal编程技术网

Android 音频文件引发非法状态异常

Android 音频文件引发非法状态异常,android,Android,我在这里读过任何一个问题,但没有一个能解决我的问题。我正在尝试播放媒体文件,但它显示: E/MediaPlayer(554):在状态8下调用prepareAsync W/System.err(554): java.lang.IllegalStateException W/System.err(554):位于 android.media.MediaPlayer.prepare(本机方法) 我找不出问题出在哪里。。在模拟器上工作(抛出异常),在平板电脑上强制关闭。我看到一篇帖子说我不应该使用prep

我在这里读过任何一个问题,但没有一个能解决我的问题。我正在尝试播放媒体文件,但它显示:

E/MediaPlayer(554):在状态8下调用prepareAsync W/System.err(554): java.lang.IllegalStateException W/System.err(554):位于 android.media.MediaPlayer.prepare(本机方法)

我找不出问题出在哪里。。在模拟器上工作(抛出异常),在平板电脑上强制关闭。我看到一篇帖子说我不应该使用prepare方法,但若我不这样做,一切都不会改变

以下是代码和错误:

 MediaPlayer player = MediaPlayer.create(MyAct.this, R.raw.zboo);
        player.setLooping(false); 

        try {
            player.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        player.start();
E/MediaPlayer(522):在状态8中调用prepareAsync

W/System.err(554):java.lang.IllegalStateException

W/System.err(554):在android.media.MediaPlayer.prepare(本机) (方法)


提前感谢。

首先,您不需要调用prepare(),因为这是由create完成的。 来自Android文档

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you
其次,如果情况需要您进行准备,则使用prepareAsync(),否则UI可能会挂起。异步准备在后台线程上执行准备部分,并在完成后返回结果


检查您的媒体文件,确保其可播放。

我也面临同样的问题。当我一个接一个地编写这四个方法时,而不是在这四行之间插入一些逻辑(代码),问题就解决了

mediaPlayer.reset();
mediaPlayer.setDataSource("songpath");
mediaPlayer.prepare();
mediaPlayer.start();
您希望在调用mp.prepare()之前编写mp.reset(),并且所有方法一行一行地调用


谢谢原来我的文件不可播放:)