Android MediaPlayer.Create() 返回 null [英] Android MediaPlayer.Create() returns null

查看:70
本文介绍了Android MediaPlayer.Create() 返回 null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个可以播放一些声音的 Android 应用.为此,我正在创建一个 MediaPlayer 对象.代码如下:

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

这里 mp 对于 Android 2.3.3(API 级别 10)为空,我尝试使用其他版本的 Android(2.1、2.2 等)它工作正常.但是对于 Android 2.3.3(API 级别 10)MediaPlayer.create() 调用返回 null.

声音文件 (testSound.wav) 是一个 wav 文件.我尝试解析 wav 文件以查看它是否已损坏.好像还好.此外,我可以使用 Windows Media Player 播放此声音文件.

这是 testSound.wav 文件:testSound.wav 以下是详细代码:>

public MediaPlayer mp;//OnCreate() 函数mp = MediaPlayer.create(this, R.raw.testSound);if(mp == null)//mp 在真实设备和 AVD 上的 Android 2.3.3 都是 null{Toast msg = Toast.makeText(getApplicationContext(), "无法播放声音",Toast.LENGTH_LONG);msg.show();}//SetMediaFileToPlay()在按钮的Click事件上调用void SetMediaFileToPlay(){AssetFileDescriptor afd;资源 res = getResources();Log.d("In SetMediaFileToPlay %s", g_strFocusedImage.toString());开关(g_strFocusedImage){案例 RESID_ALPHA1:afd = res.openRawResourceFd(R.raw.ik);如果(mp != 空){mp.reset();mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),afd.getLength());}休息;.........//其他情况}如果(mp != 空){mp.prepare();mp.start();}

}

请帮忙.谢谢.

解决方案

您的文件使用 WAVE 8,000Hz MP3 8 kbit/s 格式,而 android 仅支持 8 位和 16 位线性 PCM:http://developer.android.com/guide/appendix/media-formats.html.>

尝试修复您的文件.

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.

解决方案

Your file uses WAVE 8,000Hz MP3 8 kbit/s format, while android supports only 8- and 16-bit linear PCM: http://developer.android.com/guide/appendix/media-formats.html.

Try fixing your file.

这篇关于Android MediaPlayer.Create() 返回 null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