《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于Android平臺的自發(fā)短信系統(tǒng)設(shè)計與實(shí)現(xiàn)
基于Android平臺的自發(fā)短信系統(tǒng)設(shè)計與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第12期
倪紅軍1, 錢昌俊2
1. 南京師范大學(xué) 泰州學(xué)院 信息工程學(xué)院,江蘇 泰州 225300; 2. 泰州機(jī)電高等職業(yè)技術(shù)學(xué)校 信息工程系,江蘇 泰州 225300
摘要: 基于Android手機(jī)操作系統(tǒng)開發(fā)了一款自發(fā)短信系統(tǒng)。利用SQLite數(shù)據(jù)庫存儲技術(shù)、Service啟動服務(wù)技術(shù)及Runnable接口,設(shè)計并實(shí)現(xiàn)了好友管理、短信管理、后臺檢測發(fā)送短信等功能,并給出了運(yùn)行效果圖。該系統(tǒng)的實(shí)現(xiàn)為指定時間發(fā)送定制短信提供了很大的方便性。
中圖分類號: TN929.53
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)12-0126-04
Design and implementation of spontaneous SMS based on the Android platform
Ni Hongjun1, Qian Changjun2
1.School of Information Engineering, Taizhou College,Nanjing Normal University, Taizhou 225300, China; 2. Department of Information Engineering, Taizhou Higher Vocational School of Mechanical & Electrical Technology, Taizhou 225300, China
Abstract: The use of the Android mobile operating system developed a spontaneous SMS system. The use of SQLite database storage technology, Service services technology and Runnable interface, the design and implementation of the friends management, message management, background detection send text messages and other functions, and gives the effect diagram. The realization of the system for the specified time to send customized SMS provides great convenience.
Key words : SQLite; background detection; Service; spontaneous SMS

    隨著3G業(yè)務(wù)的全面推廣,使用手機(jī)進(jìn)行實(shí)時交流的需求也越來越大,短信服務(wù)由于其快捷方便和良好的交互性[1]廣受青睞。通常使用手機(jī)發(fā)送短信的形式比較單一,在需要發(fā)送信息時必須由人工干預(yù)將短信發(fā)送給一個或多個聯(lián)系人,而且同時發(fā)給多人時,短信內(nèi)容相同。而人們在繁忙的工作和學(xué)習(xí)中往往會忘記一些必要的短信祝福、合作提醒等。為了解決這一問題,本文在Android平臺下,采用SharedPreferences、SQLite進(jìn)行數(shù)據(jù)存儲,利用Service組件實(shí)現(xiàn)系統(tǒng)后臺運(yùn)行,使用BaseAdapter適配器進(jìn)行用戶界面顯示,設(shè)計了一個自發(fā)短信系統(tǒng)。該系統(tǒng)可以隨意設(shè)置短信內(nèi)容、發(fā)送時間,在指定的時間當(dāng)天,由系統(tǒng)自動給好友、生意伙伴等發(fā)送祝福短信、合作提醒,也可以設(shè)置給多人發(fā)送不同的短信。

1 Android系統(tǒng)
    Android是Google開發(fā)的基于Linux開放性內(nèi)核的手機(jī)操作系統(tǒng),目前已廣泛應(yīng)用于智能手機(jī)中。Android系統(tǒng)的軟件結(jié)構(gòu)包含操作系統(tǒng)、中間件及一些關(guān)鍵的平臺應(yīng)用程序。該系統(tǒng)采用軟件堆層(Software Stack)的架構(gòu)[2-3],主要分為4個部分:(1)應(yīng)用層,采用Java語言編寫,運(yùn)行在Dalvik虛擬機(jī),供用戶使用的應(yīng)用程序;(2)應(yīng)用框架層,使用API框架編寫Google發(fā)布的核心應(yīng)用,開發(fā)人員可以使用這些框架開發(fā)自己的應(yīng)用; (3)系統(tǒng)運(yùn)行庫層;(4)Linux內(nèi)核層,即硬件和軟件棧之間的抽象層,提供了Android系統(tǒng)的核心服務(wù)。
2 系統(tǒng)設(shè)計
    自發(fā)短信系統(tǒng)是用戶預(yù)先設(shè)定的信息內(nèi)容和發(fā)送時間的好友列表,系統(tǒng)每24 h檢測一次好友信息。當(dāng)好友的發(fā)送時間與手機(jī)設(shè)定時間一致時,就將該好友添加到發(fā)送集合中,由系統(tǒng)自動完成定制短信的發(fā)送。
