0

我对 MediaPlayer 的方法有疑问:create()。(2.3.3 版)

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

第一行是好的,但第二行是重点。日食建议我“使用'MediaPlayer'(声明类型)更改对静态的访问”和“在Create()上添加@SuppressWarnings'static-access'”。顺便说一句,我接受了eclipse的建议......但仍然不起作用。

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

我认为 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 回答
0
MediaPlayer mp = MediaPlayer.create(this, musicIds[0]);
mp.start()

成功时,prepare() 将已经被调用,并且不能再次调用。完成后不要忘记调用 mp.release() 。

于 2012-08-02T13:02:21.263 回答