0

MediaPlayer のメソッド create() に問題があります。(バージョン 2.3.3)

    mMediaPlayer = new MediaPlayer();
    mMediaPlayer.create(this, musicIds[0]).start();

1行目はOKですが、2行目がポイントです。日食は、「「MediaPlayer」(宣言型)を使用してアクセスを静的に変更する」および「Create()に@SuppressWarnings「静的アクセス」を追加する」ことを提案しています。ちなみに、私は日食の提案を取り入れています........しかし、それでも機能しません。

4

4 に答える 4

1

次のようなことを提案している可能性があります。

MediaPlayer mMediaPlayer = MediaPlayer.create(this, musicIds[0])
mMediaPlayer.start();
于 2012-08-02T12:59:41.273 に答える
0

これは、メディア プレーヤーの再生準備が整うまで待機し、メディア プレーヤーを解放していることを確認する方法のより完全な例です。を呼び出さないとmediaPlayer.release()、以降の への呼び出しで問題が発生する可能性がありますMediaPlayer

    MediaPlayer mediaPlayer= MediaPlayer.create(context.getApplicationContext(), R.raw.notification_ring);
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            mediaPlayer.release();
        }
    });
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
            mediaPlayer.start();
        }
    });
于 2012-08-02T14:11:06.733 に答える
0
MediaPlayer mp = MediaPlayer.create(this, musicIds[0]);
mp.start()

成功すると、prepare() はすでに呼び出されているため、再度呼び出してはなりません。完了したら mp.release() を呼び出すことを忘れないでください。

于 2012-08-02T13:02:21.263 に答える
0

私はEclipseの提案があなたのコードを動作させないことの主題であるべきではないと思います。

の始まり方に注目MediaPlayerです。ソングが初期化されるまで時間がかかる場合がありますのでご注意ください。したがって、onPrepared()リスナーを設定してstart()、メディアプレーヤーが準備されている場合にのみ呼び出すことをお勧めします。

mMediaPlayer.create(this, musicIds[0])
mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mMediaPlayer.start();
    }
});
于 2012-08-02T13:04:41.393 に答える