工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
MIDP 2.0 Media API为游戏增加音效
[文章信息]
作者:马岩编译
时间:2004-10-27
出处:天极网
责任编辑:方舟
[文章导读]
利用MIDP 2.0 Media API,你可以为你的游戏和其他应用程序增加声音效果,在MIDP设备上发声、播放乐曲、及其它各种不同的音频
advertisement
热点推荐
· 真没想到VB也可以这样用之指针技术
· 禁止QQ登录的方法
· 给你的XML文件做个数字签名
· ImageReady制作“焰火”小动画
· Java加密和数字签名编程快速入门
[正文]

1 2  下一页

  利用MIDP 2.0 Media API,你可以为你的游戏和其他应用程序增加声音效果,在MIDP设备上发声、播放乐曲、及其它各种不同的音频。

  介绍

  几乎是MIDP(Mobile Information Device Profile)1.0一出来的时候,基于它的一个简单的视频播放器(第三方厂商开发)就同时发布了。这个播放器只支持MPEG格式,而且也并不复杂,但它展示了观看和使用媒体(本例是视频)的能力,这一点大大激发了程序员们的兴趣。不过这个早期的视频播放器并不是为程序员设计,所以要想在软件中使用播放视频的功能,必须要么拷贝所有代码(这样做可能有道德上的存疑)要么自己写所有的相关代码。由此看出对播放各类媒体的API的需求显然是存在的,但仅仅为播放视频开发API并不能实现开发API的所有用途。于是当移动媒体API(MMAPI)专家委员会开始致力于明确移动媒体概念的时候,他们首先需要为各种移动设备,范围从简单的蜂窝电话到PDA以及平板式电脑,提供可供参考的媒体种类。最终他们完成了两类不同的API设置:

  · 移动媒体API(MMAPI),为拥有高级声音和多媒体性能的移动设备设计。

  · 媒体API(MIDP2.0),适用于有限的移动设备(仅仅提供音频)。

  经过以上的发展历程,令人感到奇怪的是API的第一个版本似乎并不支持视频,不过为此有个很好的解释:一些MIDP设备的内存和处理器性能太有限。事实上对MIDP2.0媒体API的需求很容易勾勒,它必须提供对以下功能的支持:

  · 音阶的产生

  · “开始播放”、“停止”、“暂停”之类基础的控制

  · 媒体特效控制,比如音量

  · 内容数量查询

  MIDP2.0媒体API赋予你创建、播放简单旋律(只有音节)和音频的功能。提到声音首先进入我们脑海的手机铃声,但其实API和MIDP涉及的全部相关概念有相同的限制条件:它只能在Java的环境下使用,所以你不能为你的手机创作新的铃声。但是除此以外对于其他需要比铃声更复杂声音的游戏或者应用,API就提供了巨大的好处。

  通用架构

  API由三个部分:Manager,Player和Control,和两个包:javax.microedition.media,javax.microedition.media.control构成。Media包中包含Manager和可能用到的Players,control包中包含了所有的Controls。

  API中最重要的类是Manager。Manager的用处包括,创建各种不同类型的Players(用于播放音频,视频等等),获得各种支持协议和内容格式,播放简单的曲调。Player类用来播放各类格式的多媒体内容。Control是一个用来控制Players的接口,Control控制诸如音量、音色、音调之类的东西。

图1 Manager, Player, Control东西类间调用关系说明


  创建一个播放器与创建一个网络连接类似,根据不同情况,需要调用Manager中的一或两个方法完成。

  以下代码根据Internet上的音频文件创建了一个Player,然后播放该音频:

try {
 Player audioPlayer = Manager.createPlayer("http://www.nullplace.com/music.wav");
 audioPlayer.start();
} catch (IOException ioe) {
} catch (MediaException me) { }

  第二个例子是从应用的.jar文件中的音频文件创建一个Player,然后播放音频:

try {
 InputStream is = getClass().getResourceAsStream("music.wav");
 Player audioPlayer = Manager.createPlayer(is, "audio/X-wav");
 audioPlayer.start();
} catch (IOException ioe) {
} catch (MediaException me) { }

  发出一个简单音调

  发出一个简单音调是一个简单的过程,用Manager类中一个随手可得的方法就能轻易实现。注意下面的MIDlet有两个简单动作:一个是退出应用,另一个是发出简单声调。发出声调由simpleTone()方法实现,而它实际上是调用Manager类的playTone(int note, int duration, int volume)方法实现。

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;

public class MediaMIDlet extends MIDlet implements CommandListener{
private Player mp;
private Display display;
private List list;
private Command exitCommand = new Command("Exit", Command.EXIT, 2);
private Command playCommand = new Command("Play", Command.ITEM, 1);

public MediaMIDlet() {
 display = Display.getDisplay(this);
 list = new List("Demo", List.IMPLICIT);
}

public void startApp() {
 list.addCommand(exitCommand);
 list.addCommand(playCommand);
 list.setCommandListener(this);

 display.setCurrent(list);
}

public void destroyApp(boolean unconditional) {}

public void pauseApp() {}

public void commandAction(Command c, Displayable s) {
 if (c == exitCommand) {
  destroyApp(false);
  notifyDestroyed();
 }
 if (c == playCommand) {
  simpleTone();
 }
}

private void simpleTone() {
 try {
  Manager.playTone(ToneControl.C4, 100, 80);
 } catch (Exception ex){}
}
}

  如果音符不是中音C,设定声音中的音调需要些技巧。如上所示,事实上ToneControl类中的常量属性来表示中音C:ToneControl.C4。还有一个特殊的常量表示不发声:ToneControl.SILENCE。下一节介绍如何利用这些现成的代码构架来创作一段曲调。


1 2  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • J2ME网络应用程序性能探讨
  • 克服J2ME开发中的困难之硬件设备
  • MIDlets实现用户界面(GUI)编程
  • 利用J2ME开发联网程序实例
  • 用J2ME在移动设备上实现动画
  • 民营家电商排队造手机 设备商全面杀入
  • 英特尔澄清杨旭任职传闻 官方没宣布此消息
  • 国资委河北密制联通拆分方案
  • 垃圾邮件害人害企害国 清除垃圾邮件不手软
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索