2.1 系統(tǒng)功能設(shè)計
    按照用戶使用短信服務(wù)的習(xí)慣和需求,自發(fā)短信系統(tǒng)的主要功能模塊如圖1所示。

    (1)好友管理模塊:顯示已添加的好友信息(包括頭像、姓名、倒計時天數(shù)及發(fā)送狀態(tài)等);添加、修改、刪除好友信息。
    (2)短信管理模塊:顯示用戶設(shè)置的待發(fā)送短信內(nèi)容;修改短信內(nèi)容。
    (3)后臺檢測服務(wù)模塊:該模塊不間斷地在后臺運(yùn)行,檢測好友列表中的發(fā)送日期與手機(jī)日期是否相同。如果相同,則根據(jù)選定的短信內(nèi)容自動地向該好友發(fā)送信息,并在發(fā)送完成后修改發(fā)送狀態(tài)信息。如果不相同,則修改倒計時天數(shù)。
2.2 數(shù)據(jù)存儲設(shè)計
    隨著軟件應(yīng)用程序逐漸模塊化,嵌入式數(shù)據(jù)庫可直接在應(yīng)用程序進(jìn)程中運(yùn)行,提供了零配置運(yùn)行模式,并且資源占用非常少。Android系統(tǒng)支持多種數(shù)據(jù)存儲技術(shù),其中有簡單信息存儲方式SharedPreferences[4],也有內(nèi)存占用少、效率高。支持 SQL 語言的輕量級嵌入式數(shù)據(jù)庫引擎——SQLite。在進(jìn)行開發(fā)設(shè)計時,結(jié)合功能需求和軟件性能,本系統(tǒng)采用了SharedPreferences進(jìn)行簡單短信信息存儲,及SQLite數(shù)據(jù)庫存儲數(shù)據(jù)量較大的好友信息。
    短信信息以sms_db.xml為文件名,存儲在默認(rèn)位置/data/data/<包名>/shared_prefs目錄下,其內(nèi)容格式如下:
    <?xml version=&prime;1.0&prime;encoding=&prime;utf-8&prime;standalone=&prime;yes&prime;?>
    <map>
     <string name="sms1">祝寶貝生日快樂,天天開心!</string>
     <string name="sms2">開業(yè)大吉,生意興??!</string>
  &hellip;&hellip;
    </map>
  數(shù)據(jù)庫myinformation.db存儲好友信息,結(jié)構(gòu)如表1所示。

3 系統(tǒng)功能實(shí)現(xiàn)
    系統(tǒng)整體使用MVC模式設(shè)計,將數(shù)據(jù)(Model)、界面(View)、控制(Controller)分為不同的模塊,不僅使程序結(jié)構(gòu)更加清晰,代碼更加健壯,而且降低了程序之間的耦合度,提高了模塊化程度[5]。
3.1 好友管理
3.1.1 好友列表顯示界面

    系統(tǒng)運(yùn)行后,首先調(diào)用MainActivity.java顯示主界面,如圖2所示。主界面上的好友列表由ListView組件來實(shí)現(xiàn),該組件中的數(shù)據(jù)由繼承了BaseAdapter自定義的MainListAdapter適配器類來填充。實(shí)現(xiàn)代碼如下:

    Cursor c = managedQuery(MyInformation.CONNECT_URI,
MyInformation.SelectStrArr, null, null,MyInformation.DEFAULT_
SORT_ORDER);
    List<User> mList = new ArrayList<User>();
    c.moveToFirst();         // 實(shí)例化游標(biāo)對象,查找數(shù)據(jù)庫
    if (c.getCount() > 0) {
        do {
            mList.add(new User(c));
          } while (c.moveToNext());
    }
    c.close();
    ListView  mainListView = (ListView) findViewById(R.id.
mainlist);                                            // 添加用戶到集合
    MainListAdapter mainListAdapter = new MainListAdapter
        (this, mList);                   // 實(shí)例化自定義適配器
    mainListView.setAdapter(mainListAdapter);
                                // 給ListView設(shè)置適配器
