如何从AIR native extension访问Android apk资源?

时间:2015-06-11 16:51:08

标签: android air-native-extension

我的原生扩展程序无法访问apk内的资源。

让我们说,我想本地播放声音" my_sound.wav":

MediaPlayer mediaPlayer = MediaPlayer.create(freContext.getActivity(), freContext.getResourceId("raw.my_sound"));
mediaPlayer.start();

我创建了这样的原生扩展名(.ane文件):

adt -package -target ane playSound.ane extension.xml -swc playSoundAPI.swc -platform Android-ARM -C Android-ARM .

...声音文件位于Android-ARM / res / raw / my_sound.wav文件夹中,因此将其打包到.ane文件中。

后来它被打包到Android应用程序(.apk文件)中。

当我运行这个aapt命令时:

aapt list -v myApp.apk

..我可以在其他资源中看到我的声音文件,所以我知道它在里面:

6342  Deflate    5414  15%    263300  06-11-15 19:21  b998fae3 res/raw/my_sound.wav

另外如果我用文件存档打开myApp.apk,我可以在里面看到res / raw / my_sound.wav。

问题是,当我在手机上运行应用程序时,会产生错误:

android.content.res.Resources$NotFoundException: File res/raw/my_sound.wav from drawable resource ID #0x7f040005

我做错了什么?

更新

看起来只有声音文件才会出现问题。例如,我可以从res / raw / some.txt中读取文本并在屏幕上显示该文本。我用.wav文件尝试了同样的事情,我设法访问它并使用InputStream和ByteArrayOutputStream将其作为文本(大量乱码)打印出来。所以,声音文件是,但为什么我不能播放它?仍然给我资源$ NotFoundException。但它确实存在。我用mp3,wav和不同的wav采样率尝试了它,没有变化。我也试过把它当作原生的Android应用程序来运行它完美无缺,但是当我尝试在android原生扩展中做同样的事情时,它无法正常工作...

0 个答案:

没有答案