分享
 
 
 

在MIDP应用程序中播放声音

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

■ 前言

在上一讲中我们讲述的是如何制作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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有