3.1.2 添加好友信息界面
    用戶單擊圖3主界面上的&ldquo;添加好友&rdquo;菜單后,將執(zhí)行如下代碼:

     Intent intentAdd = new Intent(MainActivity.this, InformationAdd.class);
     MainActivity.this.startActivity(intentAdd)
     然后顯示如圖3所示&ldquo;添加好友信息&rdquo;界面。通過此界面,可以設(shè)置好友姓名、電話號碼、定時發(fā)送時間(生日)、定時開啟狀態(tài)及短信內(nèi)容。短信內(nèi)容可以單獨(dú)設(shè)置,也可以點(diǎn)擊&ldquo;選擇已有的祝福&rdquo;按鈕選擇定制短信。
3.2 短信管理
    用戶單擊圖2主界面上的&ldquo;編輯短信&rdquo;菜單后,執(zhí)行PrepareSms類,該類繼承Avtivity類,實(shí)現(xiàn)了OnClickListener接口。然后進(jìn)入短信顯示界面,通過自定義SelectSharedPreferencesDb類實(shí)例對象的getSMS( )方法讀取sms_db.xml文件,并把短信內(nèi)容顯示在TextView上。單擊短信顯示文本框TextView,進(jìn)入短信內(nèi)容編輯界面,如圖4所示。編輯完成后調(diào)用saveSMS()方法保存短信內(nèi)容到sms_db.xml文件,代碼如下:

 

 

    public class SelectSharedPreferencesDb {
    public static Map<String, String> getSMS(Context con) {
        Map<String, String> map=new HashMap<String, String>();
    SharedPreferences mysp = con.getSharedPreferences
("sms_db",Activity.MODE_PRIVATE);                 // 獲取sms
    map.put("sms1", mysp.getString("sms1", "寶貝!祝你生日快樂!!"));
    for (int i = 2; i < 11; i++) {
         String content = mysp.getString("sms" + i, "未設(shè)置");
                map.put("sms" + i, content);}
                return map;
    }                  //默認(rèn)有第一條短信內(nèi)容,可以修改
    public static void saveSMS(Context con, String num, String smscontent) {
    SharedPreferences mysp = con.getSharedPreferences
("sms_db",    Activity.MODE_PRIVATE);
    mysp.edit().putString(num, smscontent).commit();    }
}                                             // 保存sms
3.3 后臺檢測服務(wù)
  為了實(shí)現(xiàn)系統(tǒng)在指定日期自發(fā)短信,必須啟動監(jiān)聽測試服務(wù),并且始終在后臺運(yùn)行,每隔24 h自動檢測手機(jī)日期與指定日期是否一致,并作相應(yīng)處理。Android系統(tǒng)提供了Service組件來實(shí)現(xiàn)服務(wù)的后臺運(yùn)行[6],通過實(shí)現(xiàn)Runnable接口的方法啟動線程對短信發(fā)送日期進(jìn)行檢測。本系統(tǒng)自定義一個MainService類,它繼承了Service,實(shí)現(xiàn)了Runnable接口具體實(shí)現(xiàn)功能。
3.3.1 Service后臺服務(wù)
     Service組件與Activity組件類似,但它一直在后臺運(yùn)行,沒有用戶界面[7],該組件的啟動有兩種方式:context.startService()和context.bindService()。開發(fā)步驟如下:
     (1) 繼承Service類
     public class MainService extends Service implements Runnable {&hellip;&hellip;}
     (2)在AndroidManifest.xml文件中的<application>節(jié)點(diǎn)里對服務(wù)進(jìn)行配置
     <service android:name="ie.nnutc.edu.cn.MainService" >
     <intent-filter>
     <action android:name= "ie.nnutc.edu.cn.MainService "/ >
     </intent-filter>
     </service>
     (3) 啟動Service
  Intent it = new Intent("ie.nnutc.edu.cn.MainService ");
  this.startService(it)
