在学习之前,我们先简要解析几个概念,总结如下:
-
JET:一个在嵌入式设备上的音乐播放器(JET is an interactive music player for small embedded devices, including the those running the Android platform)
-
JET engine:一个控制游戏声音特效的引擎,其使用MIDI格式,并可以控制游戏的时间进度(一个精确的时钟是一个游戏必不可少)。
说到这里让我想起来,在学习DirectShow的时候,发现DirectShow也是通过声卡上的时间,来进行音/视频同步,毕竟硬件设备的时钟精确度比较高。JetPlayer则是Android SDK中提供的控制JET engine的类。
关于MIDI(Musical Instrument Digital Interface:乐器数码接口)我们简要说明下:
- MIDI是用于在音乐合成器(music synthesizers)、乐器(musical instruments)和计算机之间交换音乐信息的一种标准协议;
- MIDI不是声音信号,在MIDI电缆上传递的不是声音,而是发送给MIDI设备或其它装置让它产生声音或执行某个动作的指令;
- MIDI主要有以下优点:生成的文件比较小,因为MIDI存储的是命令,而不是声音波形;容易编辑命令比编辑声音波形要容易的多;可以作为背景音乐,因为MIDI音乐可以和其他的媒体,比如数字电视、图形、动画等一起播放,这样可以加强演示效果;
- 每个物理MIDI通道(MIDI channel)分成16个逻辑通道,每个逻辑通道可以指定一种乐器,在MIDI信息中,用4个二进制位来表示这16个逻辑通道;
- MIDI数据是一套音乐符号的定义,而不是实际的音乐,所以MIDI文件的内容被称为MIDI消息(MIDI message/MIDI event)。一个MIDI消息由1个8位的状态字节并通常跟着2个数字字节组成。在状态字节中,最高有效位设置为“1”,低4位用来表示这个MIDI消息是属于那个通道的,其余3位的设置表示这个MIDI消息是什么类型(通道消息-channel message,系统消息-system message)。
有了以上的基础知识,我们再来看Android SDK中的SONiVOX JETCreator User Manual这篇文章中的一些说明就简单多了,部分摘要如下:
从上面的说明中我们可以发现,*.jet文件包含多个Segment,而每个SegMent又包含多个Track,一个Track是MIDI Event的序列。MIDI Event的结构在前面已经详细说明了,下面我们就开始进入本篇幅的主题。
首先,通过JetCreator authoring tool 来创建一个*.jet 文件
JetCreator authoring tool是使用Python编写的,在安装前需要安装Python and WXWidgets,安装好这更工具后,就可以使用这个工具来制作*.jet文件,这部分的详细说明,大家可以到Android SDK中Audio Video部分的文档去仔细阅读吧。有了*.jet文件,我们就可以通过JetPlayer来播放器中的声音效果,比如JetBoy游戏中的激光的声音。
然后,解析JetPlayer.OnJetEventListener 接口
结合我们前面的介绍,这几个接口函数是不是看起来就明白多了,唯一需要说的参数userID,这个参数是个标记,在程序中可以自己设置。
最后,解析JetPlayer 类
JetPlayer 是个单体类(a singleton class.),使用Static函数getJetPlayer(),就可以获取得到这个实例。JetPlayer类内部有个存放segment的队列,JetPlayer类的主要作用就是向队列中添加segment或者清空队列,其次就是控制segment的track是否处于打开状态。
至于如何使用是比较简单的,主要还是*.jet文件的制作上,以后有机会再为大家慢慢介绍如何制作*.jet文件,下一篇幅我们将介绍核心代码分析。
分享到:
相关推荐
【Android源码解析——JetBoy飞机游戏开发】 在Android平台上,开发者可以利用Java或Kotlin等语言编写游戏,其中JetBoy是一款经典的2D飞行射击游戏,它的源码为我们提供了深入理解Android游戏开发的宝贵资源。本文...
【标题】"jetboy android游戏 源码"所涉及的知识点主要集中在Android游戏开发上,特别是使用Eclipse IDE和Android SDK 1.6版本进行的项目开发。这是一个基于Java编程语言的游戏源码,让我们来深入探讨一下相关的核心...
《深入解析Android JetBoy飞机游戏源码》 在Android开发领域,通过研究开源项目源码是提升技术能力的重要途径之一。本篇文章将针对"Android应用源码之JetBoy飞机游戏源码"进行深入剖析,旨在帮助读者理解Android...
在JetBoy游戏中,这个类可能是以`GameActivity`或类似命名的类,它继承自Android的`Activity`,并实现了游戏逻辑。 3. **游戏场景**:游戏通常由多个场景组成,例如游戏主界面、游戏进行中、游戏结束等。这些场景在...
JetBoy飞机游戏源码提供了一个全面的学习实例,让我们深入探讨一下这个项目中的关键知识点。 1. **游戏架构设计** - **Activity与Fragment**:游戏主界面可能由一个或多个Activity和Fragment组成,用于管理用户...
《Android应用源码之JetBoy飞机游戏源码》是一份专为IT计算机专业学生和开发者设计的毕业设计资源,旨在帮助他们深入理解Android应用开发,特别是游戏开发的实践过程。这个压缩包包含了完整的JetBoy飞机游戏的源代码...
Android应用源码之JetBoy飞机游戏源码.zip项目安卓应用源码下载Android应用源码之JetBoy飞机游戏源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
7. **游戏开发**:如果"JetBoy"是一个游戏,那么可能涉及到更多的游戏引擎技术,如Cocos2d-x或Unity,也可能包含物理引擎、动画序列、游戏逻辑等相关代码。 8. **软件工程实践**:良好的代码结构、注释、单元测试、...
标题“JetBoy.zip”暗示我们正在处理一个与编程相关的压缩文件,很可能是一个软件或游戏项目的源代码。描述中提到“源码参考,欢迎下载”,这表明这个文件是为那些希望学习、研究或改进代码的人准备的。由于没有提供...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
该示例展示了如何使用 `SurfaceView` 来处理复杂的图形效果,并且特别介绍了如何利用 `JetPlayer` 类来实现游戏音效。 - **技术要点**: - 使用 `SurfaceView` 和 `JetPlayer` 类。 - 游戏音效的设计与集成。 - ...
根据提供的压缩包子文件“JetBoy”,我们可以推测这可能是一款飞行冒险类游戏,玩家控制的角色可能是“JetBoy”,在空中进行飞行和躲避障碍。游戏可能包含了分数系统、关卡设计以及各种挑战。为了深入了解这款游戏,...
JetBoy可能是另一个演示应用,展示如何在Android上实现2D游戏。通过分析这个应用,开发者可以学习如何处理游戏循环、动画效果以及游戏状态管理。 综上所述,Android 2.2 simple包含了各种示例和功能,旨在帮助...
【标题】JetBoyView.rar_boy 指的是一个与"JetBoy View"相关的源代码压缩包,适用于Linux操作系统。 【描述】"Jet Boy View Source Code for Linux" 提供了关键信息,说明这个压缩包包含了Jet Boy View项目的源代码...
《Android移动开发案例详解》作为《Android平台手机软件...实用软件(如音乐播放器、天气预报、多媒体播放器、短信语音播报、手机远程监控器等),游戏软件(如JetBoy、连连看、贪吃蛇等)以及其他程序的详细开发过程。
- 新建一个Android项目,例如Android Sample Project,选择JetBoy示例。 - 在Package Explorer中右击项目,选择Run As > Android Application,如果出现Android模拟器并成功运行应用,说明环境搭建完成。 以上...
A game that demonstrates the SONiVOX JET interactive music technology, with JetPlayer. Live Wallpaper An application that demonstrates how to create a live wallpaper and bundle it in an application ...