4

我想创建活动背景音乐,但MediaPlayer不能重复播放 :( 为什么我MediaPlayer的没有循环播放?

有我的代码:

MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.tersetetete);

    mediaPlayer = new MediaPlayer();
    mediaPlayer.setVolume(8f, 8f);
    mediaPlayer.setLooping(true);

    mediaPlayer = MediaPlayer.create(this, R.raw.fon);
    mediaPlayer.start();
}
4

3 回答 3

6

称呼

 mediaPlayer.setLooping(true);

    mediaPlayer.start(); 
于 2013-05-13T05:40:44.497 回答
5

替换为您在下面编写mediaPlayer = new MediaPlayer();的行。mediaPlayer = MediaPlayer.create(this, R.raw.fon);

您遇到问题是因为new MediaPlayer();创建了一个新MediaPlayer对象,您在该对象上设置了 Volume 和 Looping 属性,但之后您将创建一个新对象,MediaPlayer.create(this, R.raw.fon);然后播放该新对象表示的声音,该新对象没有设置任何循环属性为真,也不为 8f 8f 的任何体积。

这是您可以使用的完整代码:

MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.tersetetete);

    mediaPlayer = MediaPlayer.create(this, R.raw.fon);
    mediaPlayer.setVolume(.8f, .8f);
    mediaPlayer.setLooping(true);
    mediaPlayer.start();
}
于 2013-05-13T06:24:29.260 回答
1

我在 KITKAT 并且 setlooping(true) 对我不起作用,所以我做了这个更改,现在它可以工作了......

                MediaPlayer mMediaPlayer;
                //Stop on going Music
                AudioManager audiomanager = (AudioManager)context.getSystemService("audio");
                if (audiomanager.isMusicActive())
                {
                    Intent intent = new Intent("com.android.music.musicservicecommand");
                    intent.putExtra("command", "pause");
                    context.sendBroadcast(intent);
                }
                //Setting Max Volume
                audiomanager.setStreamVolume(3, audiomanager.getStreamMaxVolume(3), 0);
                mMediaPlayer = MediaPlayer.create(context.getApplicationContext(),R.raw.file);
                mMediaPlayer.start();
                //This did the trick
                mMediaPlayer.setOnErrorListener(new android.media.MediaPlayer.OnErrorListener() {

                    public boolean onError(MediaPlayer mediaplayer, int i, int j)
                    {
                        return false;
                    }
                });
                mMediaPlayer.setLooping(true);

并停止我已经使用。

               mMediaPlayer.release();
于 2014-10-07T07:28:51.533 回答