3.3.2 實(shí)現(xiàn)時間檢測和短信發(fā)送線程
     在Java中通過繼承Thread類和實(shí)現(xiàn)Runnable接口兩種方式實(shí)現(xiàn)多線程,但由于一個類只能繼承一個父類[8],而MainService類已經(jīng)繼承了Service類,所以本系統(tǒng)采用Runnable接口來實(shí)現(xiàn)時間檢測和短信發(fā)送線程。
    當(dāng)檢測到發(fā)送日期與手機(jī)日期相同時,將好友信息加入發(fā)送集合,產(chǎn)生一個Message類信號放入消息隊列,并分發(fā)給Handler進(jìn)行處理。Handler接收到消息后啟動短信發(fā)送代碼(本系統(tǒng)將該功能封裝成sendmessage方法)實(shí)現(xiàn)短信發(fā)送。部分代碼如下:
     Handler handler = new Handler() {
        public void handleMessage(Message msg) {
           switch (msg.what) {
           case SEND_MESSAGE:
             sendmessage(&hellip;&hellip;);         //執(zhí)行自發(fā)短信任務(wù)
                break;
            }
            super.handleMessage(msg);
         }
    }
    結(jié)合Android系統(tǒng)手機(jī)用戶的實(shí)際需要,本文基于SQLite存儲技術(shù)、Service后臺服務(wù)技術(shù)和消息處理機(jī)制設(shè)計了自發(fā)短信系統(tǒng),成功地解決了按時發(fā)送定制信息這一問題。通過實(shí)際項目驗(yàn)證了設(shè)計的正確性和可行性。隨著3G的到來,利用 Android系統(tǒng)提供的拍照、錄音等功能,也可實(shí)現(xiàn)圖片、音頻等多媒體信息的自動發(fā)送,從而使自發(fā)短信系統(tǒng)的應(yīng)用前景更加廣泛。
