在我们的Android应用程序中,我们打开位于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时它不起作用。我试过以下没有运气:
使用上面的代码时,我们得到以下stacktrace:
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)
...
有人可以帮我们解决这个奇怪的问题....
致以最诚挚的问候,
的Henrik
答案 0 :(得分:6)
我猜,您是否使用maven-jarsigner-plugin
进行应用程序签名?而这个没有指定版本?
大约四周前,maven-jarsigner-plugin
已更新为版本1.3,现在我在签名时对我的应用程序做了一些奇怪的事情 - 在申请开始签名后,我得到了像你这样的例外。
我解决了这个问题,只需在<version>1.2</version>
<artifactId>maven-jarsigner-plugin</artifactId>
之后添加pom.xml
。
我希望它对你有帮助。
答案 1 :(得分:0)
要从原始资源文件夹中播放它,我建议您需要这样的内容:
MediaPlayer mPlayer = MediaPlayer.create(PlayWorld.this, R.raw.notification);
然后你玩MediaPlayer。 在你发布的第二个例外中,我看到了一些奇怪的东西:&#34;来自 drawable 资源ID的文件res / raw / notification.wav&#34;