Android MediaPlayer.Create() returns null

Viewed 8405

I am developing an Android App that plays some sounds. For that I am creating an object of MediaPlayer. Below is the code:

mp = MediaPlayer.create(this, R.raw.testSound);

Here mp is null for Android 2.3.3 (API Level 10), i tried with other versions of Android (2.1, 2.2 etc.) it works fine. However with Android 2.3.3 (API Level 10) MediaPlayer.create() call returns null.

The sound file (testSound.wav) is a wav file. I tried parsing the wav file to see if it is corrupted or not. It seems just fine. Also, I could play this sound file using Windows Media Player.

Here's the testSound.wav file: testSound.wav and below is the code in detail:

public MediaPlayer mp;

// OnCreate() funciton
mp = MediaPlayer.create(this, R.raw.testSound);
if(mp == null)   // mp is null for Android 2.3.3 on real device and on AVD both
  {
  Toast msg = Toast.makeText(getApplicationContext(), "Could not play sound",         
  Toast.LENGTH_LONG);
  msg.show();
  }

//SetMediaFileToPlay() is called on Click event of button
void SetMediaFileToPlay() 
{       
    AssetFileDescriptor afd;     
    Resources res = getResources();
    Log.d("In SetMediaFileToPlay %s", g_strFocusedImage.toString());
    switch (g_strFocusedImage)
    {
      case RESID_ALPHA1:
      afd = res.openRawResourceFd(R.raw.ik);
      if(mp != null)
      {
        mp.reset();
        mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),      
        afd.getLength());
      }  
      break;
      .........  //other cases
   }

 if(mp != null)
  {
    mp.prepare();
    mp.start();
  }

}

Please help. Thank You.

3 Answers

It can happen that it returns null because the device doesn't support playing audio i.e watch.

To check if device supports MediaPlayer you can do a null check on MediaPlayer.create()

I found it on google santa-tracker app

null seems to be communicating that something went wrong. Since Google shows this as the first result for "android mediaplayer.create() returns null", my recommendation would be to go through your code and check

  • if your device supports the format as indicated by Vasily
  • if the file that you passed in actually exists or has already been created

In my case I had created an empty file before passing it to Mediaplayer.create. This worked fine on my emulated device, but crashed on my personal device.

Related