适用于 Android 的 Adob​​e 原生扩展以播放声音

Posted

技术标签:

【中文标题】适用于 Android 的 Adob​​e 原生扩展以播放声音【英文标题】:Adobe native extension for Android to play sounds 【发布时间】:2015-07-11 16:34:57 【问题描述】:

我正在使用 adobe air 为 android 开发一个简单的游戏,但在设备上播放时音效会出现一些延迟。我检查了声音(mp3 文件)是否在开始时有任何静音,但声音文件没有任何静音。所以我想我可以开发一个 ANE 来播放声音并避免音频延迟。 现在 ANE 的问题是它在尝试访问 mp3 文件时会引发 IO 错误。我是创建 ANE 的新手,但无法正常工作。我在 res/raw 文件夹中有名为 snd.mp3 的 mp3 文件,我将 res 文件夹复制到 Android-ARM 文件夹,并将 ANE 与sounds.jar 和 library.swf 一起打包。我正在使用SoundPool 播放声音。

我尝试通过将字符串传递给SoundPool的加载函数来访问声音:

sp.load("android.resource://" +
        freContext.getActivity().getPackageName() +  
        freContext.getResourceId("raw.snd"));

但是,resourceId 提供了一个唯一编号,表明声音文件存在,但我无法播放声音。我也试过MediaPlayer,它是一样的。它抛出 IO 错误。有什么我做错或遗漏的事情吗?任何帮助,将不胜感激。提前致谢。

【问题讨论】:

【参考方案1】:

您需要在包名和资源 ID 之间添加一个斜杠:

sp.load("android.resource://" +
        freContext.getActivity().getPackageName() + "/" +
        freContext.getResourceId("raw.snd"));

【讨论】:

以上是关于适用于 Android 的 Adob​​e 原生扩展以播放声音的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Adob​​e Air Mobile 的 Android 原生扩展中包含额外的 Jar

如何使用 Adob​​e AIR 在 Android 中使用原生 java 代码制作应用程序?

将 Google Play 服务添加到 Adob​​e AIR Android 的本机扩展

适用于 Android 的 Upnp 本机扩展 - AIR

Android SDK 到 Adob​​e Air

iScroll - 保留原生垂直滚动 - 适用于 iOS,不适用于 Android