【问题标题】:dot42: exception thrown when calling SoundPool.Load method for raw resource (mp3 file)dot42:为原始资源(mp3 文件)调用 SoundPool.Load 方法时引发异常
【发布时间】:2013-08-04 00:00:21
【问题描述】:

我将 Beep.mp3 文件添加到我的项目并将其类型设置为 RawResource。构建后,我可以看到在 R.Raws.Beep 中生成的 id,所以我认为一切都很好。但是,当我尝试使用该资源并将声音加载到 SoundPool 实例中时,我收到一条异常消息“来自可绘制资源 ID #0x7f030000 的文件 res/raw/beep.mp3”,另外在设备日志窗口中,我可以看到 SoundPool 日志“示例0 未成立”(真的,这就是它所说的“成立”)。我什至检查了我的应用程序的 apk 文件的内容,我可以看到 res/raw/beep.mp3 确实在那里,所以似乎在包中嵌入资源是可行的,错误的原因要么在我的代码中,要么我没有做任何事情其他需要它才能工作。

这个文件的原因是当用户在我的应用程序中执行某些操作时会发出哔声,所以它不像我自己的 winamp 克隆或类似的东西。

好的,这是我执行的代码,我在哪里遇到了异常:

public static class SoundMaster
{
    public static int BeepSoundId = 1;

    private static readonly SoundPool SPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
    private static readonly HashMap<int, int> SoundPoolMap = new HashMap<int, int>();
    private static Context _context;

    public static void InitSounds(Context context)
    {
        try
        {
            _context = context;
            var loaded = SPool.Load(_context, R.Raws.Beep, 1);
            SoundPoolMap.Put(BeepSoundId, loaded);
        }
        catch (Exception ex)
        {
            Log.E("InitSounds exception", ex.Message);
        }
    }        
}

我从我的活动 OnCreate 方法中调用 SoundMaster.InitSounds() 方法,并将 this 作为参数传递,所以我相信它是完全正确的 Context 实例。

一件事是,嵌入在 apk 中的文件名为 beep.mp3,而我包含在项目中的实际文件是 Beep.mp3,但我多次尝试使用不同的文件名和资源 ID,但总是得到相同的异常。

那么任何人都可以分享一些想法,这可能是我使用此代码遇到问题的原因吗?或者也许我应该使用不同的方式来播放我的哔声(例如 MediaPlayer?),但我觉得代码是正确的并且可以工作,但资源不知何故搞砸了。

【问题讨论】:

    标签: android android-resources dot42


    【解决方案1】:

    该异常是由于dot42的APK打包器有问题引起的。 它不应该压缩某些资源(基于已压缩文件的已知扩展名)。

    我们可以用当前的 dot42 版本重现该问题。当从压缩中排除 .mp3 时,问题就解决了。我们现在将添加正确的扩展列表。 此修复程序将在下一次更新中。 (2013 年 8 月 27 日更新 1.0.1.74)

    披露,我为 dot42 工作。

    【讨论】:

    • 感谢您的回复,很高兴您能重现并修复它。但是现在我可以做些什么来播放我的哔哔声吗?将mp3转换成wav之类的?
    • 您可以将 mp3 放在设备的文件系统上并从那里加载。
    • 好的,等我从游戏的“核心”内容中恢复过来后,我会试试看 :) 顺便说一句,你知道你什么时候会发布一些新版本的 dot42 吗?几天,几周,几个月? :)
    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 2011-12-21
    • 2023-03-04
    • 2020-11-07
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多