1

ここで質問を1つ読みましたが、どれも私の問題を解決しませんでした。メディア ファイルを再生しようとしていますが、次のように表示されます。

E/MediaPlayer(554): 状態 8 で呼び出された prepareAsync W/System.err(554): java.lang.IllegalStateException W/System.err(554): at android.media.MediaPlayer.prepare(Native Method)

問題がどこにあるのかわかりませんでした..エミュレーターでは動作し(例外がスローされます)、タブレットでは強制終了します。準備メソッドを使用すべきではないという投稿を見たことがありますが、何も変わらない場合は.

コードとエラーは次のとおりです。

 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(ネイティブ メソッド) で

前もって感謝します。

4

2 に答える 2

3

まず、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

第 2 に、状況によって準備が必要な場合は、代わりに prepareAsync() を使用してください。そうしないと、UI がハングする可能性があります。非同期準備は、バックグラウンド スレッドで準備部分を実行し、完了すると結果を返します。これについては、Android のドキュメントに詳しい説明があります。

メディア ファイルをチェックして、再生可能であることを確認します。

于 2012-05-30T10:52:30.783 に答える