FileNotFoundException 从 android 资产打开 wav 文件时



在我们的安卓应用程序中,我们打开位于 assets/config/notification.wav 中的 wav 文件。要打开和播放声音,我们使用以下代码:

String soundClipPath = "config/notification.wav"
AssetFileDescriptor afd = mContext.getAssets().openFd(soundClipPath);
int soundID = mSoundPool.load(afd, 1);

这已经解决了大约一年的问题。突然间,这已经停止工作。我们尚未更新构建之间的任何依赖项。我能找到的唯一区别是构建工作是去年的。如果我们在 netbeans 中本地构建 apk,它可以工作,但是当我们使用 hudson 构建 apk 时,它不起作用。我尝试了以下方法,但没有运气:

  • 将 wav 文件放在 res/raw 文件夹中
  • 将 -0 添加到 maven 安卓插件
  • 已验证文件结构以及文件是否存在并正常工作。

使用上面的代码时,我们会得到以下堆栈跟踪:

java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
at android.content.res.AssetManager.openAssetFd(Native Method)
at android.content.res.AssetManager.openFd(AssetManager.java:331)
...

尝试从 res/raw 文件夹加载时执行以下操作:

android.content.res.Resources$NotFoundException: File res/raw/notification.wav from drawable resource ID #0x7f040000
at android.content.res.Resources.openRawResourceFd(Resources.java:981)
at android.media.SoundPool.load(SoundPool.java:191)
...

有人可以帮助我们解决这个奇怪的问题吗?

此致敬意

亨利

让我猜猜,您是否使用maven-jarsigner-plugin进行应用程序签名?而这个没有指定版本?大约四周前,maven-jarsigner-plugin更新到 1.3 版,现在当我签名时它对我的应用程序做了一些奇怪的事情 - 在应用程序启动时签名后,我遇到了像您这样的异常。我解决了它,只需在pom.xml <artifactId>maven-jarsigner-plugin</artifactId>后添加<version>1.2</version>.

我希望它也能对你有所帮助。

要从原始资源文件夹播放它,我建议您需要这样的东西:

MediaPlayer mPlayer = MediaPlayer.create(PlayWorld.this, R.raw.notification);

然后你玩媒体播放器。在您发布的第二个例外中,我看到一些奇怪的东西:"文件 res/raw/notification.wav来自可绘制资源 ID"

相关内容

  • 没有找到相关文章

最新更新