Search code examples
androidmedia-player

MediaPlayer error 100 & 38 while using two MediaPlayer objects


I'm trying to build a game which plays some sounds effects on click & at the same time music in the background.

I tried implementing this with two MediaPlayer objects. The first one, which served for the effects on click works great.

The second one however sometimes logs error 100, sometimes error 38. No sound at all.

Variables

private MediaPlayer mEffects;
private MediaPlayer mpSoundBackground;

Implementation of the sound media player:

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");
        }

Implementation of the effects Media Player:

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


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

Update

To add to the confusion: It does seem to work in emulator (Genymotion), but does not work on my OnePlus One, running Lollipop


Solution

  • I couldn't make the errors go away, until I reconverted my soundfile to MP3. Now it plays both on device & simulator without any problems.

    Moral of this story: if you are running into errors, try a few encodings of the same file (possibly a few file sizes too!), it might be the solution.