0

我已经被这个特殊问题困了一段时间了,这应该很简单,所以很烦人..我一定是在以某种方式滥用 Android API?

这是代码:

  try {
  String packageName = getPackageName(); 
  int resID = getResources().getIdentifier( "filename" , "raw" , packageName ); //in res/raw folder I have filename.wav audio file
  mp.setDataSource("android.resource://" + packageName + "/" + resID);
  mp.prepare();
  mp.start();
} catch (Exception e) {
  Toast.makeText(PlayScreen.this, e.toString(), Toast.LENGTH_LONG).show(); 
}

我看到的吐司消息说:

java.io.IOException: Prepare failed.: status=0xFFFFFFFC

在 eclipse logcat 中,我看到:

MediaPlayer Error (-4 -4)

非常感谢任何可以提供帮助的人......我只想播放我的 wav 文件!

4

1 回答 1

1

尝试使用 FileDescriptor 代替:

String packageName = getPackageName(); 
int resID = getResources().getIdentifier( "filename" , "raw" , packageName );
AssetFileDescriptor afd = getResources().openRawResourceFd(resId);
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();
afd.close();

这就是我一直做的事情,这样做比硬编码路径更安全。

于 2013-01-07T22:45:42.377 回答