Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 MediaPlayer没有循环_Android_Android Mediaplayer - Fatal编程技术网

Android MediaPlayer没有循环

Android MediaPlayer没有循环,android,android-mediaplayer,Android,Android Mediaplayer,我想创建活动背景音乐,但MediaPlayer不重复播放:( 为什么我的MediaPlayer没有循环 这是我的代码: MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setCont

我想创建活动背景音乐,但
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();
}
召唤

之后


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

出现这些问题是因为
new MediaPlayer();
创建了一个新的
MediaPlayer
对象,您可以在该对象上设置音量和循环属性,但在此之后,您将使用
MediaPlayer.create(this,R.raw.fon)创建一个新对象;
然后播放新对象表示的声音,该对象没有任何循环属性设置为true,也没有任何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();
}

我在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();

如果我想设置其他Res音频文件,我必须重新创建
mediaPlayer
你想播放的每个声音都将成为你记忆中的一个对象。如果你不再需要fon声音,你可以执行
mediaPlayer.release()
播放后,然后将下一个创建的对象分配给
mediaPlayer
引用。要创建对象,请使用相同的
mediaPlayer.create(this,R.raw.otherSound);
为需要播放的每个声音设置音量(8f,8f);传递的体积值应在0.0到1.0之间,为什么使用8f@AnbaraAyoub:我使用了与海报相同的值。但在每个值之前添加句点更有意义。我将更新我的答案,谢谢。你是怎么知道的?
                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();