0

我重写了我的声音类以捕获异常,以便在调用声音时它不再使应用程序崩溃。问题仍然是声音文件无法播放。它在模拟器上运行和播放。

在我用我的 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);
4

1 回答 1

0

声音文件以允许模拟器读取文件但手机无法正确访问的方式进行转换。用新的声音文件替换所有声音文件后,程序再次按预期运行:)

以下是一些帮助我为将来遇到此问题的人找出问题的方法:

http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/ http://code.google.com/p/android-apktool/issues/detail? id=153 在 Content Provider 的帮助下打开资产文件时出现问题

虽然其中一些没有解决我的问题,但它们使找到解决方案成为可能。

于 2012-07-07T23:04:22.563 回答