首页 理论教育 Java程序设计与应用开发:实践音乐播放

Java程序设计与应用开发:实践音乐播放

时间:2023-11-26 理论教育 版权反馈
【摘要】:本节要在程序中加入播放音乐的程序段并加入监视器接口ItemListener,使选择框Choice的各选项可供选择音乐播放。AIFF、MID和WAV是Java1.2以后版本支持的格式。而在独立应用程序中,需要用到javax.sound.midi类库,这里不作介绍。在独立应用程序中播放音乐。程序运行结果界面如图11-2所示,由于程序中已经设置了选项监视器和播放音乐的程序块,所以现在可以通过选择框播放音乐了。

Java程序设计与应用开发:实践音乐播放

本节要在程序中加入播放音乐的程序段并加入监视器接口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)需要如下引入语句:

978-7-111-44824-2-Part02-5.jpg

其中第1条引入语句是为了应用audio类库中的AudioPlayer、AudioData、AudioStream、AudioDataStream、ContinuousAudioDataStream等类。第2条引入语句是为了应用io类库中的FileInputStream类。

2)定义AudioData类对象。例如:

978-7-111-44824-2-Part02-6.jpg

3)定义且实例化文件输入流类FileInputStream的对象。例如:

978-7-111-44824-2-Part02-7.jpg

4)定义且实例化AudioStream类对象。例如:

978-7-111-44824-2-Part02-8.jpg

5)取得音乐文件的数据。例如:

978-7-111-44824-2-Part02-9.jpg

6)一次性播放音乐使用AudioDataStream类。例如:(www.xing528.com)

978-7-111-44824-2-Part02-10.jpg

音乐播放完成后将停止。若要进行不间断地循环播放,则使用ContinuousAudioDataStream类

978-7-111-44824-2-Part02-11.jpg

7)播放音乐使用AudioPlayer类的方法start()。例如:

978-7-111-44824-2-Part02-12.jpg

对于格式为MID的音乐文件的播放,将在第11章中学习。而在独立应用程序中,需要用到javax.sound.midi类库,这里不作介绍。

3.关于播放音乐的算法设计

因为有多首音乐可供选择,所以在选择播放新音乐时需要停止旧音乐,为此设计了stop()方法和AudioDataStream类对象nowPlaying,具体如下:

978-7-111-44824-2-Part02-13.jpg

在play()方法中,再次遇到了“try-catch”程序块,这是因为在使用语句

978-7-111-44824-2-Part02-14.jpg

打开的音乐文件时有可能这个文件不存在,或者文件虽然存在但打不开,从而出现“异常”情形。

下面的例题程序将继承前面的类MyAlbum1构造新类MyAlbum2。

【例11-2】在独立应用程序中播放音乐。

978-7-111-44824-2-Part02-15.jpg

978-7-111-44824-2-Part02-16.jpg

程序运行结果界面如图11-2所示,由于程序中已经设置了选项监视器和播放音乐的程序块,所以现在可以通过选择框播放音乐了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