WEB开发网
开发学院WEB开发Jsp 在MIDP应用程序中播放声音 阅读

在MIDP应用程序中播放声音

 2008-01-05 08:50:11 来源:WEB开发网   
核心提示:■ 前言在上一讲中我们讲述的是如何制作java手机多媒体功能中的动画,本讲中我们将介绍如何制作JAVA手机的另一个多媒体功能——声音,在MIDP应用程序中播放声音,即N800的音乐播放功能,若是在动画上再配以音乐播放功能,只传递0表 3此外,事件的种类(audioAction方法的自变量、事件)在AudioListen

■ 前言

 在上一讲中我们讲述的是如何制作java手机多媒体功能中的动画,本讲中我们将介绍如何制作JAVA手机的另一个多媒体功能——声音,即N800的音乐播放功能。若是在动画上再配以音乐播放功能,就能制作出具有丰富表现力的应用程序了。

■ 音乐播放

 现在我们利用MIDP应用程序播放音乐。但是, MIDP标准API不支持声音播放功能。机种不同,则声音播放方法也不同,所以每个厂商都会使用他们各自扩展的API 。N800使用NEC扩展的API,所以能用MIDP应用程序播放声音。

■ N800的音乐播放功能

 N800只能播放SMF(format 0)格式的音乐数据,最大文件尺寸为10Kbyte。SMF格式即Standard MIDI File 的缩略语,就是为了能实现互换性而设定的文件形式,互换性是指在不同的应用程序中也具有能处理数据的特性。SMF分为format0和format1两种格式。N800所采用的是format0格式。这两种格式具有以下不同特点。(表 1)

 format0  Midi的16频声音收录在1个磁道上的形式

 format1

 不限制磁道数量的形式

表 1

■ 播放音乐

接下来我们实际操作读取文件播放音乐的功能。

 ● 音乐数据的读取

 利用扩展API上的Media类的static方法读取音乐数据。自变量中记述了音乐数据文件的通过。AudioClip audio = Media.getAudioClip(“/test.mid”);

 另外,能够从web上获得音乐数,并且能够从RMS中得到音乐数据。但,由于形式相同,这里就不非凡讲述了。具体情况请参考扩展API文档。

 ● 播放

 播放读取的音乐数据。使用AudioClip例子(在这称为audio)play方法播放。
 audio.play();

 而且也能同时播放两个以上的音乐数据。此时,使用AudioClip例子(在这称为audio1、audio2)play方法播放。
 audio1.play();
 audio2.play();
 上述情况下能够同时播放audio1,audio2。

 ● 停止

 能够暂停音乐的播放。使用AudioClip例子的stop方法能够停止。
 audio.stop();

 ● 其他功能

 AudioClip定义了读取其他音乐数据信息的方法和决定反复播放次数的方法。(表 2)
 getChannel()  取得音乐数据的频数

 getLapsedTime()

 以MS为单位取得所演奏的音乐数据的播放时间

 getTempo()

 取得音乐数据的速度

 getTime()

 取得音乐数据的播放时间

 setLoopCount(int count)

 设定演奏的音乐数据的反复播放次数

表 2

■ 音频事件

音频演奏过程中,演奏开始时、停止时、结束时都会发生音频事件,能定义此时的处理。要定义音频事件发生时的处理,有必要安装AudioListener接口和记述audioAction方法内的处理。
然后,使用AudioClip对象的addAudioListener方法进入AudioListener。

public class AudioTest implements AudioListener {

 /**
  * 构造函数
  **/

 public AudioTest() {
  AudioClip audio = Media.getAudioClip("/test.mid");// 读取音乐数据
   audio.addAudioListener(this);// 注册audio事务监听器
 }

 /**
  * 音频事件的处理
  **/

 public void audioAction(AudioClip sound, int event, int param) {
    //记述处理
      •
      •
 }
}

ex. 1

记述处理的audioAction方法的自变量如下所示。
 AudioClip sound  传递事件发生来源的对象

 int event

 传递事件的种类

 int param

 传递事件的参数。由于事件不同,则参数的意思也不同。不包含参数的事件的情况下,只传递0

表 3

此外,事件的种类(audioAction方法的自变量、事件)在AudioListener接口文件夹中定义如下。(表 4)
static int AUDIO_COMPLETE  表示音乐播放结束 static int AUDIO_STARTED  表示音乐播放开始 static int AUDIO_COMPLETE  表示音乐播放停止

表 4


以下展示的是只播放音频数据的简单范例。


Tags:MIDP 应用程序 播放

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接