本文目录一览:
java工程师需要具备哪些技能,怎样考证
一位优秀的Java开发工程师需要身怀以下十项技能:
1、语法:必须比较熟悉,在写代码的时候,IDE(Integrated Development Environment,集成开发环境)的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误,并且知道任何修正。
2、命令:必须熟悉JDK(Java Development Kit,Java开发工具箱——JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。)带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API(Application Programming Interface,应用程序编程接口):Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
◆java.lang包下的80%以上的类的功能的灵活运用。
◆java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer.
◆java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
◆java.math包下的100%的内容。
◆java.net包下的60%以上的内容,对各个类的功能比较熟悉。
◆java.text包下的60%以上的内容,特别是各种格式化类。
◆熟练运用JDBC. 80%、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
◆AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
◆Swing的基本内容,和AWT的要求类似。
◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试:Junit测试是程序员测试,即所谓白盒测试。一位合格的Java开发工程师必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:必须熟悉使用Ant(中文译为蚂蚁,是一种基于Java的build工具。)完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP(Object Oriented Programming,面向对象编程)的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
10、博学:掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
关于手机
Java扩展
Java是由Sun微系统公司所发展出来的程序语言,它本身是一种对象导向(Object-Oriented)的程序语言。JAVA目前在手机上应用最多的就是JAVA游戏。
Java也号称是能跨平台使用的语言,这主要是因为Java本身被编译之后,并不是直接产生可执行的码,而是产生一种中间码叫作 ByteCode,这种码必需在透过 Java 的直译器来解读它,才能够真正的被执行,所以只要平台上装有这种Java的直译器,就能解读ByteCode也就能执行Java编译过的程序,故与Java程序是在那种平台上被编译的,就完全没有干系了。Java写出来的程序可分为两类,分别是Java Applet与一般的Application,而Application 这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJava是一个浏览器,且就是使用Java程序所发展出来的。最常见的Java程序包括应用程序和applets。应用程序是单独的程序,诸如HotJava浏览器软件就是用Java语言编写的。 Applets类似于应用程序,但是它们不能单独运行, Applets可以在支持Java的浏览器中运行。Applet主要是内置于HTML网页中,在浏览时发挥作用。
Java的目标是为了满足在一个充满各式各样不同种机器,不同操作系统平台的网络环境中开发软件。利用Java程序语言,可以在网页中加入各式各样的动态效果。可以放上一段动画,加入声音,也可以建立交互式网页等。
Java手机软件平台
Java手机软件平台采用的基本Java平台是CLDC (Connected Limited Device Configuration)和MIDP (Mobile Information Device Profile),是J2ME (Java 2 Micro Edition)的一部分,在中国一般称为“无线Java”技术。此前,有人把它叫做“K-Java”;其实,K-Java的叫法只是Sun公司在开发KVM Java虚拟机时的项目代号,在该技术被正式命名为KVM后,就不再用K-Java了。
KJava即J2ME(Java 2 Micro Edition),是Sun公司专门用于嵌入式设备的Java软件。以KJava编程语言为手机开发应用程序,可以为手机用户提供游戏、个人信息处理、电子地图、股票等服务程序。J2ME(Java 2 Micro Edition)是致力于消费产品和嵌入式设备的最佳解决方案。J2ME在设计其规格的时候,遵循着“对于各种不同的装置而造出一个单一的开发系统是没有意义的事”这个基本原则。于是J2ME先将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机);另外一种是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱)。因为这两种区分,所以Java引入了一个叫做Configuration的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为Connected Device Configuration(CDC)规格。也就是说,J2ME先把所有的嵌入式装置利用Configuration的概念区隔成两种抽象的型态。
Java技术的开放性、安全性和庞大的社会已有资源,以及其跨平台性,即“编写一次,到处运行”的特点,使Java技术成为智能手机软件平台的事实标准。采用Java技术后,编写应用程序和提供服务的人就不必关心接受其服务的手机采用的是什么操作系统和芯片,只要按照Java的要求去写程序就好了;同样,生产手机的厂商也不必顾虑将来谁来提供增值服务。可以看出,采用Java技术,可以建立完整、高效的无线数据增值服务产业链,从而为用户提供灵活、个性化、内容方式多样的服务。
Java手机发展现状
到今年6月,全世界已经有大约1亿部Java手机在使用,除中国大陆外共有53个移动运行商正式推出了基于Java技术的无线数据增值服务。中国移动通信集团已经建立了无线Java增值服务体系,并推出了“百宝箱”等服务品牌,包括游戏百宝箱、娱乐百宝箱、商务百宝箱、生活百宝箱等,已经于2003年7月10日开始正式商用。
中国联通公司也正在其CDMA 1X网络上建立无线Java增值服务体系,目前系统正在建设过程中,并且2003年9月26日中国联通、北京振戎融通公司和Sun公司在人民大会堂宣布联合发起成立“UniJa技术联盟”,三方将在联通CDMA 1X网络上的Java增值服务方面全面合作。
红外和蓝牙
红外接口是新一代手机的配置标准,它支持手机与电脑以及其他数字设备进行数据交流。红外通讯有着成本低廉、连接方便、简单易用和结构紧凑的特点,因此在小型的移动设备中获得了广泛的应用。通过红外接口,各类移动设备可以自由进行数据交换。
红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。由于红外线的波长较短,对障碍物的衍射能力差,所以更适合应用在需要短距离无线通讯的场合,进行点对点的直线数据传输。红外数据协会(IRDA)将红外数据通讯所采用的光波波长的范围限定在850nm至900nm之内。
配备有红外接口的手机进行无线上网非常简单,不需要连接线和PC CARD,只要设置好红外连接协议就能直接上网。
红外接口是目前在世界范围内被广泛使用的一种无线连接技术,被众多的硬件和软件平台所支持;通过数据电脉冲和红外光脉冲之间的相互转换实现无线的数据收发。
红外接口的特点:
用来取代点对点的线缆连接
新的通讯标准兼容早期的通讯标准
小角度(30度锥角以内),短距离,点对点直线数据传输,保密性强
传输速率较高,目前4M速率的FIR技术已被广泛使用,16M速率的VFIR技术已经发布
红外技术的主要优点:
其使手机和电脑间可以无线传输数据;
可以再同样具备红外接口的设备间进行信息交流;
同时红外接口可以省去下载或其他信息交流所发生的费用;
由于需要对接才能传输信息,安全性较强;
红外技术缺点:
通讯距离短,通讯过程中不能移动,遇障碍物通讯中断;
红外通讯技术的主要目的是取代线缆连接进行无线数据传输,功能单一,扩展性差。
红外技术特征
红外线通信技术适合于低成本、跨平台、点对点高速数据连接,尤其是嵌入式系统。
红外线技术的主要应用:设备互联、信息网关。设备互联后可完成不同设备内文件与信息的交换。信息网关负责连接信息终端和互联网。
红外通讯技术已被全球范围内的众多软硬件厂商所支持和采用,目前主流的软件和硬件平台均提供对它的支持。红外技术已被广泛应用在移动计算和移动通讯的设备中。
蓝牙接口
蓝牙是一种支持设备短距离通信(一般是10m之内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。蓝牙的标准是IEEE802.15,工作在2.4GHz 频带,带宽为1Mb/s。
“蓝牙”(Bluetooth)原是一位在10世纪统一丹麦的国王,他将当时的瑞典、芬兰与丹麦统一起来。用他的名字来命名这种新的技术标准,含有将四分五裂的局面统一起来的意思。蓝牙技术使用高速跳频(FH,Frequency Hopping)和时分多址(TDMA,Time DivesionMuli―access)等先进技术,在近距离内最廉价地将几台数字化设备(各种移动设备、固定通信设备、计算机及其终端设备、各种数字数据系统,如数字照相机、数字摄像机等,甚至各种家用电器、自动化设备)呈网状链接起来。蓝牙技术将是网络中各种外围设备接口的统一桥梁,它消除了设备之间的连线,取而代之以无线连接。
蓝牙是一种短距的无线通讯技术,电子装置彼此可以透过蓝牙而连接起来,省去了传统的电线。透过芯片上的无线接收器,配有蓝牙技术的电子产品能够在十公尺的距离内彼此相通,传输速度可以达到每秒钟1兆字节。以往红外线接口的传输技术需要电子装置在视线之内的距离,而现在有了蓝牙技术,这样的麻烦也可以免除了。
手机上的四种操作系统
手机操作系统一般只应用在高端智能化手机上。目前,在智能手机市场上,中国市场仍以个人信息管理型手机为主,随着更多厂商的加入,整体市场的竞争已经开始呈现出分散化的态势。从市场容量、竞争状态和应用状况上来看,整个市场仍处于启动阶段。
目前应用在手机上的操作系统主要有PalmOS、Symbian、Windows CE和Linux四种。
相关术语:
Palm OS操作系统
Palm OS操作系统由Palm公司自行开发的,并授权给Handspring、索尼和高通等设备厂家,这种操作系统更倾向于PDA的操作系统。
Palm OS在PDA市场占有主导地位。Palm的产品线本身就包括智能手机,又宣布与最早的智能手机开发者Handspring购并,同时将软件部门独立。
Symbian系统
Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝芽、SyncML、以及3G技术。最重要的是它是一个标准化的开放式平台,任何人都可以为支持Symbian的设备开发软件。与微软产品不同的是,Symbian将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,能很好的适应不同方式输入的平台,也可以使厂商可以为自己的产品制作更加友好的操作界面,符合个性化的潮流,这也是用户能见到不同样子的symbian系统的主要原因。现在为这个平台开发的java程序已经开始在互联网上盛行。用户可以通过安装这些软件,扩展手机功能。
在Symbian发展阶段,出现了三个分支:分别是Crystal、Pearl和Quarz。前两个主要针对通讯器市场,也是出现在手机上最多的,是今后智能手机操作系统的主力军。第一款基于Symabian系统的手机是2000年上市的某款爱立信手机。而真正较为成熟的同时引起人们注意的则是2001年上市的诺基亚9210,它采用了Crystal分支的系统。而2002年推出的诺基亚7650与3650则是Symbian Pearl分系的机型,其中7650是第一款基于2.5G网的智能手机产品,他们都属于Symbian的6.0版本。索尼爱立信推出的一款机型也使用了Symbian的Pearl分支,版本已经发展到7.0,是专为3G网络而开发的,可以说代表了当今最强大的手机操作系统。此外,Symbian从6.0版本就开始支持外接存储设备,如MMC,CF卡等,这让它强大的扩展能力得以充分发挥,使存放更多的软件以及各种大容量的多媒体文件成为了可能。
Windows CE系统
Windows CE系统包括 Pocket PC和Smartphone,前者针对无线PDA,后者专为手机,已有多个来自IT业的新手机厂商使用,增长率较快。
Pocket PC 2002 推出了应用在手机上的Phone Edition(电话版本),国内贴牌机多普达686就使用了这个系统。不过它在移动通讯方面的功能并不是很全面。针对这种情况,微软于2002年底发布了专门为手机开发的操作系统SmartPhone2002,像symbian Pearl一样,是专为移动通讯设备开发的系统。
虽然从众多手机厂商的反应来看,全球手机五大厂商中只有三星购买了微软的软件许可,所以其在手机市场上占有率还很低。
Linux系统
Linux系统件是一个源代码开放的操作系统,目前已经有很多版本流行。但尚未得到较广泛的支持。
MMS
MMS是Multimedia Messaging Service的缩写,中文译为多媒体信息服务,也称“彩信”,是按照3GPP的标准也是WAP论坛的标准有关多媒体信息的标准开发的最新业务,它最大的特色就是支持多媒体功能,可以在GPRS、CDMA 1X、3G、EDGE的支持下,以WAP无线应用协议为载体传送视频短片、图片、声音和文字,传送方式除了在手机间传送外,还可以是手机与电脑之间的传送。具有MMS功能的移动电话的独特之处在于其内置的媒体编辑器,使用户可以很方便地编写多媒体信息。如果手机具有一个内置或外置的照相机,用户便可以制作出PowerPoint格式的信息或电子明信片,并把他们传送给朋友或同事。目前,这一应用服务已逐渐走向成熟,成为主流的短信格式。
MMS是继SMS(文本短信服务)、EMS(增强型短信服务)之后的“第三代短信服务”。SMS只能收发文本信息,EMS可以在文本短信中加入铃声、简单的图形和简单的动画,MMS大大扩展了可收发的媒介类型,文本、简单图片和铃声均可传输,复杂的图片如照片、大型的图表以及音乐片段的传送、视频剪辑则能更好的发挥MMS的作用。
MMS的工业标准是由两个组织,WAP Forum(WAP论坛)和3GPP(3G Partnership Project:3G伙伴计划)所制订的。因此,MMS是设计成可以在WAP协议的上层运行,它不局限于传输格式,既支持电路交换数据格式(circuit-switched data),也支持通用分组无线服务GPRS格式(general packet radio service)。其工作原理为利用高速传输技术EDGE(Enhanced Data rates for GSM Erolution是一种提高数据速率的新技术,是GSM向第三代移动通信系统IMT-2000过渡的台阶。它也被称为GSM 384,因为这种技术能使数据速率由目前的9.6kbit/s提高到384kbit/s,这种速率可以支持语音、因特网浏览、电子邮件、会议电视等多种高速数据业务)和GPRS的支持下,以WAP(无线应用协议)为载体传送视频、图片、声音和文字。
关于液晶屏的详细解释
随着手机彩屏的逐渐普遍,手机屏幕的材质也越来越显得重要。手机的彩色屏幕因为LCD品质和研发技术不同而有所差异,其种类大致有TFT 、TFD、UFB、STN和OLED几种。一般来说能显示的颜色越多越能显示复杂的图象,画面的层次也更丰富。
除去上面这几大类LCD外,还能在一些手机上看到其他的一些LCD,比如日本SHARP的GF屏幕和CG(连续结晶硅)LCD。两种LCD相比较属于完全不同的种类,GF为STN的改良,能够提高LCD的亮度,而CG则是高精度优质LCD可以达到QVGA(240×320)像素规格的分辨率。
UFB、STN、TFT比较
STN是早期彩屏的主要器件,最初只能显示256色,虽然经过技术改造可以显示4096色甚至65536色,不过现在一般的STN仍然是256色的,优点是:价格低,能耗小。
TFT的亮度好,对比度高,层次感强,颜色鲜艳。缺点是比较耗电,成本较高。
UFB是专门为移动电话和PDA设计的显示屏,它的特点是:超薄,高亮度。可以显示65536色,分辨率可以达到128×160的分辨率。UFB显示屏采用的是特别的光栅设计,可以减小像素间距,获得更佳的图片质量。UFB结合了STN和TFT的优点:耗电比TFT少,价格和STN差不多。
相关术语:
STN屏幕
STN(Super Twisted Nematic)屏幕,又称为超扭曲向列型液晶显示屏幕。在传统单色液晶显示器上加入了彩色滤光片,并将单色显示矩阵中的每一像素分成三个像素,分别通过彩色滤光片显示红、绿、蓝三原色,以此达到显示彩色的作用,颜色以淡绿色为和橘色为主。STN屏幕属于反射式LCD,它的好处是功耗小,但在比较暗的环境中清晰度较差。
STN也是我们接触得最多的材质类型,目前主要有CSTN和DSTN之分,它属于被动矩阵式LCD器件,所以功耗小、省电,但么应时间较慢,为200毫秒。
CSTN一般采用传送式照明方式,必须使用外光源照明,称为背光,照明光源要安装在LCD的背后。
TFT屏幕
TFT(Thin Film Transistor)即薄膜场效应晶体管,属于有源矩阵液晶显示器中的一种。它可以“主动地”对屏幕上的各个独立的像素进行控制,这样可以大大提高反应时间。一般TFT的反应时间比较快,约80毫秒,而且可视角度大,一般可达到130度左右,主要运用在高端产品。所谓薄膜场效应晶体管,是指液晶显示器上的每一液晶象素点都是由集成在其后的薄膜晶体管来驱动。从而可以做到高速度、高亮度、高对比度显示屏幕信息。TFT属于有源矩阵液晶显示器,在技术上采用了“主动式矩阵”的方式来驱动,方法是利用薄膜技术所作成的电晶体电极,利用扫描的方法“主动拉”控制任意一个显示点的开与关,光源照射时先通过下偏光板向上透出,借助液晶分子传导光线,通过遮光和透光来达到显示的目的。
TFT-LCD液晶显示屏是薄膜晶体管型液晶显示屏,也就是“真彩”(TFT)。TFT液晶为每个像素都设有一个半导体开关,每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以TFT液晶的色彩更真。TFT液晶显示屏的特点是亮度好、对比度高、层次感强、颜色鲜艳,但也存在着比较耗电和成本较高的不足。TFT液晶技术加快了手机彩屏的发展。新一代的彩屏手机中很多都支持65536色显示,有的甚至支持16万色显示,这时TFT的高对比度,色彩丰富的优势就非常重要了。
TFT型的液晶显示器主要的构成包括:萤光管、导光板、偏光板、滤光板、玻璃基板、配向膜、液晶材料、薄模式晶体管等等。
TFD屏幕
TFD(Thin Film Diode)屏幕,又称为薄膜二极管半透式液晶显示屏。TFD技术由精工和爱普生公司开发出来,专门用在手机屏幕上。它是TFT和STN的折中,比STN的亮度和色彩饱和度更好,也比TFT省电。最大特点是无论在关闭背光(反射模式)或打开背光(透射模式)条件下都能提供高画质、易观看的显示,并具有低功耗、高画质、高反应速度等优点。
UFB屏幕
UFB LCD是2002年3月,三星公司发布的一款手机用新型液晶显示器件,具有超薄、高亮度的特点。UFB-LCD是专为移动电话和PDA设计的显示屏,具有超薄、高亮度的特点,可显示65536种色彩,达到128x160的分辨率,该显示屏还采用了特别的光栅设计,可减小像素间距,以获得更佳的图像质量。
UFB液晶显示屏的对比度是STN液晶显示屏的两倍,在65536色时亮度与TFT显示屏不相上下,而耗电量比TFT显示屏少,并且售价与STN显示屏差不多,可说是结合这两种现有产品的优点于一身。
OLED屏幕
OLED (Organic Light Emitting Display)即有机发光显示器,在手机LCD上属于新型产品,被称誉为“梦幻显示器”。OLED显示技术与传统的LCD显示方式不同,无需背光灯,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光。而且OLED显示屏幕可以做得更轻更薄,可视角度更大,并且能够显著的节省耗电量。目前在OLED的二大技术体系中,低分子OLED技术为日本掌握,而高分子的PLED(LG手机的所谓OEL就是这个体系的产品)的技术及专利则由英国的科技公司CDT的掌握,两者相比PLED产品的彩色化上仍有一定困难。
不过,虽然将来技术更优秀的OLED可能会取代TFT等LCD,但有机发光显示技术还存在着使用寿命短、屏幕大型化难等缺陷。
手机天线
无线电发射机输出的射频信号功率,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去。电磁波到达接收地点后,由天线接下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机。可见,天线是发射和接收电磁波的一个重要的无线电设备,没有天线也就没有无线电通信。
天线品种繁多,以供不同频率、不同用途、不同场合、不同要求等不同情况下使用。
内、外置天线比较
目前手机天线主要就内置及外置天线两种,内置天线客观上必然比外置天线弱。天线的架设都是尽量远离地面和建筑物的,天线接近参考地的时候,大部分能量将集中在天线和参考地之间,而无法顺利发射,所以天线发射,需要一个“尽量开放”的空间。而手机电路版就是手机天线的参考地,让天线远离手机其他电路,是提高手机天线发射效率的关键。
但受到实际环境限制以及大家追求携带方便的要求,手机的设计就必须在电气方面做出妥协。实际上,所有的GSM手机的接收发送电路的增益都是是可以根据环境变化而自动调节的,能通过合理的参数设定,会自动补偿有关的损失。所以,就手机整体而言,在信号比较好情况下,内天线和外天线并不能看出差别。
差别是有的,在信号很弱的情况,外天线尤其是长天线的信号死点门限将高于内天线,也就是理论上内天线手机比较容易在弱信号环境丢失信号。
辐射问题,天线效率的下降必须以大的发射功率补偿,相同条件下内天线的辐射会比外天线大。但人体实际受到的辐射和整机结构有关,内天线手机也可以通过合理安排天线位置,抵消辐射对人体的影响。
辐射问题
手机的辐射主要是手机的天线发射模块带来的,手机的天线做得十分粗大,它的作用就是为了减小发射的阻力。
可以说手机天线是手机的辐射源,而把所谓的防磁贴贴在听音器上面也是不行的,因为这样会改变天线周围的磁场,使得天线的信号发生变化,使得通话不能正常进行收藏 分享 评分
手机端ios和android浏览器 如何实现mms广播电台在线音频播放?
从软件的功能角度来讲,Mms分为对话列表,消息列表,短信编辑,彩信编辑,短信显示,彩信显示和配置。
从实现的角度来看,它分为GUI展示层,发送/接收,彩信解析,彩信附件,信息数据等,这些分类对应着源码中的各种包。
源码导航
Mms的源码的位置在于android/packages/apps/Mms
其中Mms/src/com/android/mms里面都是Mms相关的代码,而Mms/src/org/w3c/dom里面是一个类库,主要用于彩信格式的解析和显示。这里主要讲一下Mms/src/com/android/mms下面的一些包和类的主要用途。
ui---GUI展示层,用于展示对话列表,消息列表,消息编辑页,彩信附件编辑,彩信展示,播放幻灯片。负责直接与用户交互。
•ConversationListAdapter.java---对话列表的Adapter用于给显示层ConversationList绑定数据。
•ConversationListItemData.java---代表对话列表中的每一项的数据结构,里面含有要在对话列表中展示的信息。
•ConversationList.java------这是对话列表的显示窗口Activity,它是一个ListActivity,这几个类都是对话列表的相关类,用于显示,编辑和管理所有的对话。
•ComposeMessageActivity.java----这个是核心的窗口Activity,编辑信息,显示一条对话Thread中的所有往来信息。MessageListView会加在其上面,另外,AttachmentEditor也会加在其上面。这个Activity也负责响应外部应用程序,发送SENDTO或SEND等请求Intent,比如外部应用想要发送信息,等就由这个Activity来响应。
•MessageItem.java---代表一个信息的抽象数据,它包含了信息相关的所有内容,比如信息的主题,消息内容,来信地址,附件内容等等。它的所有数据都是公共的内部成员,都可以直接访问。
•MessageListAdapter.java---用于给消息列表显示层(由ComposeMessageActivity创建,绑定到MessageListView上)绑定数据。
•MessageListView.java---用于显示消息列表,继承自ListView,其生命周期由ComposeMessageActivity来控制,显示与否也由它来控制。
•MessageListItem.java---是一个布局,用于显示和控制消息列表中的每一个消息的显示。
•AttachmentTypeSelectorAdapter.java---用于添加附件件时的一个支持的附件列表,它就是一个菜单。
•AttachmentEditor.java---用于在编辑MMS彩信信息时,显示已添加的附件,它的生命周期由ComposeMessageActivity来控制,显示与否也是由ComposeMessageActivity来控制,当有彩信附件时,它就会显示,否则就被Hide。它是一个布局管理器,管理着下面四个布局,根据附件的类型动态的显示下面四个View中的某一个。
•AudioAttachmentView.java---在编辑信息器中用于显示音频附件,它是继承自线性布局。并不在代码中直接使用,而是在布局文件中来当成布局管理器使用。
•ImageAttachmentView.java---在编辑信息器中用于显示图片附件,它是继承自线性布局。并不在代码中直接使用,而是在布局文件中来当成布局管理器使用。
•SlideshowAttachmentView.java---在编辑信息器中用于显示幻灯片附件,它是继承自线性布局。并不在代码中直接使用,而是在布局文件中来当成布局管理器使用。
•VideoAttachmentView.java---在编辑信息器中用于显示视频附件,它是继承自线性布局。并不在代码中直接使用,而是在布局文件中来当成布局管理器使用。
•SlideshowActivity.java—用来全屏播放幻灯片,也即幻灯片的展示,因为彩信的创建和播放都是以幻灯片的方式进行的,也即一张一张的,每张上面可以文字,图片,视频和音频,每一张有浏览时长。
•SlideshowEditActivity.java---以列表方式管理幻灯片,也即是把所有的幻灯片用列表显示出来,用户可添加一页幻灯片,也可以点击进入编辑某页幻灯片,用于创建和编辑幻灯片。
•SlideshowEditor.java---用于编辑某页幻灯片,比如添加元素,删除元素和替换元素,这里的元素可以是图片,视频,音频和文字。也可以用于编辑整页幻灯片,比如删除某页幻灯片,调整这页幻灯片在所有幻灯片中的位置等。它是一个具体操作幻灯片的封装,SlideEditorActivity创建它并使用它来完成纪灯片的编辑。
•SlideshowPresenter.java---用于展示所有的幻灯片,也就是播放所有的幻灯片。由SlideshowActivity来创建和使用。
•SlideViewInterface.java---定义了一些用于显示一页幻灯片中的内容的接口,如设置图像,设置视频,设置音频,播放视频,播放音频,暂停,随机定位等等。附件显示的View:AudioAttachmentView,ImageAttachmentView,SlideshowAttachmentView和VideoAttachmentView均实现了此接口,这样AttachmentEditor就可以用统一的接口来控制内容的播放,而不用关心具体的内容是什么。
•SlideEditorActivity.java---用于编辑某页幻灯片,比如添加音频,添加视频,添加图像,添加文字等。它只是提供用户界面,让用户来操作各种按扭以达到添加元素,替换元素或是删除元素。而对具体的幻灯片的操作是通过SlideshowEditor来完成的,它主要负责与用户交互。
•SlideListItemView.java--- SlideshowEditActivity中列表的每一项的布局管理,继承自LinearLayout。
•MmsThumbnailPresenter.java---用于在消息列表中,显示彩信的缩略图,因为彩信的内容不固定,可能是图片,可能是音频,可能是视频也可能是幻灯片,所以用这个类来处理并显示彩信的缩略图。
•MessagingPreferenceActivity.java---Mms的配置信息编辑器,用来编辑和更改配置信息,继承息PreferenceActivity。它负责与用户交互,显示和更改配置。在Mms启动时,MmsConfig会从SharedPreference中读出配置信息,在运行时其他的类的配置信息都是从MmsConfig中获取的,MmsConfig提供了很多Get方法以获取配置信息。
•Presenter.java---用来展示附件的一个抽象类。
•PresenterFactory.java---工厂方法。
•RecipientsAdapter.java
•RecipientsEditor.java---用于显示信息编辑页面上面的收信人的编辑框,它可以有自动补全的功能,补全的数据由RecipientsAdapter来提供。
•ViewInterface.java---代表一个View的基类,用于Slideshow显示内容或是取缩略图。可以取View的长宽高等。
•BasicSlideEditorView.java---编辑某一页幻灯片时所用的布局,也就是在SlideEditorActivity.java中使用。
•EditSlideDurationActivity.java---顾名思义,用于编辑某一页幻灯片的浏览时长。
•ManageSimMessages.java---这个是在设置中使用的,用来管理SIM里的消息。在设置中有一项是管理SIM卡上面的消息。在Mms的设置Settings中有一个选项可以设置是把信息存储在SIM卡,还是存储在手机里。在收信时SmsReceiverService会查看这个设置然后把收到的信息写到相应的地址。ManageSimMessages也是以列表方式显示SIM里面的信息,提供了二个菜单:把信息存入手机和删除。
•NumberPickerButton.java---用于显示选择数字的按扭,在配置里面用。
•NumberPickerDialog.java---用于显示选择数字的对话框,在配置里面用。
•NumberPicker.java---用于在配置的时候选择数字。这几个NumerPicker主要是用于Settings中的。
•DeliveryReportActivity.java---信息发送情况报告。以列表的方式来显示
•DeliveryReportAdapter.java---相应的Adapter
•DeliveryReportItem.java---相应的数据,每一项的数据
•DeliveryReportListItem.java---相应每一项的布局。
data---用于操作当前正在编辑的信息的相关数据,比如联系人列表,比如当前对话,比如当前消息。负责管理当前正在编辑的信息和当前所处的对话以及当前信息用到的联系人。这些类都是在编辑信息的时候使用,由于这些多半都是用来管理数据的,而又无法直接做为对象传递给编辑器。所以它们的很多方法都是静态的,也就是这些类都近似单键。
•WorkingMessage.java---用来管理当前正在编辑的消息,它从创建,草稿到发送完成后一直存在,只要打开了编辑信息的页面就会创建一个WorkingMessage,直到退出编辑页面。
•Conversation.java---用来管理对话Threads,通常用来管理当前的对话,也就是进入的对话和正在进行操作的对话,它也用来管理对话列表,比如查询对话列表。
•Contact.java---用来代表一个联系人的信息,和管理联系人,加载联系人信息,其中还有相应的Cache。因为一个联系人的数据是比较多的包含名字,名,姓,各种电话号码,各种地址等等。因为Mms中直接使用Contact来作为联系人,所有信息都是直接从其中获取。另外,由于信息交互中也会涉及到联系人,因为收发信时可以直接使用一串电话号码,这时就需要有如添加联系人的功能。Contact中有很多异步的操作,比如加载联系人信息的时候或者更新Cache的时候都需要异步操作以不阻塞调用者。
•ContactList.java---是一个Contact的List列表它继承自ArrayListContact。用来管理一个Contact列表,或管理多个Contact。因为每个信息可以发送给多个联系人,这时就需要用到ContactList来管理这些收信人。也提供了一些方便存储和传递Contact的方法,比如把多个Contact转成String,或者转成String数组等。
•RecipientIdCache.java---用于保存所用到的Contact的Id和地址(电话)。每次WorkingMessage会更新这个Cache,然后ContactList会优先从这个Cache中查询联络人。
dom---用于解析彩信内容smil的工具包
drm---用于处理DRM的媒体文件的工具包
layout---为了满足特殊需要而改写的布局元素
model---这里面定义了彩信支持的附件数据结构和附件的组织方式。彩信可包含的内容有图片,视频,音频和文字。这些内容可以单独存在,也可以组合在一起。如果组合在一起就变成了幻灯片。用户可以用幻灯片的方式来创建含有多个媒体的附件,图文并茂的展示。每张幻灯片上面可以加视频,音频,图片和文字,但通常一张幻灯片上面只允许加一个图片或视频,文字是都可以添加的,音频在没有视频的情况下只可以添加的。播放的时候可以设置每张幻灯片的播放时长,以及文字的滚动速度等等。
•CarrierContentRestriction.java---是具体的彩信附件检查站,对于不支持的附件,或者附件大小超出限制,或者图像分辨率不对,或者图像超出尺寸,会抛出异常:UnsupportedContentTypeException,ResolutionException,ExceedMessageSizeException,ContentRestrictionException。
•ContentRestriction.java是用于检查附件的接口,外部直接使用这相接口,而具体实现是CarrierContentRestriction
•ContentRestrictionFactory.java是创建附件检查的工厂方法。外部通过这个工厂来创建一个ContentRestriction对象,然后使用其中定义的检查方法来进行附件内部检查。
•SmilHelper.java用于解析和处理附件中的Smil的工具类。
•IModelChangedObserver.java接口,用于监听附件内容有变化。
•Model.java---彩信附件的数据组织方式和管理方式是每一个附件都是一个Model的子类,它不但用于管理附件的具体数据,比如Uri,大小,文件名,位置等,也可以用于在GUI显示附件和查看附件。
•LayoutModel.java---继承自Model用于管理可视的附件的布局的类。它用来管理RegionModel等的基本元素。它就好比ViewGroup或LinearLayout,RelativeLayout等一些布局管理器,用来组织并管理布局基本元素也就是RegionModel的子类ImageModel,TextModel和VideoModel。
•RegionModel.java---继承自Model用于管理可视附件和布局,比如图像,视频和文字。特别是在显示可视附件的时候,用于控制可视附件在屏幕中的位置。一个RegionModel代表着一张幻灯片上的一块区域,它是幻灯片上的布局基本元素。好比UI元素中的View,但多在使用时都是使用它的子类,也就是ImageModel,TextModel和VideoModel。
•RegionMediaModel.java---继承自MediaModel,是用于多媒体附件中的可视部分的布局控制,主要用在附件的显示和播放幻灯片时的控制。它的子类是ImageModel,TextModel和VideoModel。
•MediaModel.java---继承自Model,代表媒体的数据结构,管理具体的附件数据,同时也用于管理附件的显示控制,比如图像的显示,音频和视频的播放控制等。
•MediaModelFactory.java---用于从一个Pdu附件中解析出来MediaModel,也就是把Pdu转化为Mms内部的附件数据。
•ImageModel.java—继承自RegionMediaModel用于管理图像附件和控制图像附件的显示。
•VideoModel.java---继承自RegionMediaModel用于管理视频附件和控制视频附件的播放。
•AudioModel.java----继承自MediaModel用于管理音频附件和控制音频附件的播放
•SlideModel.java----继承自Model用于管理一组附件,这些附件同一次显示给用户。就好像幻灯片的一片一样,每一个SlideModel里面有一个可以存储Model的列表,可以包含文字,音频,图像或视频,其上面的附件同时显示出来。
•SlideshowModel.java---继承自Model,用于管理一个彩信中的所有附件。其内含有一个存储SlideModel的列表,用于保存和控制一条彩信中的所有附件。另外它也负责显示这些附件,把一个个SlideModel组织起来,播放。它也负责着把这些Mms形式的附件(各种Model)转化为Android的附件Pdu,和从Pdu提出各自Model,因为Slideshow是应用程序层的彩信处理方式,而能发送和接收的彩信数据是Pdu。
•TextModel.java---继承自RegionMediaModel用于管理文字附件和控制文字附件的显示,比如按时间来滚动
util---这里面是整个Mms共享的工具类,其中全部都是单键或是直接使用类,不可以创建对象和以对象方式来使用
•AddressUtils.java---关于地址的工具类,目前只有一个getFrom()方法,用于获取发信人地址。
•DraftCache.java---用于标识哪些对话Thread有Draft,哪些没有,也就是用于管理和查询对话的草稿状态,有草稿还是没有。它里面维护了一个HashSet,里面包含了所有含有草稿的Thread Id。它里面也有一个HashSet用于存储OnDraftChangedListener,即当Thread的Draft状态有变化时,DraftCache会调用相应的Listener以告知相应模块,这个对话的草稿状态有所变化。可以通过DraftCache.setDraftState(threadId, state)来设置某个对话的草稿状态; 可以通过DraftCache.hasDraft(threadId)来查询某个对话是否含有草稿。
•Recycler.java---是一个抽象的工具类,里面定义了SmsRecycler和MmsRecycler,用于删除陈旧的消息,或者删除超过信息数量限制的信息。使用方法都是Recycler.getSmsRecycler.deleteOldMessages(context) 或者Recycler.getMmsRecycler.deleteOldMessages(context)
•SmileyParser.java---把标点式的表情符号转化为图形的表情,比如把用图标笑脸来代替。
•DownloadManager.java---不要被名字骗到,它并不是真正意义上的下载管理器,因为它并不负责任何与下载文件过程或下载文件的管理。它是用于管理与下载相关的配置信息,比如是否是自动下载,以及下载过程的各种通知,比如Notification Bar和Toast提示等。
•RateController.java
•SendingProgressTokenManager.java
transaction---对于Mms来讲是最底层的一个包,用户不可见,它负责发信息的最后处理和收信息的最初处理。主要是负责发送信息和接收信息。它并不是真正的发送和接收信息。是由系统Frameworks里面来负责接收和发送信息。这个包只是对于Mms应用层来讲是发送和接收。
•AbstractRetryScheme.java
•DefaultRetryScheme.java—这二个类是实现一种Retry机制,因为信息的发送与接收会受到环境的限制,比如现在手机没信号,或是网络连接不成功,那么就会把信息放到Pending队列里面,等一段时间再重新尝试发送与接收。这里的二个类就是为了实现此Retry机制。
•HttpUtils.java—彩信发送与接收的最底层实现者,它负责用HTTP协议接收和发送彩信到MMSC彩信服务中心。
•MessageSender.java—像其名字所预示的那样,它是为了发送信息而封装的一个接口,它里面只有一个方法sendMessage(),UI层只需要调用实现了这个接口的类即可发送信息。
•MessagingNotification.java—专门负责在Status Bar上面做Notification,比如新接收到了信息,或是信息发送失败,或是接收失败等。它被UI层,和底逻辑层共用着。
•MmsMessageSender.java—继承自MessageSender,专门用于发送彩信。它并不是做发送的事情,而是做一些错误检查和前期准备工作,然后启动TransactionService来做发送相关的事情。
•NotificationTransaction.java—继承自Transaction,负责接收彩信和更新通知(Notification)。当有一个新彩信时,Frameworks会先发出一个短信,称作彩信通知(NotificationIndication),其内含有彩信相关的信息(MMSC, 彩信的ContentLocation(URL)等),之后是由应用程序自己去MMSC用ContentLocation取彩信。这个NotificationTransaction就是专门用于处理彩信通知的,它会从MMSC上取出彩信数据(Pdu),把它写入数据库中,然后更新Notification。需要注意的是,只有彩信的设置是自动获取(“auto retrieve”)时,它才会去下载彩信,否则,它只处理彩信通知(Notification Indication),而不去下载彩信。
•Observable.java—里面定义了观察对象,Transaction是它的一个子类,其他的实体Transaction都是观察对象,里面有一个列表保存着观察者的引用,当一个Transaction完成时,或是有异常时就会调用notifyObservers()方法来把状态通知给观察者。
•Observer.java—观察者,TransactionService实现了这个接口。它是所有Transaction的观察者,以监听他们的状态和处理结果,因为所有的Transaction都 是异步的,所以才用观察模式来通知Transaction的处理结果。
•PrivilegedSmsReceiver.java—继承自SmsReceiver短信收信的事件监听者,负责监听新短信事件android.provider.Telephony.Intents.SMS_RECEIVED_ACTION(“android.provider.Telephony.SMS_RECEIVED”);当接收到这个Intent时表明有一个新短信。它会唤起SmsReceiverServier来处理短信。
•ProgressCallbackEntity.java
•PushReceiver.java—一个BroadcastReceiver专门用于接收彩信事件android.provider.Telephony.WAP_PUSH_RECEIVED_ACTION(“android.provider.Telephony.WAP_PUSH_RECEIVED”),它会先做一些预处理,然后启动TransactionService,TransactionService又会创建NotificationTransaction来处理这个彩信通知。
•ReadRecTransaction.java
•RetrieveTransaction.java—继承自Transaction,用于主动获取彩信数据。当彩信设置为非自动获取时,需要用户触发获取,TransactionService会创建一个RetrieveTransaction来获取彩信数据(Pdu),存入数据库,更新Notification等。
•RetryScheduler.java
•SendTransaction.java—继承自Transaction,用于发送彩信数据。
•SimFullReceiver.java
•SmsMessageSender.java—发送短信的封装,继承自MessageSender。它会启动SmsReceiverService来发送。
•SmsReceiver.java—是一个BroadcastReceiver,不要被其名字唬到,它并不负责接收新短信通知,相反,它用于发送信息,接收发送信息请求,并唤起SmsReceiverService来处理发送。这里可能是Android命名规则的原因,Android里的四大组件都喜欢把其组件的名字加上,比如ComposeMessageActivity,是一个Activity,TransactionService是一个Service,而这里SmsReceiver是一个BroadcastReceiver,它与接收短信(receiving Sms)没有关系。当然了,这完全是一个糟糕的命名。
•SmsReceiverService.java—它是一个Service,专门用于处理短信的发送与接收。它是由SmsReceiver和PrivilegedSmsReceiver监听事件,然后启动它的,自己并不会监听Intent事件。
•SmsRejectedReceiver.java
•SmsSingleRecipientSender.java—继承自SmsMessageSender,它针对一个收信人,调用Frameworks层接口发送信息,对于Mms应用来说,这是发送短信的最后一站,对就是说对于应用来说,它会把短信发送出去。
•TransactionBundle.java—Transaction所用的一个数据结构,用于给Transaction传送数据。
•Transaction.java—各种Transaction的基类,它里面定义了二个方法getPdu(),sendPdu()这二个方法是从MMSC取彩信数据,和向MMSC发送数据。它是对HttpUtils的一层包装。
•TransactionService.java—是一个Service,接收各种Transaction请求,然后处理Transaction。每个Transaction都 会开启新的线程异步的处理,所以当处理完成时又会通过Observer来通知TransactionService。
•TransactionSettings.java—彩信相关配置信息的数据结构,比如MMSC,Proxy,Port等。请求方可能会提供这些数据,如果提供就使用;否则就会从Telephony数据库加载默认的数据,这些数据与运营商和APN的设置有关。
•TransactionState.java—标识每一个Transaction处理情况的数据结构,很简单,只是标明处理成功还是失败,用于Transaction回调Observer(TransactionService)时用。
还有com/android/mms根目录下面的一些文件,其中绝大多数是定义的基类异常和一些公共的类。
•MmsApp.java---Mms Application会在应用进程启动的时候做一些必要的初始化工作,比如配置,下载,联系人,对话,Smiley解析器和通知等。
•MmsConfig.java---管理Mms的一些常用配置,比如彩信大小上限,彩信图片尺寸上限,收信人的个数上限等等。这些配置信息是保存在在res/xml/mms_config.xml里面。MmsApp在初始化时会调用MmsConfig.init(),在这里面会调用loadMmsSettings来解析mms_config.xml从而得到所需要的配置信息。其他的模块只通过MmsConfig来访问这些配置信息。
•LogTag.java---有关日志跟踪信息的控制。它可以方便的控制日志输出级别。但是实际上整个Mms代码中使用这个LogTag的地方并不多。
java 彩信发送(j2ee实现)
本人就是在中国移动做网信项目的,如果你是个人发送短信或彩信的话,需要使用短信猫,(北京中关村就可以买到,里面放上手机卡)。如果你是公司的话,你公司可以去移动申请mas机,然后走CMPP3.0协议进行发送,但是这样是需要移动开接口的,cmpp3.0是中国移动提供的,里面有标准的接口规范,你按照里面的规范编写代码就OK了