修正案:这似乎是我使用的特定音频文件的问题。机器人上的其他应用程序(如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());
}
}
}
答案 0 :(得分:1)
如果您使用静态prepare()
方法获取create()
,则无需致电MediaPlayer
。它会为您执行prepare()
步骤。如果您使用常规prepare()
构造函数,或者您尝试将剪辑重置为开头以从现有MediaPlayer
对象进行回放,则只需要调用MediaPlayer
。
这是一个用于播放声音的sample project(在我的例子中,是一个Ogg剪辑)。