两个媒体播放器对象不能同时播放同步歌曲

时间:2016-02-03 08:05:57

标签: java android sockets media-player

我正在研究一个Android应用程序。这个应用程序的正常概念是在同一时间播放多个设备中的歌曲。一切都已完成但是歌曲没有在同步中播放。我已经做了大量的研发来解决这个问题。问题但没有获得成功。但最后我发现了一个Android Media Player问题。为了找到这个问题,我已经制作了一个Application.Description跟随。

演示应用说明

我创建了一个Android媒体播放器firstPlayer和secondPlayer.firstPlayer的两个对象。一旦App是Lunch,就会开始播放歌曲。现在我在test.xml中使用了一个Button.once用户将点击此按钮secondPlayer启动并且播放我在firstPlayer中设置的相同音乐。我还在firstPlayer播放的位置寻找secondPlayer。

代码

  changePlayer = (Button) findViewById(R.id.changePlayer);


    String fileName = "/qq.mp3";
    String baseDir = Environment.getExternalStorageDirectory() + "/Test App" + fileName;

    Log.e(TAG, "path :" + baseDir);
    try {
        firstPlayer = new MediaPlayer();
        secondPlayer = new MediaPlayer();

        firstPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        secondPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        firstPlayer.setDataSource(baseDir);
        secondPlayer.setDataSource(baseDir);

        firstPlayer.prepare();
        secondPlayer.prepare();

        firstPlayer.start();


    } catch (IOException e) {
        e.printStackTrace();
    }


    changePlayer.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!secondPlayer.isPlaying()) {
                Log.e(TAG, "Media Player Start M2");
                secondPlayer.start();
            }
            int sek = firstPlayer.getCurrentPosition();
            secondPlayer.seekTo(firstPlayer.getCurrentPosition());
            //firstPlayer.seekTo(sek);

            Log.e(TAG, "Current Playe Time ::" + secondPlayer.getCurrentPosition());
            Log.e(TAG, "First Playe Time ::" + sek);
            Log.e(TAG, "firstPlayer Playe Time ::" + firstPlayer.getCurrentPosition());
            Log.e(TAG, "secondPlayer Playe Time ::" + secondPlayer.getCurrentPosition());

        }
    });

问题

  • 我得到一个奇怪的问题,媒体播放器都没有播放同步它对播放歌曲有点不同。如果我在firstPlayer播放时寻找secondPlayer,那么它在同步播放但不会发生两个播放器播放不同。

注意

  • 我也尝试使用任何第三方媒体播放器解决此问题,但我没有运气。我已经实施了ExoPlayer,VlcPlayer,UniversalPlayer来解决这个问题,但它也有同样的问题。

要求。

  • 我想在MediaPlayer的两个不同对象中同步播放歌曲。
  • 有没有人知道任何没有这个延迟问题的强大媒体播放器。

我几乎没有尝试解决这个同步问题,但我没有得到运气。我希望我的应用程序100%同步。就像在IOS中的Seedio应用程序。我也在IOS测试这个,但在IOS中它工​​作正常两个播放器播放100%同步的歌曲。

如果有任何想法,请帮助我。

我希望你们都明白我的问题。

谢谢

1 个答案:

答案 0 :(得分:0)

Seek确实需要花费一些时间在MediaPlayer上。 (据我了解,官方文档:https://developer.android.com/reference/android/media/MediaPlayer

一个想法是让第二流不开始,寻求一个已知的未来位置(高于第一流的当前位置),希望它“及时”到达那里。然后,到达那里时(时间已经过去),开始第二个流。我没有测试过它,只是想着要解决一个非常相似的问题。