Android MediaPlayer.Create() 返回 null

标签 android wav android-mediaplayer

我正在开发一个播放一些声音的 Android 应用程序。为此,我正在创建一个 MediaPlayer 对象。下面是代码:

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

此处 mp 对于 Android 2.3.3(API 级别 10)为 null,我尝试使用其他版本的 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() 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();
  }

请帮忙。谢谢。

最佳答案

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

尝试修复您的文件。

关于Android MediaPlayer.Create() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811466/

相关文章:

android - Flutter 因任务 ':app:dexBuilderDebug' map 中缺少 key 而失败

android - 在 AMD 处理器上运行模拟器

c - 声音字符串声明挂起 Arduino 编译器

Cmusphinx 西类牙语模型不连贯的转录

java - MediaPlayer start()/stop() mUri 为 null

java - Android 读取大文件导致应用程序崩溃

android - android中有多少与SMS相关的数据库列?

vb.net - 某些音频文件会播放,但其他音频文件不会播放

java - 使用服务在后台使用媒体播放器是好的做法还是有必要

java - Android MediaPlayer 错误(在状态 1 中开始调用;错误 (-38, 0);错误 (-38,0))