參考文獻(xiàn)
[1] 沈冰,陳向東,黃馨竹,等.基于J2ME技術(shù)的短信智能回復(fù)系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)應(yīng)用研究,2007,24 (12):263-265.
[2] 王向輝,張國印,沈潔.Android應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2010.
[3] 姚昱昱,劉衛(wèi)國.Android的架構(gòu)與應(yīng)用開發(fā)研究[J].計算機(jī)系統(tǒng)應(yīng)用,2008,17(11):110-112.
[4] 郭宏志.Android應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版 社,2010.
[5] GAO J,MODAK M,DORNADULA S,et al. A wirelessbased text chatting system[C]. 2004 IEEE International Conference on E-Commerce Technology, 2004.
[6] 張元亮.Android開發(fā)應(yīng)用實(shí)戰(zhàn)詳解[M].北京:中國鐵道出版社,2010.
[7] 王秀芳,楊陽.基于Android的YOBO在線音樂播放器[J]. 科學(xué)技術(shù)與工程,2011,11(11):2506-2509.
[8] 張雪萍,鮑丹,王家耀.Java多線程測試策略及測試方法探討[J].計算機(jī)應(yīng)用研究,2006,23(11):12-14.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久午夜电影网| 亚洲精品视频免费在线观看| 久久在线观看视频| 亚洲在线一区二区三区| 亚洲一区二区三| 国产三级欧美三级| 久久青青草综合| 欧美一区1区三区3区公司| 性色av一区二区三区在线观看 | 一区二区激情视频| 国产精品九九| 久久亚洲精品伦理| 久久久国产亚洲精品| 亚洲人成欧美中文字幕| 日韩系列在线| 国产视频在线一区二区| 国产精品午夜在线| 麻豆精品视频在线观看| 亚洲深夜福利网站| 性欧美精品高清| 欧美一级成年大片在线观看| 亚洲欧美日韩一区二区三区在线观看 | 亚洲精品少妇| 日韩亚洲欧美一区| 亚洲一区久久久| 亚洲成色www久久网站| 欧美性大战xxxxx久久久| 欧美在线视频a| 日韩视频久久| 一本久道久久综合狠狠爱| 午夜精品在线观看| 亚洲精品国偷自产在线99热| 国产精品视频网| 国产欧美日本| 欧美日韩裸体免费视频| 久久激情中文| 亚洲视频一区二区免费在线观看| 一区二区三区福利| 久久精品国产一区二区三| 一本色道久久综合狠狠躁的推荐| 在线亚洲一区| 亚洲经典视频在线观看| 国产综合av| 国产精品一区二区男女羞羞无遮挡| 欧美激情中文字幕乱码免费| 久久精品视频导航| 米奇777超碰欧美日韩亚洲| 欧美精品v日韩精品v国产精品| 欧美日在线观看| 欧美电影免费观看高清完整版| 性欧美大战久久久久久久久| 99在线精品观看| 亚洲自拍三区| 亚洲一区国产一区| 欧美一区二区三区免费看| 久久人人精品| 欧美三级在线播放| 国产亚洲亚洲| 国产欧美精品xxxx另类| 激情国产一区| 欧美日韩免费观看一区三区| 欧美成年人网站| 国产精品白丝黑袜喷水久久久| 国产真实精品久久二三区| 日韩视频一区二区三区在线播放免费观看 | 香蕉久久久久久久av网站| 亚洲国产精品123| 亚洲一区二区在线看| 久久精品99国产精品日本| 一区二区高清视频在线观看| 久久精品123| 欧美精品一区二| 国产一区91精品张津瑜| 99在线|亚洲一区二区| 久久se精品一区精品二区| 午夜精品美女久久久久av福利| 亚洲黄色有码视频| 亚洲黄色小视频| 亚洲一区二区久久| 亚洲在线视频观看| 久久午夜电影| 国产精品萝li| 国产精品夜夜夜| 亚洲国产成人tv| 在线成人性视频| 尤物yw午夜国产精品视频| 一本色道久久综合亚洲精品高清 | 久久精品国产久精国产思思| 亚洲砖区区免费| 欧美激情乱人伦| 免费视频一区| 欧美精品 国产精品| 国产日产精品一区二区三区四区的观看方式 | 久久免费午夜影院| 国产精品久久久久国产精品日日 | 亚洲激情网站免费观看| 欧美伊人久久| 亚洲成人在线视频网站| 久久爱www久久做| 亚洲欧美日韩一区二区三区在线| 午夜精品一区二区在线观看 | 久久国产精品久久国产精品 | 国产欧美日韩高清| 日韩视频一区二区| 亚洲精品久久久蜜桃 | 国外精品视频| 亚洲欧美在线免费观看| 中文在线资源观看网站视频免费不卡| 免费成人黄色| 国产综合久久久久久| 欧美一二三视频| 欧美中文字幕第一页| 国产精品女主播一区二区三区| 夜夜嗨av色综合久久久综合网| 亚洲精品中文字幕在线| 老**午夜毛片一区二区三区| 免费试看一区| 狠狠色狠狠色综合日日五| 欧美一区二区视频免费观看| 久久爱www久久做| 国产欧美在线观看一区| 亚洲欧美三级伦理| 欧美亚洲系列| 国产欧美日韩在线| 亚洲欧美怡红院| 久久国产精品久久久久久电车| 国产精品蜜臀在线观看| 中日韩美女免费视频网址在线观看| 中文无字幕一区二区三区| 欧美网站在线观看| 亚洲视频一起| 亚洲国产另类久久久精品极度| 久久久精品久久久久| 国内一区二区三区在线视频| 亚洲第一成人在线| 蜜臀91精品一区二区三区| 亚洲大片av| 日韩视频免费观看高清在线视频 | 国产精品日韩专区| 午夜精品一区二区三区在线| 香蕉久久夜色精品国产使用方法| 国产精品视屏| 久久9热精品视频| 欧美成人免费在线视频| 亚洲人成77777在线观看网| 亚洲综合色噜噜狠狠| 欧美一区二区三区在线播放| 国产午夜精品全部视频在线播放| 欧美一区二区三区免费观看| 免费在线播放第一区高清av| 亚洲精品一区二区三| 亚洲伊人久久综合| 国产日韩一区二区三区在线播放| 久久成人一区二区| 欧美—级a级欧美特级ar全黄| 9色精品在线| 久久国产精品一区二区三区四区| 精品不卡视频| 亚洲午夜精品福利| 国产亚洲aⅴaaaaaa毛片| 亚洲国产精品悠悠久久琪琪| 欧美日韩性视频在线| 亚洲欧美久久久| 欧美电影免费观看高清| 亚洲小视频在线观看| 久久都是精品| 最近看过的日韩成人| 亚洲欧美日韩国产成人| 黑丝一区二区| 亚洲天堂免费观看| 国产色产综合色产在线视频 | 亚洲精品中文字| 国产女主播在线一区二区| 亚洲国产精品嫩草影院| 欧美日韩一区二区精品| 性久久久久久久| 欧美精品一区二区精品网| 亚洲综合日韩中文字幕v在线| 免费不卡亚洲欧美| 亚洲视频一区| 欧美freesex交免费视频| 亚洲专区一区二区三区| 男同欧美伦乱| 亚洲欧美日韩国产综合在线| 欧美电影在线观看| 亚洲综合成人婷婷小说| 欧美大片在线看| 亚洲欧美日韩国产一区二区三区 | 欧美午夜三级| 亚洲黄色毛片| 国产欧美精品久久| 一区二区毛片| 激情欧美日韩| 欧美在线啊v一区| 一本大道久久a久久综合婷婷| 久久综合婷婷| 午夜激情亚洲| 国产精品vip| 亚洲精品一级| 国产三级精品在线不卡|