1

我似乎遇到了一个非常奇怪的问题,当应用程序在我的测试手机上运行时,它运行良好,并且在按下按钮时通过 soundpool 从原始文件夹播放声音,但是当我在构建应用程序后提交测试时它崩溃了在 120 多台设备上“找不到资源”

下面的代码:另请注意,该文件实际上存在,在 R 文件中,在编译的 APK 文件中,我也清理了很多次。

http://www.appthwack.com/public/FUVGFZn42q

'01-03 21:09:36.828 26762 26762 W System.err: java.lang.RuntimeException: Unable to start activity ComponentInfo{appinventor.ai_Broak.PaintballWiz/com.muo.paintballwiz.PaintballWiz}: android.content.res.Resources$NotFoundException: File res/raw/pballshot.ogg from drawable resource ID #0x7f050000 - 1 occurrence'



soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);

//soundPoolMap = new SparseIntArray();
soundPoolMap = new HashMap<Integer, Integer>();

// soundPoolMap.put(soundID, soundPool.load(this, R.raw.midi_sound, 1));
int myAudioFile = getResId("pballshot", R.raw.class);
soundPoolMap.put(soundID, soundPool.load(PaintballWiz.this, myAudioFile, 1));
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
leftVolume = curVolume / maxVolume;
rightVolume = curVolume / maxVolume;
soundPool.play(soundID, leftVolume, rightVolume, priority, no_loop, normal_playback_rate);
soundPool.play(soundID, 0, 0, 1, -1, 1f);
4

2 回答 2

0

我可能是错的,但听起来资源不是您自己的文件之一。并且您正在使用手机的资源。我知道你在编译的 APK 中声明了它,但我认为你应该仔细检查一下

如果是这种情况,那么您正在使用的资源是一个,不能保证在 Android 手机上。在某些设备中也是如此。

解决的办法是把它复制下来,放到自己的资源文件夹中,这样就可以打包成APK,分发到任何安装了你的应用的手机上。

如果它已经在您的 APK 中,但也是手机资源,请确保它正确指向您 APK 中的资源,而不是手机的位置。

于 2012-11-17T23:12:04.763 回答
0

您可能想尝试将音频文件放入“资产”文件夹。然后使用 AssetManager 访问该文件。

于 2012-11-17T23:16:51.853 回答