亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于Android藍(lán)牙技術(shù)的點(diǎn)對點(diǎn)聊天工具

        2021-02-26 16:53:54黃麗麗
        電腦與電信 2021年11期
        關(guān)鍵詞:界面設(shè)備

        楊 敏 黃麗麗

        (1.黔東南民族職業(yè)技術(shù)學(xué)院,貴州 凱里 556000;2.貴州電子信息職業(yè)技術(shù)學(xué)院,貴州 凱里 556000)

        1 引言

        在如今這個全球信息化的時代背景下,網(wǎng)絡(luò)幾乎遍布了世界的每一個角落,給人類的工作生活帶來了翻天覆地的變革。聊天作為人類日常生活中一個最普通的行為,受信息化的影響首當(dāng)其沖。近年來,網(wǎng)絡(luò)上涌現(xiàn)出一大批功能強(qiáng)大的聊天工具,但這些工具大多都必須依托于因特網(wǎng),在某些特定的環(huán)境下使用受限,因此開發(fā)一款無需外網(wǎng)的聊天工具具備一定的現(xiàn)實(shí)意義。

        2 系統(tǒng)環(huán)境

        2.1 Android系統(tǒng)

        安卓(Android)是一種基于Linux 內(nèi)核(不包含GNU 組件)的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦[1]。

        2.2 藍(lán)牙技術(shù)

        藍(lán)牙是一種支持設(shè)備短距離通信(一般是10m 之內(nèi))的無線電技術(shù),可以在包括移動電話、PDA、無線耳機(jī)、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進(jìn)行無線信息交換。藍(lán)牙的標(biāo)準(zhǔn)是IEEE802.15,工作在2.4GHz 頻帶,帶寬為1Mb/s[2]。

        3 設(shè)計與實(shí)現(xiàn)

        3.1 工作流程

        兩臺移動設(shè)備安裝并打開藍(lán)牙聊天工具,開啟藍(lán)牙功能,搜索附近可用的藍(lán)牙設(shè)備,發(fā)現(xiàn)對方后一方發(fā)起配對請求,雙方確認(rèn)Pin碼后完成配對,設(shè)備由可用設(shè)備列表轉(zhuǎn)移至已配對的設(shè)備列表,表示可以連接該設(shè)備,然后其中一臺移動設(shè)備作為服務(wù)端開啟連接監(jiān)聽,另一臺移動設(shè)備則作為客戶端長按已配對的設(shè)備列表中對應(yīng)的列表項向服務(wù)端發(fā)起連接請求,連接成功之后雙方自動跳轉(zhuǎn)至聊天界面,可互相發(fā)送文本信息。

        3.2 界面設(shè)計

        主界面(圖1)參考華為P9手機(jī)藍(lán)牙設(shè)置界面進(jìn)行設(shè)計,采用自上而下的布局形式,界面元素依次為藍(lán)牙開關(guān),設(shè)備名稱,已配對設(shè)備列表,可用設(shè)備列表,掃描設(shè)備按鈕和開啟監(jiān)聽按鈕。

        圖1 應(yīng)用主界面

        聊天界面則跟微信聊天界面相似,頂部顯示連接設(shè)備的藍(lán)牙名稱,白色背景文本為接收到的消息,灰色背景文本為本機(jī)發(fā)出的消息,詳見圖2,圖3。

        圖2 設(shè)備1聊天界面

        圖3 設(shè)備2聊天界面

        3.3 Android藍(lán)牙開發(fā)

        Android系統(tǒng)支持藍(lán)牙通訊棧,擁有藍(lán)牙模塊的Android設(shè)備和其他的藍(lán)牙設(shè)備之間可以實(shí)現(xiàn)無線數(shù)據(jù)傳輸。應(yīng)用程序通過Android 藍(lán)牙API 來調(diào)用藍(lán)牙功能,實(shí)現(xiàn)P2P 或多端無線連接[3]。

        一般來說,Android 應(yīng)用程序之間實(shí)現(xiàn)藍(lán)牙通訊需要執(zhí)行以下四個步驟:

        (1)打開藍(lán)牙

        (2)搜索附近可用設(shè)備

        (3)設(shè)備間建立連接

        (4)設(shè)備間數(shù)據(jù)交換

        在Android系統(tǒng)中,所有的藍(lán)牙API都位于android.bluetooth包下面,本次開發(fā)用到了以下四個常用類:

        BluetoothAdapter:表示本地藍(lán)牙適配器,是所有藍(lán)牙交互的入口。應(yīng)用程序通過BluetoothAdapter可以發(fā)現(xiàn)其他藍(lán)牙設(shè)備,查詢已配對的設(shè)備列表,使用一個已知的MAC地址來實(shí)例化一個藍(lán)牙設(shè)備,以及創(chuàng)建一個藍(lán)牙服務(wù)器套接字來處理設(shè)備間的通信[3]。

        BluetoothDevice:表示一個遠(yuǎn)程藍(lán)牙設(shè)備,應(yīng)用程序使用該類可以查詢關(guān)于設(shè)備名稱、設(shè)備地址和連接狀態(tài)等設(shè)備信息。

        BluetoothSocket:表示一個藍(lán)牙Socket 的接口(和TCP Socket 類似),它允許藍(lán)牙設(shè)備之間通過輸入輸出流進(jìn)行數(shù)據(jù)交換。

        BluetoothServerSocket:表示一個開放的服務(wù)端socket,它監(jiān)聽其他藍(lán)牙設(shè)備發(fā)起的連接請求。為了連接兩臺Android 設(shè)備,其中一臺設(shè)備必須使用該類創(chuàng)建一個服務(wù)端socket,另一臺設(shè)備則向該設(shè)備發(fā)起一個連接請求,若連接成功,BluetoothServerSocket 將會返回一個已連接的Bluetooth-Socket[3]。

        3.4 技術(shù)難點(diǎn)

        3.4.1 權(quán)限

        根據(jù)SDK中的文檔說明,Android應(yīng)用想要使用藍(lán)牙特性,只需要申請BLUETOOTH 和BLUETOOTH_ADM IN 兩個權(quán)限即可保證藍(lán)牙的正常的工作,包括藍(lán)牙功能的開啟和關(guān)閉、搜索可用設(shè)備、數(shù)據(jù)通信等,但出于用戶信息安全方面的考慮,Android6.0 之后所有需要訪問硬件唯一標(biāo)識符的地方都需要申請位置權(quán)限(ACCESS_FINE_LOCATION 或者ACCESS_COARSE_LOCATION),藍(lán)牙權(quán)限屬于NORMAL級別,在清單文件中聲明即可,但位置權(quán)限屬于DANGEROUS 級別,除了在清單文件中聲明之外,還需要在應(yīng)用程序代碼中進(jìn)行動態(tài)申請,并跟蹤用戶對權(quán)限的確認(rèn)結(jié)果[4]。

        3.4.2 檢測藍(lán)牙可用性

        BluetoothAdapter 類的靜態(tài)方法getDefaultAdapter()會返回一個表示本機(jī)藍(lán)牙適配器的BluetoothAdapter 對象,該對象在Android 系統(tǒng)中是唯一的,應(yīng)用程序可以通過它與設(shè)備藍(lán)牙模塊進(jìn)行交互,若getDefaultAdapter()返回null,則表示當(dāng)前設(shè)備不具備藍(lán)牙模塊,即不支持藍(lán)牙功能。

        3.4.3 開啟藍(lán)牙

        BluetoothAdapter 對象的isEnabled()方法返回一個布爾值,表示當(dāng)前設(shè)備的藍(lán)牙功能是否開啟,若返回值為false,則需要請求開啟藍(lán)牙,首先創(chuàng)建一個Intent對象,其構(gòu)造方法中傳入BluetoothAdapter.ACTION_REQUEST_ENABLE,再調(diào)用startActivityForResult()方法將Intent 對象傳入即可發(fā)起一次開啟系統(tǒng)藍(lán)牙的請求。

        3.4.4 搜索可用設(shè)備

        應(yīng)用程序可以使用BluetoothAdapter對象來搜索附近的藍(lán)牙設(shè)備(startDiscovery)或者查詢已配對的藍(lán)牙設(shè)備(get-BondedDevices)。

        設(shè)備搜索是一個瀏覽流程,它查找附近可用的藍(lán)牙設(shè)備,然后請求設(shè)備的相關(guān)信息。如果一個設(shè)備是允許被發(fā)現(xiàn)的,它將通過反饋一些數(shù)據(jù)來響應(yīng)發(fā)現(xiàn)請求,例如設(shè)備名稱、唯一的MAC地址等。借助這些信息,搜索發(fā)起設(shè)備可以選擇和被發(fā)現(xiàn)的設(shè)備創(chuàng)建一個連接。

        3.4.5 連接設(shè)備

        兩臺藍(lán)牙設(shè)備之間的連接需要借助C/S(客戶端/服務(wù)端)機(jī)制來實(shí)現(xiàn),因此其中一臺設(shè)備必須創(chuàng)建一個服務(wù)端socket(BluetoothServerSocket),而另一臺設(shè)備使用服務(wù)端設(shè)備的MAC地址來初始化一個連接。連接成功后,兩臺設(shè)備在相同的RFCOMM通道均持有一個相互連接的BluetoothSocket對象,并可以使用該對象中的輸入輸出流進(jìn)行數(shù)據(jù)傳輸。

        3.4.6 數(shù)據(jù)通信

        兩臺設(shè)備成功連接后,各自都將持有一個相互連接的BluetoothSocket 對象,借助BluetoothSocket 對象可以輕易實(shí)現(xiàn)二進(jìn)制數(shù)據(jù)傳輸。

        分別調(diào)用BluetoothSocket 對象的getInputStream() 和getOutputStream()方法取出關(guān)聯(lián)的輸入輸出數(shù)據(jù)流對象,接著調(diào)用輸入流對象InputStream 的read(byte[])方法讀取設(shè)備發(fā)送過來的數(shù)據(jù),或者調(diào)用輸出流對象OutputStream的w rite(byte[])方法向設(shè)備發(fā)送數(shù)據(jù),實(shí)現(xiàn)雙向數(shù)據(jù)通信。

        開發(fā)過程中還需要考慮一些實(shí)現(xiàn)的細(xì)節(jié),舉個例子,數(shù)據(jù)讀取操作應(yīng)該處于一個專屬的子線程中,因為read(byte[])方法是阻塞調(diào)用,放在主線程會引發(fā)ANR,嚴(yán)重影響用戶體驗。通常的做法是開啟一個子線程循環(huán)等待,如果收到數(shù)據(jù)則利用消息機(jī)制通知UI 線程更新顯示界面,直到設(shè)備斷開連接或者其中一方的BluetoothSocket被關(guān)閉。

        4 結(jié)語

        藍(lán)牙作為一種小范圍無線連接技術(shù),能在設(shè)備間實(shí)現(xiàn)方便快捷、靈活安全、低成本、低功耗的數(shù)據(jù)通信和語音通信,而Android是當(dāng)今主流的移動設(shè)備操作系統(tǒng),文章從移動社交應(yīng)用的角度,設(shè)計并實(shí)現(xiàn)了一種基于Android 藍(lán)牙技術(shù)的點(diǎn)對點(diǎn)聊天工具,在無網(wǎng)絡(luò)等特殊環(huán)境下有一定的應(yīng)用價值。

        猜你喜歡
        界面設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        國企黨委前置研究的“四個界面”
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
        空間界面
        金秋(2017年4期)2017-06-07 08:22:16
        電子顯微打開材料界面世界之門
        人機(jī)交互界面發(fā)展趨勢研究
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        手機(jī)界面中圖形符號的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        国产乱子伦农村叉叉叉| 曰韩少妇内射免费播放| 一二三区亚洲av偷拍| 久久久中文字幕日韩精品| 国产一区二区三区视频网| 自拍偷自拍亚洲一区二区| 日韩 亚洲 制服 欧美 综合 | 大肉大捧一进一出好爽视频mba| 搡老熟女老女人一区二区| 国产色诱视频在线观看| 一区一级三级在线观看| 樱桃视频影视在线观看免费| 亚洲欧美日韩一区二区三区在线 | 一区二区三区视频偷拍| 青青久久精品一本一区人人| 最新在线观看免费的a站国产| 人妻少妇被猛烈进入中文字幕| 久久人妻av一区二区软件| 成午夜精品一区二区三区| 乱色熟女综合一区二区三区 | 中文字幕无码免费久久9一区9| AV无码系列一区二区三区| 男女男生精精品视频网站| 亚洲av无一区二区三区综合| 国产成人亚洲系列毛片| 偷拍夫妻视频一区二区| 一本色道久久综合狠狠躁篇| 亚洲av无码专区首页| 无遮挡十八禁在线视频国产制服网站| 校花高潮一区日韩| 精品蜜桃在线观看一区二区三区| 亚洲av第一区国产精品| 精品亚洲国产成人蜜臀av| 毛片无码国产| 久久久久亚洲av无码专区导航| 亚洲中文久久久久无码| 国产亚洲一二三区精品| 欧美牲交a欧美牲交aⅴ免费下载 | 国产女女精品视频久热视频| 国产女人体一区二区三区| 久久网站在线免费观看|