本文目錄一覽:
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種色彩,達到128×160的解析度,該顯示屏還採用了特別的光柵設計,可減小像素間距,以獲得更佳的圖像質量。
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了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/229181.html