本节要在程序中加入播放音乐的程序段并加入监视器接口ItemListener,使选择框Choice的各选项可供选择音乐播放。
这里首先学习有关音频的知识和音乐的播放方法。
1.关于音频及其格式
数字音频的格式有很多种类,其质量和声波的采样频率与采样精度有关。采样频率越高,声音质量越好。采样精度为每次采样所存储的数据数量,数据越多音质越好。由此可见,高品质的音频需要占用大量的内存和磁盘空间,由于网络带宽的限制,在Internet上传输也将花费更多的时间。由于这些原因,产生了多种音频格式。
目前,Java能够支持的文件格式有:AIFF、AU、MID、WAV。音质可分为8位和16位的单道和立体声,采样频率为8kHz~48kHz。AU是Java最早版本支持的格式,采样频率为8kHz,采样精度为8位。AIFF、MID和WAV是Java1.2以后版本支持的格式。
2.在独立应用中音乐文件的载入和播放
对于格式为AIFF、AU、WAV的音乐文件载入和播放的步骤如下:
1)需要如下引入语句:
其中第1条引入语句是为了应用audio类库中的AudioPlayer、AudioData、AudioStream、AudioDataStream、ContinuousAudioDataStream等类。第2条引入语句是为了应用io类库中的FileInputStream类。
2)定义AudioData类对象。例如:
3)定义且实例化文件输入流类FileInputStream的对象。例如:
4)定义且实例化AudioStream类对象。例如:
5)取得音乐文件的数据。例如:
6)一次性播放音乐使用AudioDataStream类。例如:(www.xing528.com)
音乐播放完成后将停止。若要进行不间断地循环播放,则使用ContinuousAudioDataStream类
7)播放音乐使用AudioPlayer类的方法start()。例如:
对于格式为MID的音乐文件的播放,将在第11章中学习。而在独立应用程序中,需要用到javax.sound.midi类库,这里不作介绍。
3.关于播放音乐的算法设计
因为有多首音乐可供选择,所以在选择播放新音乐时需要停止旧音乐,为此设计了stop()方法和AudioDataStream类对象nowPlaying,具体如下:
在play()方法中,再次遇到了“try-catch”程序块,这是因为在使用语句
打开的音乐文件时有可能这个文件不存在,或者文件虽然存在但打不开,从而出现“异常”情形。
下面的例题程序将继承前面的类MyAlbum1构造新类MyAlbum2。
【例11-2】在独立应用程序中播放音乐。
程序运行结果界面如图11-2所示,由于程序中已经设置了选项监视器和播放音乐的程序块,所以现在可以通过选择框播放音乐了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。