2012-11-17 72 views
0

我似乎有一个非常奇怪的问题,当应用程序在我的测试手机上运行时,它完美地工作,并通过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); 

回答

0

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

+0

奇怪的是,当我将代码从oncreate移动到on按钮时,按下了崩溃停止? 0.o – Broak

+1

有趣的..并不是所有的Android设备都是平等的,可能是因为在创建时它只是被称为太早。如果你想要的话,多发一些代码,如果没有更全面地了解发生的事情,很难提供更多的帮助。 – simsam7

0

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

如果是这样的话,那么你使用的资源是一个,不保证在android手机上。在某些设备中缺失。

解决方案是将其复制并放在自己的资源文件夹中,以便将其打包到APK中并分发到安装您的应用的任何手机。

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

+0

不,它是我自己的音频录制,采用OGG格式的64k比特率并放置在原始文件夹中。 – Broak