【发布时间】:2012-07-07 21:38:41
【问题描述】:
我重写了我的声音类以捕获异常,以便在调用声音时不再使应用程序崩溃。问题仍然是声音文件无法播放。它在模拟器上运行和播放。
在我用我的 HTC VIVID 测试之前没有错误。我觉得我的手机不是问题。
我的声音文件的文件结构是 Resources>raw>soundfiles.ogg
这是我用于声音类的代码。
public class Sound extends Activity
{
MediaPlayer mp;
Context context;
public Sound (Context res)
{
context=res;
}
public void playSound(int ID)
{
try {
mp = MediaPlayer.create(context, ID);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
mp = null;
}
});
} catch (Exception exception) {
}
}
}
这里是日志:
E/AndroidRuntime( 981): FATAL EXCEPTION: main
E/AndroidRuntime( 981): android.content.res.Resources$NotFoundException: File r
es/raw/soundfile.ogg from drawable resource ID #0x7f040000
E/AndroidRuntime( 981): at android.content.res.Resources.openRawResource
Fd(Resources.java:1081)
E/AndroidRuntime( 981): at android.media.MediaPlayer.create(MediaPlayer.
java:762)
E/AndroidRuntime( 981): Caused by: java.io.FileNotFoundException: This file can
not be opened as a file descriptor; it is probably compressed
如何解决此压缩问题?
这是设置的大致轮廓。我不认为这是问题的一部分。
final Context res;
Sound fx;
public GameView(Context context) //reference to activity
{
super(context);
res=context;
fx=new Sound(res);
public boolean onTouchEvent(MotionEvent event)
{
fx.playSound(R.raw.sound);
【问题讨论】:
-
您将声音文件保存在哪里?什么文件夹?
-
"我的声音文件结构是 Resources>raw>soundfiles.ogg "
-
你能把你设置上下文和id的那行贴出来吗?可能是你这样做的方法
-
我的意思是你使用
Sound类作为实例化对象并在其上调用playSound的地方 -
我在帖子中添加了大致的设置大纲。问题是声音文件在安装在手机上时没有传输和正确读取。模拟器完美运行。
标签: android audio compression media-player logcat