【问题标题】:MediaPlayer error 100 & 38 while using two MediaPlayer objects使用两个 MediaPlayer 对象时出现 MediaPlayer 错误 100 和 38
【发布时间】:2015-07-14 18:16:50
【问题描述】:

我正在尝试构建一个游戏,它会播放一些声音点击效果以及同时在背景中播放音乐

我尝试使用 两个 MediaPlayer 对象来实现这一点。 第一个用于点击效果的效果很好。

然而,第二个有时会记录 错误 100,有时会记录错误 38。完全没有声音。

变量

private MediaPlayer mEffects;
private MediaPlayer mpSoundBackground;

声音媒体播放器的实现:

mpSoundBackground = MediaPlayer.create(MainActivity.this, R.raw.soundbackground1small);
        mpSoundBackground.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                Logger.d("prepared");
                musicPrepared = true;
            }
        });
        mpSoundBackground.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Logger.d("error "+what);
                return false;
            }
        });

 if (musicPrepared) {
            mpSoundBackground.start();
            Logger.d("music is prepared");
        } else {
            Logger.d("music is not prepared");
        }

媒体播放器效果的实现:

   stopPlaying();
   mEffects= MediaPlayer.create(MainActivity.this, R.raw.soundhit);
   mEffects.start();


private void stopPlaying() {
    if (mEffects!= null) {
        mEffects.stop();
        mEffects.release();
        mEffects= null;
    }
}

更新

增加混乱:它似乎在模拟器中工作 (Genymotion),但不适用于我的 OnePlus One,运行 Lollipop

【问题讨论】:

    标签: android media-player


    【解决方案1】:

    您需要对两个玩家都使用setOnPreparedListener 方法。如果您想在点击时播放声音,请考虑使用SoundPool

    同样在public void onPrepared(MediaPlayer mp) 方法中,你可以使用mp.start 不需要那个标志,因为一旦你到达那个准备好的标志,你就不能确定它已经准备好了

    【讨论】:

      【解决方案2】:

      在我将声音文件重新转换为 MP3 之前,我无法让错误消失。 现在它可以在设备和模拟器上播放,没有任何问题。

      这个故事的寓意:如果您遇到错误,请尝试对同一文件进行一些编码(也可能是几个文件大小!),这可能是解决方案。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2013-11-21
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多