未找到奇怪的资源问题?
Posted
技术标签:
【中文标题】未找到奇怪的资源问题?【英文标题】:Strange resource not found issue? 【发布时间】:2012-11-17 22:56:26 【问题描述】:我似乎遇到了一个非常奇怪的问题,当应用程序在我的测试手机上运行时,它运行良好,并且在按下按钮时通过 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 ComponentInfoappinventor.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);
【问题讨论】:
【参考方案1】:您可能想尝试将音频文件放入“资产”文件夹。然后使用 AssetManager 访问该文件。
【讨论】:
奇怪的是,当我将代码从 oncreate 移动到 on 按钮时,按下崩溃停止? 0.o 有趣.. 并非所有的 Android 设备都是平等的,可能是因为它在 oncreate 中被调用得太早了。如果您愿意,可以发布更多代码,如果不更全面地了解正在发生的事情,很难提供更多帮助。【参考方案2】:我可能是错的,但听起来资源不是您自己的文件之一。并且您正在使用手机的资源。我知道你在编译的 APK 中声明了它,但我认为你应该仔细检查一下
如果是这种情况,那么您正在使用的资源是一个,不能保证在安卓手机上。在某些设备中也是如此。
解决的办法是把它复制下来,放到你自己的资源文件夹中,这样就可以打包成APK,分发到任何安装了你的应用的手机上。
如果它已经在您的 APK 中,但也是手机资源,请确保它正确指向您 APK 中的资源,而不是手机的位置。
【讨论】:
不,这是我自己的录音,OGG 格式 64k 比特率,放在 raw 文件夹中。以上是关于未找到奇怪的资源问题?的主要内容,如果未能解决你的问题,请参考以下文章
未找到 System.Net.Http 4.2.0.0 的奇怪问题