胡冰群 耿蕊 北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院
智能手機(jī)短信自動轉(zhuǎn)發(fā)應(yīng)用程序開發(fā)*
胡冰群 耿蕊 北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院
在移動智能手機(jī)走入人們?nèi)粘I畹耐瑫r,遺忘手機(jī)的現(xiàn)象也變得越來越平常。手機(jī)遺忘會嚴(yán)重影響及時接聽電話和獲取信息,對于生活在信息大爆炸社會的人們來說,這也許就意味著機(jī)會的喪失,造成不必要的經(jīng)濟(jì)損失,甚至?xí)绊懙郊彝サ姆€(wěn)定與和諧。此項目就是基于Android操作系統(tǒng),開發(fā)應(yīng)用程序,讓移動智能手機(jī)用戶能夠通過指令遠(yuǎn)程控制手機(jī),將手機(jī)接收到的短消息以及未接來電記錄上傳到PC端,完成信息的及時獲取。
安卓操作系統(tǒng) 特殊字段識別 短消息轉(zhuǎn)發(fā)
隨著移動通信技術(shù)向前發(fā)展,越來越多的移動通信產(chǎn)品不斷普及。移動智能手機(jī)不再是遙不可及的奢侈品,伴隨其銷售價格逐漸平民化,已完全走入大眾的日常生活,為人們帶來了便捷的通信服務(wù),成為人們?nèi)粘I畈豢苫蛉钡闹匾ぞ摺?/p>
移動智能手機(jī)主要是指像個人電腦一樣,具有獨(dú)立的操作系統(tǒng),可以由用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,通過此類程序來不斷擴(kuò)充手機(jī)的功能,并可以通過移動通訊網(wǎng)絡(luò)來實(shí)現(xiàn)無線網(wǎng)絡(luò)接入的一類手機(jī)的總稱。當(dāng)前,移動智能手機(jī)的操作系統(tǒng)主要以Android、iOS和Windows Mobile 3種為主,其中尤以Android為甚。Android以其獨(dú)有的開源模式占據(jù)75%的市場份額,在谷歌將其收購之后,已經(jīng)成為全球最受歡迎的智能手機(jī)開發(fā)平臺之一。此平臺為開發(fā)人員提供了大量的實(shí)用庫和工具,使開發(fā)人員可以很快速地創(chuàng)建自己的應(yīng)用。
Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)(見圖1)。Android底層以Linux內(nèi)核為基礎(chǔ),由C語言開發(fā),只提供基本功能。中間層包括函數(shù)庫、虛擬機(jī),由C++開發(fā)。最上層是各種應(yīng)用軟件,包括通話、短信、電子郵件、瀏覽器、日歷、地圖等。開發(fā)人員可以用自己編寫的應(yīng)用程序來代替Android平臺提供的應(yīng)用程序。
基于Android平臺的開源優(yōu)勢和構(gòu)架優(yōu)勢,開發(fā)應(yīng)用程序就變得非常方便。本文就是基于Android操作系統(tǒng),開發(fā)應(yīng)用程序,讓移動智能手機(jī)用戶能夠通過指令遠(yuǎn)程控制手機(jī),將手機(jī)接收到的短消息轉(zhuǎn)移到指定的手機(jī)號上,完成信息的及時獲取。
用戶在手機(jī)上安裝此應(yīng)用并設(shè)置屬于自己的個性化特殊字段,當(dāng)手機(jī)被遺忘時,可以使用另一部手機(jī)向被遺忘的手機(jī)發(fā)送該特殊字段,則被遺忘手機(jī)里的未讀短信內(nèi)容、條數(shù)以及來信號碼就會被轉(zhuǎn)發(fā)至現(xiàn)有手機(jī)上。若用戶的手機(jī)開通了運(yùn)營商的來電提醒業(yè)務(wù),那么此應(yīng)用也能非常方便地將運(yùn)營商的來電提醒短信轉(zhuǎn)發(fā)到用戶指定的手機(jī)上。
眾所周知,在移動智能手機(jī)走入人們?nèi)粘I畹耐瑫r,遺忘手機(jī)的現(xiàn)象也變得越來越平常。手機(jī)遺忘會嚴(yán)重影響及時接聽電話和獲取信息,對于生活在信息大爆炸社會的人們來說,這也許就意味著機(jī)會的喪失,造成不必要的經(jīng)濟(jì)損失,甚至?xí)绊懙郊彝サ姆€(wěn)定與和諧。如果能夠擁有此應(yīng)用,那么人們的生活將會更加便捷。
以下是針對Windows環(huán)境下,安裝Android開發(fā)環(huán)境所需的程序步驟:
(1)安裝JDK(Java Development Kit)。根據(jù)提示安裝到本地磁盤上,各平臺的JDK可以在http://java. sun.com網(wǎng)站下載。
圖1 Androidr系統(tǒng)框架
(2)下載Eclipse。下載地址為http://www.eclipse. org/downloads/,下載時選擇“Eclipse IDE for Java Developers”或“Eclipse IDE for Java EE Developers”這兩種版本。Eclipse集成開發(fā)環(huán)境不需要安裝即可執(zhí)行,解壓到適當(dāng)目錄下即可。
(3)安裝安卓開發(fā)工具擴(kuò)展包ADT(見圖2)。打開Eclipse文件目錄下的Eclipse圖標(biāo),啟動Eclipse。選擇“Help”下的“Software Updates”或“Install New Software”進(jìn)入以下對話框:
選擇“Add”進(jìn)入新的對話框。在彈出的對話框中Location一欄里輸入以下網(wǎng)址:http://dl-ssl.google. com/android/eclipse/site.xml,完成后選擇“OK”。全選“Developer Tools”中的選項。選擇“Next”,按照指示安裝。
(4)下載SDK。在下載網(wǎng)址:http://developer. android.com/sdk/index.html上下載SDK(Software Development Kit),解壓之后進(jìn)入SDK的安裝。啟動Eclipse,在菜單欄上Window下選擇Preference選項,會彈出一個窗口。點(diǎn)選左側(cè)“Android”標(biāo)簽,在“SDK Location”一欄處點(diǎn)選“Browse”,選擇下載好的SDK文件所在的目錄,按下“OK”即可。
這些步驟完成之后通常還是不能正常使用,還需要設(shè)置環(huán)境變量。右鍵點(diǎn)“我的電腦”圖標(biāo),在彈出菜單中依次選擇“屬性”—“高級系統(tǒng)設(shè)置”—“環(huán)境變量”。在用戶變量中新建“ANDROID_SDK_HOME”,在變量值一欄中填寫android-sdk-windows下tools的路徑(如E:android-sdk-windows ools)。在系統(tǒng)變量中找到變量“PATH”,將上述路徑加到變量值末尾即可。這樣,Eclipse集成開發(fā)環(huán)境便搭建完成了。
3.1 總體方案
基于Android操作系統(tǒng),利用系統(tǒng)提供的接口,開發(fā)應(yīng)用程序進(jìn)行短消息特殊字段識別,控制移動智能手機(jī)完成模式變換,進(jìn)入自動短消息轉(zhuǎn)發(fā)狀態(tài)。主要包括特殊字段設(shè)計、短消息特殊字段識別模塊開發(fā)、短消息自動轉(zhuǎn)發(fā)模塊開發(fā)、程序界面開發(fā)幾個部分。該應(yīng)用功能流程如圖3所示。
3.2 特殊字段初始化及設(shè)置
圖2 ADT安裝
圖3 功能實(shí)現(xiàn)流程
為了避免應(yīng)用程序在接收到正常短消息時,誤判為遠(yuǎn)程控制指令進(jìn)行誤操作,需要對應(yīng)用程序中要使用的遠(yuǎn)程控制指令進(jìn)行特殊字段設(shè)計。在軟件未啟動時,先設(shè)置一個初始值為“找回短信”,private static String a=“找回短信”;軟件未打開時,向該手機(jī)發(fā)送“找回短信”即可將未讀短信轉(zhuǎn)發(fā)向目標(biāo)手機(jī)。軟件打開的情況下,用戶可以根據(jù)喜好去設(shè)置特殊字段,但是要注意字段的特殊性,避免上述誤判情況。
3.3 短消息內(nèi)容識別及電話號碼提取原理
短消息在Android操作系統(tǒng)中是以數(shù)據(jù)庫的形式進(jìn)行存儲的,主要包含以下幾個字段:
應(yīng)用程序通過Android操作系統(tǒng)提供的相應(yīng)接口,可以完成對數(shù)據(jù)庫中指定的短消息的讀取,對讀取出的短消息Body部分的內(nèi)容進(jìn)行比對判斷,如果與定義的特殊字段相同,則提取短消息Person部分的內(nèi)容進(jìn)行保存,作為后續(xù)進(jìn)行短消息轉(zhuǎn)發(fā)的目標(biāo)號碼。
對于遺忘手機(jī)的人來說,只需向安裝了短信轉(zhuǎn)發(fā)軟件的手機(jī)發(fā)送已設(shè)置的特殊字段即可享受到短信的轉(zhuǎn)發(fā)服務(wù)。
3.4 短消息轉(zhuǎn)發(fā)原理
應(yīng)用程序可以通過Android操作系統(tǒng)提供的相應(yīng)接口,獲取新近接收到的短消息Person、Subject和Body幾個部分內(nèi)容,組成新的短消息Body,同時使用特殊指令識別得到的電話號碼,利用Android操作系統(tǒng)提供短消息發(fā)送功能,完成相應(yīng)的短消息轉(zhuǎn)發(fā)。
3.5 權(quán)限配置
Android在開發(fā)時要充分考慮安全問題,為了防止病毒等惡意程序的入侵,Android提供了權(quán)限管理,在使用到所有敏感功能時,必須在配置文件中列出所需要使用的權(quán)限。Android的Manifest.xml文件位于安卓的根目錄下,它聲明了Android應(yīng)用程序所必須具備的權(quán)限。手機(jī)遺忘救星在實(shí)現(xiàn)其功能時需要提取用戶手機(jī)中未讀的短信,提取發(fā)送短信的聯(lián)系人號碼,并且將短信轉(zhuǎn)發(fā)出去,因此需要在配置系統(tǒng)文件Manifest.xml時,設(shè)置如下系統(tǒng)權(quán)限:
3.6 資源配置
res目錄下的文件,顧名思義,是用來存放程序所用到的所有資源。drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi4個不同的drawable文件夾用于存放不同分辨率的圖片,可將開發(fā)所需的圖片分類放置在這些目錄下,以方便后續(xù)使用;在layout目錄下的xml格式界面描述文件用于表述應(yīng)用程序的界面布局,也用于描述界面和接口組件;values中的xml文件是參數(shù)描述,主要用于在代碼中通過R類來調(diào)用,這樣可將代碼和資源分開管理。
例如:string.xml用來定義所需的字符串和數(shù)值。例如遺忘救星所需字符串資源可配置如下:
同時,可新建xml文件,用來定義其他所需資源,例如colors.xml(定義顏色)、dimens.xml(定義尺寸)等。
3.7 主程序的開發(fā)
用Eclipse新建一個Android應(yīng)用程序項目后,開發(fā)環(huán)境會自動為該項目創(chuàng)建相關(guān)目錄,開發(fā)人員可以方便地分類管理資源。src目錄存放了Android應(yīng)用程序所有的程序源代碼。開發(fā)人員的主要開發(fā)過程就是在開發(fā)src目錄下的程序代碼。
為防止用戶忘記設(shè)置特殊字段,本程序設(shè)置了一個特殊字段初始值——“找回短信”。在新建的ParamInfo.java中使用如下代碼:
程序首先從獲得接收到的特殊字段,與預(yù)設(shè)值進(jìn)行比對,同時獲得發(fā)送特殊字段的手機(jī)的號碼,即短信轉(zhuǎn)發(fā)的目標(biāo)號碼。與此同時還可判斷未讀短信的數(shù)量。主要實(shí)現(xiàn)方法如下:
當(dāng)程序判斷到有系統(tǒng)接收到短信時,通過pdus獲得接收到的所有短信消息,獲取短信內(nèi)容,并且構(gòu)建短信對象數(shù)組,用來實(shí)現(xiàn)手機(jī)短信轉(zhuǎn)發(fā)內(nèi)容的重組。
獲取短信發(fā)送者,發(fā)送內(nèi)容以及發(fā)送時間:
為了人機(jī)交互的簡潔實(shí)用,手機(jī)遺忘救星的界面設(shè)計比較簡單。主要界面分布及跳轉(zhuǎn)如圖4所示。
4.1 界面布局
圖4 界面設(shè)計及頁面跳轉(zhuǎn)
遺忘救星的界面主要包括首頁、使用指南、特殊字段設(shè)置界面。主頁有兩個按鈕,即使用指南以及設(shè)置。設(shè)置界面包括一個輸入框以及3個按鈕,分別是確定、重置以及返回首頁。
主界面是一個系統(tǒng)的開始,能夠?qū)崿F(xiàn)各個模塊的切換。主界面的布局代碼主要在res/layout下的activity_main.xml下編寫。設(shè)置界面是在res/layout下新建的set_main.xml下編寫。界面布局有兩種實(shí)現(xiàn)方式,一種是通過代碼實(shí)現(xiàn),另一種更簡單的方法是通過palette中現(xiàn)有的直接添加。為了能夠在點(diǎn)擊按鈕之后,實(shí)現(xiàn)相應(yīng)的跳轉(zhuǎn)以及功能,需要為每個按鈕添加點(diǎn)擊事件監(jiān)聽器OnClickListener,為了能夠在代碼中識別該按鈕,每個按鈕都有一個唯一的標(biāo)示符,就是它的id屬性。例如幫助按鈕的id可設(shè)置為android:id="@+id/ helpbutton"。程序在判斷特殊字段是否匹配時需要獲取文本框中用戶輸入的特殊字段,因此EditText也需要添加id屬性android:id="@+id/text_distinct"。添加事件監(jiān)聽代碼如下:
4.2 界面功能模塊開發(fā)
遺忘救星最關(guān)鍵的界面就是特殊字段的設(shè)置界面,包括設(shè)置特殊字段并保存功能、重置功能以及首頁的返回,用switch語句即可實(shí)現(xiàn)。
特殊字段設(shè)置及保存功能實(shí)現(xiàn)代碼如下:
重置按鈕功能實(shí)現(xiàn)如下:
5.1 預(yù)期目標(biāo)
短信轉(zhuǎn)發(fā)軟件在未啟動狀態(tài),手機(jī)接收到未讀短信時,向該手機(jī)發(fā)送“找回短信”,則發(fā)送方將會收到未讀短信的內(nèi)容、聯(lián)系人號碼以及手機(jī)里未讀短信的條數(shù)。
軟件啟動之后,用戶可設(shè)置自己的特殊字段,當(dāng)手機(jī)里有未讀短信時,向該手機(jī)發(fā)送設(shè)置好的特殊字段,發(fā)送方將會同樣收到未讀短信的內(nèi)容、聯(lián)系人號碼以及手機(jī)里未讀短信的條數(shù)。
5.2 測試過程及總結(jié)
第一次完成該軟件時,只用了一部手機(jī)進(jìn)行測試,發(fā)現(xiàn)功能正常。但是,用兩部手機(jī)進(jìn)行測試時,發(fā)現(xiàn)短信實(shí)際上是轉(zhuǎn)發(fā)到原手機(jī)上。于是進(jìn)行調(diào)試,發(fā)現(xiàn)目標(biāo)號碼提取錯誤。經(jīng)過修改,功能可以正常實(shí)現(xiàn)。但是,使用的前提是手機(jī)系統(tǒng)短信的彈窗提醒必須關(guān)閉,否則程序?qū)棿岸绦乓暈橐炎x就無法實(shí)現(xiàn)功能。另外,某些品牌的手機(jī)測試失敗,估計是手機(jī)出廠權(quán)限設(shè)置的影響,或者需要刷機(jī)獲取權(quán)限后方可使用。
1 吳亞峰,于復(fù)興.Android應(yīng)用開發(fā)完全自學(xué)手冊.人民郵電出版社
2014-12-24)
本科生培養(yǎng)—大學(xué)生科研訓(xùn)練(市級)項目(PXM2014_014224_000079)資助