J2ME手机高级编程(信息科学与技术丛书移动与嵌入式开发系列)
分類: 图书,电子与通信,移动通信,
品牌: 汪永松
基本信息·出版社:机械工业出版社
·页码:297 页
·出版日期:2009年
·ISBN:7111271890/9787111271895
·条形码:9787111271895
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:信息科学与技术丛书移动与嵌入式开发系列
产品信息有问题吗?请帮我们更新产品信息。
内容简介《J2ME手机高级编程》从J2ME手机平台的当前主流应用和发展趋势出发,立足实际的开发案例,介绍了J2ME手机平台开发的实用技术和应用模式。本书的内容主要包括:手机文件系统、网络通信、无线通信(短信通信、彩信通信和蓝牙通信)、底层用户界面应用(游戏开发和电子地图浏览)、多媒体编程(音乐播放器、视频播放器和摄像头视频采集等)、持久化应用、移动商务应用(对象数据库Db4o和嵌入式关系型数据库Derby)和XML模型应用等。
《J2ME手机高级编程》主要面向具有一定Java平台开发经验的开发人员,或者对手机平台开发感兴趣的Java程序员。对于初学者,笔者希望通过本书可以帮助他们快速熟悉开发环境、掌握学习手机平台开发的方法,并对J2ME手机平台框架形成清晰的认识。对于高级开发人员,笔者相信本书在蓝牙通信、电子地图、多媒体编程和移动商务应用方面会给他们带来一定的启发。
本书的源代码可从http://www.cmpbook.com/下载。
编辑推荐《J2ME手机高级编程》是由机械工业出版社出版的。短信通信、彩信通信和蓝牙通信。游戏开发和电子地图浏览。音乐播放器、视频播放器和摄像头视频采集。持久化应用、移动商务应用和XML模型应用。
目录
出版说明
前言
第1章 J2ME开发起步 1
1.1 引言 1
1.2 常用概念及缩略语 1
1.3 J2ME平台透析 2
1.3.1 J2ME平台的内涵 2
1.3.2 J2ME平台的外延 4
1.4 J2ME平台技术概要 6
1.4.1 let架构 6
1.4.2 通用连接框架 6
1.4.3 无线电技术 6
1.4.4 液晶设备用户界面 6
1.4.5 多媒体框架 7
1.4.6 持久化 7
1.4.7 个人信息管理 7
1.4.8 JAXP和Web Service 7
1.4.9 JDBC 7
1.5 写在开发之前的经验 7
1.5.1 从MIDlet到Piglet 7
1.5.2 由奢入俭难-克服资源限制 8
1.5.3 死锁预防无处不在 8
1.5.4 淮橘北枳-模拟器环境与实机的距离 9
第2章 开发及验证环境 10
2.1 开发环境 10
2.1.1 集成开发环境 10
2.1.2 源代码编辑工具 12
2.1.3 模板代码 13
2.2 开发资料的获取 20
2.3 验证环境 21
2.3.1 模拟器 21
2.3.2 实机-NOKIA 5310 21
第3章 文件系统 22
3.1 文件系统开发概述 22
3.2 J2ME文件系统概述 22
3.2.1 JSR 75规范 22
3.2.2 文件可选包的引入 23
3.2.3 使用文件可选包的步骤 23
3.3 手机文件浏览器 24
3.3.1 功能说明 24
3.3.2 设计分析 24
3.3.3 实现过程 25
3.4 手机文件选择组件 37
3.4.1 手机文件选择组件开发概述 37
3.4.2 文件选择功能组件化的考虑 37
3.4.3 功能说明 38
3.4.4 设计说明 38
3.4.5 文件选择功能组件化小结 43
3.5 手机文件浏览器在实机上运行的注意事项 44
3.5.1 内存不足 44
3.5.2 安全确认提示 44
3.6 API参考资料 44
第4章 网络通信 45
4.1 J2ME网络通信概述 45
4.2 网络通信的要点 45
4.2.1 GCF应用模式 45
4.2.2 无线网络应用 47
4.3 HTTP通信 47
4.3.1 HTTP请求模式 47
4.3.2 HTTP通信状态检查 47
4.4 数据报通信过程 48
4.4.1 数据报服务端过程 48
4.4.2 数据报客户端过程 51
4.5 网络通信应用小结 54
4.6 API参考资料 54
第5章 无线通信 55
5.1 无线电技术回顾 55
5.1.1 第一次亲密接触:收音机 55
5.1.2 拇指一族与GSM/CDMA 55
5.1.3 蓝牙技术:分享你我的快乐 56
5.2 无线消息 56
5.2.1 无线消息开发概述 56
5.2.2 J2ME平台下的WMA 57
5.2.3 发送短信 57
5.2.4 发送彩信 61
5.2.5 WMAPI的使用要点 66
5.3 蓝牙通信 66
5.3.1 蓝牙通信概述 66
5.3.2 J2ME平台对蓝牙技术的支持 67
5.3.3 J2ME平台下蓝牙通信的实现 67
5.4 蓝牙设备通信 98
5.4.1 蓝牙设备概述 98
5.4.2 串口通信模式 98
5.4.3 通过串口读取蓝牙设备数据 98
5.5 API参考资料 99
第6章 底层用户界面开发 100
6.1 底层用户界面开发概述 100
6.1.1 底层与上层用户界面 100
6.1.2 移动设备屏幕的代表:Canvas 101
6.1.3 底层用户界面的开发模式 101
6.2 《碰运气》游戏 101
6.2.1 J2ME平台对游戏开发的支持 102
6.2.2 《碰运气》游戏的功能说明 102
6.2.3 设计分析 102
6.3 电子地图浏览器 122
6.3.1 电子地图浏览器功能分析 123
6.3.2 实现电子地图浏览器 124
6.3.3 电子地图应用小结 139
6.4 底层用户界面应用小结 140
6.5 API参考资料 140
第7章 多媒体开发 141
7.1 多媒体框架概述 141
7.2 音乐播放器 141
7.2.1 音乐播放器开发引言 141
7.2.2 音乐播放器的功能说明 142
7.2.3 音乐播放池 142
7.2.4 设计分析 142
7.2.5 音乐播放器的实现过程 143
7.2.6 对音乐播放器开发的探讨 151
7.3 视频播放器 152
7.3.1 视频播放器开发引言 152
7.3.2 视频播放器的功能说明 153
7.3.3 视频播放池 153
7.3.4 设计分析 153
7.3.5 视频播放器的实现过程 154
7.3.6 对视频播放器开发的探讨 162
7.4 手机摄像头视频采集 164
7.4.1 摄像头视频采集说明 164
7.4.2 摄像头视频采集核心开发过程 165
7.4.3 手机摄像头视频采集的应用 167
7.5 图片管理 167
7.5.1 图片显示模式 167
7.5.2 底层图像处理 171
7.6 动画播放 171
7.6.1 动画播放概述 171
7.6.2 动画的实现原理及方法 171
7.6.3 设计过程 172
7.7 展望Java TV 173
7.8 ATI参考资料 173
第8章 持久化应用 174
8.1 持久化概述 174
8.2 持久化方案 174
8.2.1 文件 174
8.2.2 嵌入式数据库 175
8.3 RMS 175
8.3.1 RMS概述 175
8.3.2 J2ME中RMS的功能介绍 176
8.3.3 RMS功能说明 176
8.3.4 RMS功能的实现 177
8.3.5 使用RMS实现日记账管理 181
8.3.6 RMS开发小结 187
8.4 RMS API参考资料 187
第9章 移动商务应用 188
9.1 移动商务应用模式 188
9.1.1 手机平台与桌面平台数据共享 188
9.1.2 以手机平台作为Backoffice系统 188
9.2 PIM 189
9.2.1 PIM包介绍 190
9.2.2 使用PIM实现手机联系方式共享 190
9.2.3 PIM应用小结 196
9.2.4 在实机上访问PIM的注意事项 197
9.3 对象数据库在J2ME平台的应用 197
9.3.1 对象数据库Db4o简介 197
9.3.2 J2ME对Db4o的支持 198
9.3.3 Db4o API简介 198
9.3.4 对象数据库应用 199
9.3.5 使用Db4o实现日记账管理 200
9.3.6 对象数据库的使用心得 212
9.4 嵌入式数据库在J2ME平台的应用 212
9.4.1 嵌入式数据库概述 212
9.4.2 嵌入式数据库Derby 213
9.4.3 在J2ME平台中使用Derby 213
9.4.4 JDBC应用基础 216
9.4.5 使用Derby嵌入式数据库引擎 224
9.4.6 使用Derby实现日记账管理 227
9.4.7 嵌入式数据库的使用心得 239
9.5 API参考资料 239
第10章 XML模型应用 240
10.1 JAXP概述 240
10.2 XML数据模型 241
10.3 在J2ME平台下的JAXP可选包 241
10.4 在J2ME平台下的XML模型应用实例 242
10.4.1 依据数据模型定义对象结构 242
10.4.2 创建SAX解析器 244
10.4.3 解析处理过程 244
10.4.4 XML解析线程 246
10.4.5 解析处理者 249
10.4.6 数据内容显示控制 250
10.4.7 行政区划查询工具用户界面 251
10.5 XML数据模型应用展望 256
10.6 J2SE与J2ME平台结合应用 256
10.6.1 什么是DdlUtils 256
10.6.2 DdlUtils在Mobile Client方面的应用 257
10.6.3 DdlUtils核心Package和一些主要的类/接口 258
10.6.4 使用DdlUtils的前提 259
10.6.5 DdlUtils的核心概念 260
10.6.6 Mobile Client的开发流程 260
10.6.7 结束语 265
10.7 API参考资料 266
第11章 手机系统信息和程序安装 267
11.1 获取系统信息 267
11.1.1 获取设备信息 267
11.1.2 获取具体的系统信息 268
11.1.3 获取MIDlet属性 269
11.1.4 获取系统信息实例 271
11.2 安装手机程序 276
11.2.1 查看手机的J2ME配置 276
11.2.2 设置开发环境中J2ME平台的支持版本 277
11.2.3 安装手机程序的方式 278
11.2.4 在手机上查看安装程序 280
附录 281
附录A RMS记录管理常用的API 281
附录B JDBC常用封装函数 287
附录C 随书源代码的使用说明 297
参考文献 298
……[看更多目录]
序言对于正在或者曾经在J2ME平台上进行开发的程序员来说,J2ME平台开发这个话题也许算是老生常谈了。但是反过来讲,哪些才算是移动平台开发的新主题呢?
2008年对于移动平台来说也许是不平静的一年。自从Google公司在2007年底正式发布Android手机平台之后,就开始大张旗鼓地为第一款Android手机的推出作准备,并宣布这款手机将在2008年底面市。2008年4月,微软在CTIA Wireless大会上正式发布了Windows Mobile 6.1,除了大范围对已有软件进行升级外,还为智能手机和PDA设备带来了大量的增强型新特性。同年6月,世界最大的移动电话生产商NOKIA终于下定决心收购了全球最大的手机操作系统开发商Symbian,以此来应对Google Android等日益增长的竞争威胁。2008年9月,Google公司如约推出第一款Android平台的手机:美国运营商T-Mobile USA 在纽约正式发布第一款Google 手机-T-Mobile G1,再次掀起了全球手机平台之争的波澜。
然而在这些各式各样的手机平台纷争的背景下,Java在手机平台开发方面始终占据一席之地:Android提供的SDK本身就是Java开发的,Symbian的操作系统对J2ME的支持是最好的,Windows Mobile以及其他基于Linux系统的手机平台也都支持Java虚拟机……Java突出的开放性似乎早已决定了其在手机平台开发方面的主导地位,其良好的实用性在一个又一个平台中不断得到体现。
从Java平台的演变史来说,在20世纪90年代末期,由于互联网浪潮的推动,PC市场份额不断扩大,Java平台如鱼得水,在桌面平台和互联网应用领域的优秀表现令人瞩目,并逐步从桌面平台先后剥离出J2EE和J2ME平台,内容涵盖了从嵌入式设备到企业级应用,从而形成了完整的Java平台体系。从性质上讲,前者是封闭式、面向嵌入式应用的平台,而后者却是开放式、面向企业应用的平台。笔者不能判定孰轻孰重,只能说是各有千秋,因为这些平台和技术都是由应用而产生,所以说实用之道才是王道。
随着2008年冬季的来临,全球经济形势进一步恶化,众多的IT企业和员工也开始进入了漫长、寒冷的“冬天”。这从侧面向IT企业和开发人员提出了一个问题:如何才能让技术和应用更加具有竞争力和生命力?不言而喻,只有实实在在地给客户和社会带来益处的应用,而不是空泛的噱头和一些空洞的概念,才能够被更好地接受。
基于以上总结和思考,笔者力求在透彻地介绍J2ME平台开发的每一项技术时,也努力地表述如何学习和思考这些技术及其应用模式。希望读者不仅能立足于当前,更能做到举一反三;不仅真正地学会如何在J2ME手机平台上开发出具有实用价值的程序,还可以平稳地转移到其他的手机平台进行开发,例如Android平台。
本书的特色
本书内容最为鲜明的有3点:第一点,结合笔者的实际开发经验,将J2ME平台的很多概念(例如,配置、功能子集、let框架等)简单化、通俗化,不仅令人印象深刻,而且还能很好地用于启发理解其他的技术平台;第二点,笔者非常关注初学者的实践动手过程,对于开发环境的搭建,可选包的引入以及API资料的获取都进行了详尽的说明,力求保证初学者能够做到亲自动手实践,从而尽快打开J2ME平台开发之门;第三点,重点介绍各种J2ME技术的应用模型,并配以详细的开发过程及心得要点,最终以实机环境来验证开发结果。通过对应用模型的分析和探讨,让开发目标能够紧密结合客户的实际应用。通过实机环境来暴露只有在实际J2ME手机平台开发过程中才能遇到的很多问题,而通过这些在模拟器上无法遇到的挫折,才能够让读者对实际的J2ME手机平台开发产生深入、全面的认识。
本书内容的编排
本书的内容安排大致上遵循“由表及里,由内而外,由专项到综合”,即从大致的概要、框架到具体的技术内容;从系统内部(本地文件系统等)到系统外部(网络通信、无线通信等);从专项的J2ME技术(文件系统、无线通信、网络通信、用户界面等)到结合多种技术的应用(多媒体开发、移动商务应用等)。
第1章介绍J2ME平台开发的基础和技术概要。第2章介绍如何搭建开发及验证环境。通过这两章,读者可以了解J2ME平台的主要概念、框架和技术,并学会搭建开发环境,了解如何获取和使用开发资料,并在此基础上进行初步的开发。
作为了解手机设备本地系统的第一步,第3章介绍文件系统的应用。通过这一章,读者可对手机平台文件系统形成比较深入的认识,熟悉J2ME文件连接可选包的使用,了解如何结合桌面平台来扩展手机平台的应用。
而作为手机平台与外部系统沟通的第一步,第4章和第5章介绍网络通信和无线通信,包括Web访问,数据报应用以及短信、彩信和蓝牙通信等。通过这些应用实例,读者可以了解手机平台的通信方式和无线通信应用模式,从而打开手机系统与外部交互的大门。
在读者具备通用用户界面基础开发技能的前提下,第6章主要介绍底层用户界面的编程,并以一款《碰运气》游戏和电子地图浏览器来详细介绍底层用户界面的应用模型和发展方向。通过这些内容,希望读者能够熟练掌握手机系统的底层用户界面编程技巧。
在读者了解了文件系统、无线通信技术以及用户界面后,第7章介绍了年轻读者最感兴趣的手机多媒体编程。其内容包括音乐播放、视频播放、动画播放、摄像头视频采集等。通过将这些程序移植到实机的实践过程,让读者深刻体会到移动平台开发的“玄机”和艰辛。
等到读者玩够了(游戏开发)、听够了(音乐播放器)和看够了(视频播放器),接下来就应该做“正事”了。第8章介绍了记录管理系统在持久化方面的应用;第9章介绍了手机个人信息管理,对象数据库Db4o以及关系型数据库Derby等嵌入式数据库在J2ME平台上的商务应用。第10章介绍了XML模型在J2ME平台上的应用以及与其他Java平台的结合应用。第11章介绍了有关手机的系统信息和如何安装手机程序。通过在实机上运行程序让读者从开发的成果中获得成就。
本书中的一些约定
注意 提醒读者应该给予重视的内容。
提示 给出对读者有所帮助的一些技巧。
本书的全部源代码按章划分父文件夹,以工程文件夹为单位存放。源代码的使用可以参考附录C(随书源代码的使用说明)。
(1)大括号格式。本书代码的大括号格式为K&R格式(Brian Kernighan和Dennis Ritchie,经典著作《C程序设计语言》的作者),即开括号总是与使用它的语句在同一行,而闭括号总是位于它所关闭的语句的下一行,并且与该语句对齐。见代码Q-1中第1行和第8行中的大括号。
(2)命名方式。本书代码的函数名采用与J2ME平台相同的方式,即首单词小写,后续单词的首字母大写。例如,代码Q-1中第3行的showMe和第6行的sendMMS方法。
变量名也采用与函数名相同的形式,但是首部分是该变量类型的缩写(有点类似匈牙利命名法),例如,第2行的cmdDiscard和第5行的cmdSend变量,首部的cmd表示该变量类型为Command。
类名采用骆驼命名法,例如,MMSSendPanel、MainMIDlet、MainPanel。
包名全部采用小写单词,例如,filechooser、mms。
养成良好的编码风格对于任何程序员来说都是十分重要的,可以说编码风格是判断一个程序员是不是“老手”的标杆。对于刚起步的程序员,在编码过程中首先要树立编码风格的意识,再通过不断地实践和摸索,才能逐步形成自己的编码风格。
最后,希望朋友们开发成功!
文摘插图:
7.3.2视频播放器的功能说明
作为一款实用的手机视频播放器,不仅要考虑界面的个性化,而且还要考虑较高的播放效率和手机厂商对视频媒体类型的支持。
(1)实现播放的基本功能。它包括播放控制、音量调节、扩展卡资源读取支持等。
(2)流畅的播放效果。本案例中采用播放池(Playel Poo1)策略,这一策略将使播放过程更为流畅。
(3)完全满足手机厂商所支持的视频媒体类型,支持尽可能多的视频媒体类型。本案例中采用的是系统自动匹配的策略,即由手机系统本身来识别播放视频类型。
由于模拟器环境和实机环境的差异,在实际开发中可能会遇到一些问题。
7.3.3视频播放池
引进播放池的策略主要是为了克服播放视频文件时由于创建和销毁播放器对象(Player)而影响效率的情形。通过播放池方式,可将所有的播放器对象放入池中进行管理,播放指定的视频文件时只需要在播放池中获取对应的播放器对象进行播放即可,而无须重新初始化播放器状态。这种方式的另外一个优点是还可以记录该视频文件的播放状态,例如,播放位置、屏幕设置、音量值等。
当然,采用播放池的方式会增加内存的消耗,在实施过程中需要结合硬件配置对池的大小进行调整。
7.3.4设计分析
手机视频播放器工程定义了5个类:
(1)PlayerMIDlet,主MIDlet也是整个程序的入口,程序启动时显示播放列表面板。
(2)VideoPanel,播放列表面板,它为程序主界面,负责播放列表和对象池管理。
(3)PoolHelper,对象池帮助类,负责生成播放对象池。
(4)PlayCanvas,播放画布,用来装载媒体播放。