• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的FM應(yīng)急客戶端設(shè)計與實現(xiàn)

      2016-04-11 13:49:18胡自健楊莉汪正道
      電腦知識與技術(shù) 2016年4期
      關(guān)鍵詞:客戶端

      胡自健++楊莉+汪正道

      摘要:結(jié)合調(diào)頻廣播網(wǎng)和Android智能手機(jī)終端,設(shè)計并實現(xiàn)了一款應(yīng)急通信客戶端。該客戶端可在移動通信網(wǎng)絡(luò)失效下,接收調(diào)頻廣播網(wǎng)的語音信息和RDS文本信息。文中給出了客戶端的軟件設(shè)計方案,并對方案中的數(shù)據(jù)獲取模塊、數(shù)據(jù)解析模塊、數(shù)據(jù)存儲模塊和數(shù)據(jù)展示模塊的是設(shè)計與實現(xiàn)進(jìn)行了詳細(xì)介紹。最后,通過實驗驗證了其可行性,可彌補(bǔ)單一應(yīng)急通信方式造成手機(jī)終端對于應(yīng)急消息接收的缺失。

      關(guān)鍵詞:Android; FM; RDS; 客戶端

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)04-0039-03

      1 概述

      當(dāng)前,Android[1]智能終端的高速發(fā)展,其應(yīng)用范圍越來越廣,成為人民群眾生活中不可或缺的一部分。通過移動通信網(wǎng)絡(luò),人民群眾總能使用手機(jī)獲取最新動態(tài)。然而,當(dāng)緊急情況發(fā)生時,移動網(wǎng)絡(luò)常常因業(yè)務(wù)量激增和通信設(shè)施損壞而失效,恢復(fù)時間也較長,手機(jī)無法發(fā)揮其原有性能。通過對Android智能終端的研究發(fā)現(xiàn),其不僅支持移動通信網(wǎng)絡(luò),還支持藍(lán)牙、無線網(wǎng)絡(luò)和調(diào)頻廣播網(wǎng),其中調(diào)頻廣播網(wǎng)具備傳播范圍廣、抗毀能力強(qiáng)等優(yōu)勢。本文在結(jié)合調(diào)頻廣播網(wǎng)和Android智能手機(jī)終端的基礎(chǔ)上,通過軟件設(shè)計,實現(xiàn)手機(jī)終端對FM[2]語音和RDS[3]數(shù)字文本信息接收,彌補(bǔ)單一應(yīng)急通信方式造成手機(jī)對于應(yīng)急消息接收的缺失。

      2 客戶端框架及關(guān)鍵技術(shù)

      2.1 客戶端框架

      客戶端主要包含數(shù)據(jù)獲取模塊、數(shù)據(jù)解析[5]模塊、數(shù)據(jù)存儲[6]模塊和數(shù)據(jù)展示模塊四部分。數(shù)據(jù)獲取模塊包含對手機(jī)FM芯片的管理和狀態(tài)的讀取、FM語音和RDS信息的獲取和系統(tǒng)音頻的管理;數(shù)據(jù)解析模塊,包含系統(tǒng)音頻的管理和RDS信息的解析。數(shù)據(jù)存儲模塊,包含數(shù)據(jù)表建立和維護(hù),解析后數(shù)據(jù)存儲和更新;數(shù)據(jù)展示模塊,主要用于用戶相互,信息提醒,歷史信息的查看??蛻舳苏w框架如圖1所示:

      2.2 關(guān)鍵技術(shù)

      FM(調(diào)頻廣播)是高頻振蕩頻率隨音頻信號幅度而變化的廣播技術(shù),具備抗干擾力強(qiáng),失真小,覆蓋范圍廣等優(yōu)點,主要提供模擬語音服務(wù)。

      RDS,則是通過FM副載波傳遞數(shù)字信息,編碼傳輸速率為每包104bit/s,可傳輸11.4個數(shù)據(jù)包/秒。RDS最大單元為組,每組四個信息塊,每塊包含16位信息字和10位校驗字。當(dāng)前,已定義的12組RDS組型,其中2組型用于傳播廣播文本信息。2組型包含A、B兩個版本,區(qū)別表現(xiàn)為塊3的不同,B版本插入了PI碼。RDS的2組型編碼結(jié)構(gòu)如表1:

      A版本可以傳送長達(dá)32個雙字節(jié)或64個單字節(jié)字符的文本消息。而B版本只能傳送16個雙字節(jié)或32個單字節(jié)字符文本消息。

      3 客戶端設(shè)計與實現(xiàn)

      3.1 信息獲取模塊

      信息獲取模塊包含對音頻信息和RDS文本信息兩部分的處理。由于Android系統(tǒng)缺乏對于FM芯片的統(tǒng)一應(yīng)用層調(diào)用的接口API函數(shù)。本文采用JNI方法對不同F(xiàn)M射頻芯片與驅(qū)動[7]進(jìn)行上層接口封裝與實現(xiàn),從而達(dá)到對FM芯片中信息流的讀寫以及初始化操作。封裝后的接口以靜態(tài)鏈接庫(.so)方式打包到APP或發(fā)布在Framework層使用。

      在應(yīng)用程序開啟時,通過調(diào)用FMRadioNative類加載靜態(tài)庫文件fm.so,實現(xiàn)客戶端對FM芯片的控制和信息讀取。開啟Service進(jìn)程并在Service進(jìn)程調(diào)用JNI方法進(jìn)行FM芯片的初始化。其中,F(xiàn)M語音信息的獲取,通過將音頻播放器MediaPlayer來源設(shè)置為MEDIATEK://MEDIAPLAYER_PLAYERTYPE_FM即可實現(xiàn)資源的綁定和獲取。而RDS信息的獲取,則通過開啟監(jiān)聽線程每隔100ms讀取指定頻點上RDS信息標(biāo)志位,當(dāng)發(fā)現(xiàn)標(biāo)志位不為0,則進(jìn)行RDS的讀取和處理。信息獲取基本流程如圖2所示:

      3.2信息處理模塊

      3.2.1 音頻處理

      FM語音會占用系統(tǒng)音頻資源,而語音通話以及第三方軟件也會請求音頻資源??蛻舳诵鑼ο到y(tǒng)音頻資源進(jìn)行管理,防止音頻資源的占用影響到用戶的正常的語音通話。具體實現(xiàn)為在綁定音頻資源后設(shè)置OnAudioFocusChangeListener實時監(jiān)聽系統(tǒng)音頻請求,并實現(xiàn)方法onAudioFocusChange獲取音頻狀態(tài)值focusChang。當(dāng)focusChang狀態(tài)值改變時,通過設(shè)置音頻播放器MediaPlayer的開啟、關(guān)閉、暫停來進(jìn)行音頻管理。

      狀態(tài)值為AUDIOFOCUS_LOSS,表示音頻焦點失去,需停止當(dāng)前FM語音播放,并釋放資源;狀態(tài)值為AUDIOFOCUS_GAIN,表示音頻焦點重新獲得,可重新獲取音頻資源并恢復(fù)FM語音播放;狀態(tài)值為AUDIOFOCUS_LOSS_TRANSIENT,表示暫時失去音頻焦點,需要保持音頻資源,但需停止音頻播放。音頻管理流程如圖3所示:

      3.2.2 RDS信息處理

      FMRadioNative類讀取FM芯片的RDS信息為字節(jié)流,需將其通過GBK編碼規(guī)則進(jìn)行信息的還原。由于一組RDS可攜帶的凈載荷有限,考慮到需傳輸較長信息,在信息的發(fā)送時在信息開頭出加入了信息的當(dāng)前組索引currentGroupIndex和總組數(shù)groupsCount。在信息接收后,更新已接受信息標(biāo)志receivedGroupsCount。當(dāng)發(fā)現(xiàn)currentGroupIndex、groupsCount和receivedGroupsCount三者都一致時,按順序,進(jìn)行信息的拼接,還原出完整的信息。

      3.3信息存儲模塊

      經(jīng)過信息處理模塊的恢復(fù)有效信息,需進(jìn)行存儲,為信息展示模塊做準(zhǔn)備。本次設(shè)計采用Android系統(tǒng)中SQLite輕量級數(shù)據(jù)庫實現(xiàn),SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它支持大多數(shù)的SQL92標(biāo)準(zhǔn),并且可以在主要的操作系統(tǒng)上運行。SQLite通過利用虛擬機(jī)和虛擬數(shù)據(jù)庫引擎(VDBE),是調(diào)試、修改和擴(kuò)展SQLite的內(nèi)核變得更加方便。所有SQL語句都被編譯成易讀的、可以在SQLite虛擬機(jī)中執(zhí)行的程序集。

      RDS信息存儲表包序列號SerialID、正文Content、組數(shù)GroupCount、接收起始時間StartTime和接收終止時間EndTime五個字段。數(shù)據(jù)存儲表如表2所示:

      3.4信息展示模塊

      信息展示模塊主要包含,信息狀態(tài)欄提醒,信息列表界面,信息詳情界面,F(xiàn)M語音界面,鈴音提示和振動。

      其中,信息狀態(tài)欄提醒和鈴音提示及振動通過Android系統(tǒng)中Notification實現(xiàn)。收到有效信息時,通過新建通知mNotification,并設(shè)置其所攜帶的信息為解析后的有效信息,設(shè)置振動與自帶鈴聲。設(shè)置完成后,通知欄管理器NotificationManager進(jìn)行通知Notification的展示。通知欄提示關(guān)鍵代碼如下:

      //新建通知

      Notification mNotification = new Notification(R.drawable.emergency,

      "應(yīng)急信息", System.currentTimeMillis());

      //設(shè)置了鈴聲和振動

      mNotification.flags = Notification.FLAG_AUTO_CANCEL;

      mNotification.flags |= Notification.FLAG_ONLY_ALERT_ONCE;

      mNotification.sound = Uri.parse("android.resource://"

      + getApplicationContext().getPackageName() + "/"

      + R.raw.emmusic);

      mNotification.vibrate ={ 0, 30000 };

      //設(shè)置點擊后跳轉(zhuǎn)的頁面

      mIntent = new Intent(getApplicationContext(), MainActivity.class);

      PendingIntent mPendingIntent = PendingIntent.getActivity(

      getApplicationContext(), 0, mIntent,

      android.content.Intent.FLAG_ACTIVITY_NEW_TASK);

      mNotification.setLatestEventInfo(getApplicationContext(), "新應(yīng)急消息",

      RDSContent, mPendingIntent);

      mNotificationManager.notify(TEST_ID, mNotification);

      信息列表界面,信息詳情界面和FM語音界面如下圖4所示

      4 測試

      基于上述設(shè)計實現(xiàn)后,進(jìn)行外場測試。在測試過程中為將設(shè)置為手機(jī)終端為飛行模式,模擬移動通信網(wǎng)絡(luò)失效下的RDS信息的接收,測試后的結(jié)果如表3所示:

      由測試數(shù)據(jù)可知:在室外環(huán)境下,在有效通信范圍內(nèi),RDS應(yīng)急信息的接收效率是可靠并且實時的,可以滿足應(yīng)急場景的通信要求。

      5 總結(jié)

      本文通過調(diào)頻廣播網(wǎng)和Android智能手機(jī)終端的結(jié)合,并進(jìn)行軟件詳細(xì)設(shè)計,實現(xiàn)了移動通信網(wǎng)絡(luò)失效下,公眾對于應(yīng)急信息的接收。經(jīng)過驗證,滿足應(yīng)急場景的基本通信要求,可以作為應(yīng)急通信的補(bǔ)充。

      參考文獻(xiàn):

      [1] 田興強(qiáng). Android的若干關(guān)鍵技術(shù)的研究及其應(yīng)用系統(tǒng)的開發(fā)分析[J]. 電腦知識與技術(shù),2015(31):77-78.

      [2] 付凱鵬. 基于無線電廣播技術(shù)的調(diào)頻收發(fā)系統(tǒng)設(shè)計與實現(xiàn)[J]. 科技風(fēng),2014(10):107.

      [3] 陳澤虎,倪林,嚴(yán)杰.一種調(diào)頻廣播數(shù)據(jù)接收顯示系統(tǒng)的設(shè)計[J].電視技術(shù),2014,38(15):114-117.

      猜你喜歡
      客戶端
      如何看待傳統(tǒng)媒體新聞客戶端的“斷舍離”?
      傳媒評論(2019年5期)2019-08-30 03:50:04
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      大樞紐 云平臺 客戶端——中央人民廣播電臺的探索之路
      傳媒評論(2018年2期)2018-06-06 03:04:46
      客戶端空間數(shù)據(jù)緩存策略
      大安市| 侯马市| 镇江市| 鹤壁市| 庄河市| 迁安市| 白玉县| 南阳市| 罗定市| 惠来县| 温泉县| 满城县| 武陟县| 开江县| 浪卡子县| 和政县| 靖西县| 华蓥市| 墨脱县| 临汾市| 大冶市| 永和县| 芷江| 凤冈县| 彭泽县| 和静县| 十堰市| 衡阳市| 长葛市| 平定县| 汶川县| 高淳县| 桦甸市| 加查县| 措美县| 萨迦县| 金华市| 永福县| 家居| 清流县| 东方市|