在Android上播放音频的问题

时间:2010-02-21 06:15:37

标签: java android audio

修正案:这似乎是我使用的特定音频文件的问题。机器人上的其他应用程序(如Astro文件管理器)也无法播放它,如果我在包中用AAC文件替换它,它会播放它而不会出错。我使用Ubuntu上的LAME将有问题的音频文件从WAV文件编码为MP3格式。知道android媒体播放器的局限性会很好。 mplayer似乎在ubuntu上播放文件没有问题。我想我应该提交错误报告。

原始问题:当我尝试在我的机器人上播放时,以下代码崩溃了。日志中给出的错误消息是“Command PLAYER_INIT completed with an error or info PVMFErrNoResources.”然后在mp.prepare()行上引发IOException。我的项目目录中有一个文件res/raw/bell.mp3,我假设它对应于下面代码中的R.raw.bell。我正在使用“ant debug”构建。如果它是相关的,当我用“android create”创建项目目录时,我将目标数设置为4,在我的系统中对应于“android 2.0”。

我做错了什么,这里?

    import java.io.IOException;
    import android.app.Activity;
    import android.os.Bundle;
    import android.media.MediaPlayer; 
    import android.util.Log;

    public class testapp extends Activity 
    {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
     try {
         MediaPlayer mp = MediaPlayer.create(this, R.raw.bell);
         mp.prepare();
         mp.start();
     } catch (IOException e) {
         Log.v(getString(R.string.app_name), e.getMessage());
     }
        }

}

1 个答案:

答案 0 :(得分:1)

如果您使用静态prepare()方法获取create(),则无需致电MediaPlayer。它会为您执行prepare()步骤。如果您使用常规prepare()构造函数,或者您尝试将剪辑重置为开头以从现有MediaPlayer对象进行回放,则只需要调用MediaPlayer

这是一个用于播放声音的sample project(在我的例子中,是一个Ogg剪辑)。