除了在本章前面介绍的XML文件和图片文件之外,在Android应用程序中还可以使用声音资源。类似于声音文件及其他各种类型的文件,Android并没有为之提供对应的支持,这种资源都被称为原始资源。Android的原始资源可以放在如下两个地方。
在Android应用程序中,声音等原始资源被保存在“/res/raw”目录下,Android SDK会在R清单类中为这个目录下的资源生成一个索引项。
在Android应用程序中,位于“/assets/”目录中的资源是更为彻底的原始资源。Android应用程序需要通过AssetManager来管理该目录下的原始资源。Android SDK会为被保存在“/res/raw/”目录中的资源在R类中生成一个索引项,然后就可以在XML文件中通过如下语法格式进行访问。
也可以在Java代码中通过如下语法格式进行访问
通过上述所示的索引项,Android应用程序可以非常方便地访问“/res/raw”目录中的原始资源,接下来可以根据实际项目的需要来处理获取的资源。
在Android应用程序中,AssetManager是一个专门用于管理“/assets/”目录中原始资源的类,此类提供了如下的两个方法来访问Assets资源。
■ InputStream open(String fileName):根据文件名来获取原始资源对应的输入流。
■ AssetFileDescriptor openFd(Stirng fileName):根据文件名来获取原始资源对应的
AssetFileDescriptor。AssetFileDescriptor代表了一项原始资源的描述,应用程序可通过
AssetFileDescriptor来获取原始资源。
例如在下面的演示实例中,讲解了使用声音资源的具体过程。
(www.xing528.com)
本实例的具体实现流程如下。
(1)在应用程序的“/res/raw/”目录下放入一个音频文件:bomp.mp3文件。这样Android SDK会自动处理该目录下的资源,并在R清单类中为它生成一个索引项:R.raw.bomp。
(2)在“/assets/”目录中保存一个shot.mp3文件,这个需要通过AssetManager进行管理
(3)编写布局文件main.xml,功能是定义了两个按钮,一个按钮用于播放/res/raw/目录下的声音文件,另一个用于播放/assets/目录下的声音文件。文件main.xml的具体实现代码如下
(4)编写对应的Java程序文件RawResTest.java,功能是首先获取“/res/raw/”目录下的原始资源文件,然后通过AssetManager来获取“/assets/”目录下的原始资源文件。文件RawResTest.java的具体实现代码如下。
本实例执行后的效果如图9-6所示
图9-6 执行效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。