freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于安卓手機設(shè)備的藍牙傳輸-閱讀頁

2024-11-28 01:34本頁面
  

【正文】 。 藍牙傳輸 (Bluetooth)技術(shù)簡介 Bluetooth 是一種支持設(shè)備中短距離通信(一般 10m 內(nèi))的無線電技術(shù)。藍牙的創(chuàng)始在愛立信公司,藍牙聯(lián)盟共同的目標(biāo)是建立一個全球性的小范圍無線通信技術(shù) (藍牙 )。藍牙版本有: 、 、 、 +EDR、 +EDR、 +HS、 。在開發(fā)環(huán)境的搭建上,使用 Ubuntu+Eclipse+ ADT,運行環(huán)境為 華為 U8818。該設(shè)計只適應(yīng)于具有 Bluetooth 功能的 Android 系統(tǒng)版本在 左右的 Android 設(shè)備。第一章是對 Android 系統(tǒng)開發(fā)環(huán)境與一些基本特性的介紹。第三章是對基于 Android 系統(tǒng)的藍牙與其所提供的 API 的介紹,第四章為代碼設(shè)計效果以及整合。 開放性對于 Android 的發(fā)展而言,有利于積累人氣,而對于消費者來講,最大的收益正是豐富的軟件資源。 2. 掙脫運營商的束縛 在過去很長的一段時間,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運營商的控制。 3. 豐富的硬件選擇 這一點還是與 Android 平臺的開放性有關(guān),由于 Android 的開放性,眾多的廠商會推出千奇百怪,功能特殊各具的多種產(chǎn)品。 4. 不受任何限制的開發(fā)商 Android 平臺提供給第三方開發(fā)商一個十分寬泛、自由的環(huán)境。 5. 無縫結(jié)合的 Google 應(yīng)用 如今叱咤互聯(lián)網(wǎng)的 Google 已經(jīng)走過 10 年度歷史。 4 Android 系統(tǒng)架構(gòu) Android 系統(tǒng)架構(gòu)圖如下所示: 正如前面所說, Android 系統(tǒng)是基于 linux 系統(tǒng),所以 Android 系統(tǒng)也是一種linux 系統(tǒng),它們都具有相同的 linux kernel 和 lib 庫, Android 系統(tǒng)只是在原來的基礎(chǔ)上將 application 層與 application framework 這兩層進行修改,就形成了現(xiàn)在的 Android 系統(tǒng)。所有的應(yīng)用程序都是使用 JAVA 語言編寫的。同樣,該應(yīng)用程序重用機制也使用戶可以方便的替換程序組件。它們通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。 4. Android 運行庫 Android 包括了一個核心庫,該核心庫提供了 JAVA 編程語言核心庫的大多數(shù)功能。 Dalvik 被設(shè)計成一個設(shè)備可以同時高效地運行多個虛擬系統(tǒng)。 Linux 內(nèi)核也同時作為硬件和軟件棧之間的 抽象層 [2]。 2. 架構(gòu)設(shè)計: 1)分層; 2)網(wǎng)絡(luò)連接; 3)數(shù)據(jù)處理( xml、 domain); 4)封裝( Activity)。 4. 數(shù)據(jù)操作與存儲: 1)數(shù)據(jù)來源; 2)數(shù)據(jù)類型; 3)存儲方式。 Android 應(yīng)用程序組成 Android 應(yīng)用程序由一些松散連系的組件構(gòu)成,遵守著一個應(yīng)用程序清單(manifest),這個清單描述了每個組件以及它們?nèi)绾谓换?,還有包含了應(yīng)用程序的硬件和平臺需求的元數(shù)據(jù) (metadata),各組件如下所示。 Acitvities 用視圖 (View)構(gòu)成GUI 來顯示信息、響應(yīng)用戶操作。 2. Services 應(yīng)用程序中的隱形工作者 Service 組件在后臺運行,更新你的數(shù)據(jù)源和可見的 Activities,觸發(fā)通知(Notification)。 3. Content Providers 可共享的數(shù)據(jù)存儲 Content Providers 用于管理和共享應(yīng)用程序數(shù)據(jù)庫。這表示你可以配置自己的 Content Providers 以允許其他應(yīng)用程序的訪問,用他人提供的 Content Providers 來訪問他人存儲的數(shù)據(jù)。 4. Broadcast Receivers Intent 廣播的消費者 如果你創(chuàng)建并注冊了一個 Broadcase Receiver,你的應(yīng)用程序就可以監(jiān)聽匹配了特定過濾標(biāo)準(zhǔn)的廣播 Intent。 7 Android 活動的生命周期 Android 的生命周期是 Android 系統(tǒng)中進程從啟動到終止的所有階段,也就是 Android 程序啟動到停止的全過程。 圖 Android 活動生命周期圖 活動的運作流程 onCreate()當(dāng)活動第一次創(chuàng)建時被調(diào)用。這個方法的參數(shù)的一個包含活動之前狀態(tài)的 Bundle 對象,如果那個狀態(tài)被捕獲。緊跟著的方法總是onRestart()。 如果活動是變?yōu)榍芭_接下來調(diào)用 .如果活動是變?yōu)榍芭_接下來調(diào)用 onResume();如果活動變?yōu)殡[藏接下來調(diào)用 onStop()。 onPause()在活動中是與 onReaume()相對應(yīng)的階段?;顒拥纳芷谶M一步細化,可以分為:全周期( Full Lifetime) 可視期( Visible Lifetime) 激活期( Active Lifetime) ,如圖 所示。在一些情況下,終止一個活動并不調(diào)用 onDestroy。我們可以在 onCreate 中利用這個參數(shù)來恢復(fù) UI 狀態(tài)數(shù)據(jù),或者重寫數(shù)據(jù),或者重寫 onRestoreInstanceState 。 Visible Lifetime 可視期介于調(diào)用 onStart 與 onStop 之間。一個 Activity 在其生命周期中是有可能經(jīng)歷多個可視期的。當(dāng)活動由不可見狀態(tài)轉(zhuǎn)化為可見狀態(tài)時,在 onStart 中再啟動相關(guān)的線程和服務(wù)。在活動不可見時我們需要取消注冊接受者( Receivers)。一個活動被激活,它將處于前景屏幕,同時響應(yīng)用戶的事件。 在調(diào)用 onPause 之前,活動會調(diào)用 onSaveInstanceState 來保存活動的 UI 狀態(tài)到 Bundle,這個 Bundle 就是 onCreate 和 onRestoreInstanceState 這兩個方法的參數(shù)了。多數(shù)的活動都重寫 onPause 方法來提交未保存的數(shù)據(jù),我們也可以在此選擇是否暫停線程,廣播接收者,這完全依軟件架構(gòu)本身而定。 藍牙協(xié)議與規(guī)范 藍牙協(xié)議堆棧 藍牙協(xié)議堆棧依照其功能可分四層: 1. 核心協(xié)議層( HCI、 LMP、 L2CAP、 SDP)。 3. 電話控制協(xié)定層( TCSBIN)。 藍牙規(guī)范 藍 牙規(guī)范( Profile)是指藍牙通信在那一種用途下應(yīng)該使用的通信協(xié)定和相關(guān)的規(guī)范 [6]。 SIG 認為藍牙設(shè)備有 4 個最基本的Profile: General Access Profile( GAP)。 Serial Port Profile( SPP) 。 藍牙技術(shù)的缺點 早期的 和 版本存在多個問題,多家廠商指出他們的產(chǎn)品互不兼容。 Bluetooth 在 的電波干擾問題一直為大家所詬病,特別和無線局域網(wǎng)間的互相干擾問題。 11 低耗電藍牙與經(jīng)典藍牙對比 隨著藍牙技術(shù)的發(fā)展,藍牙從單一功耗發(fā)展成為根據(jù)具體用途決定具體功耗的設(shè)備,其具體 參數(shù)如表 34 所示 [8]。這個應(yīng)用框架通過 Android Bluetooth APIs 提供相應(yīng)的藍牙功能接口。 使用 Bluetooth APIs,安卓應(yīng)用可以實現(xiàn)以下功能: 1. 查找其他藍牙設(shè)備。 3. 建立 RFCOMM 頻道。 5. 從其他設(shè)別傳送和接收數(shù)據(jù)。 基于 Android 系統(tǒng)的藍牙基礎(chǔ) 這個文檔描述怎么利用 Android Bluetooth APIs 去完成需要使用藍牙進行通信的四個主要任務(wù):設(shè)置藍牙,在本地尋找可成對的或者有效的設(shè)備,連接設(shè)備,在設(shè)備間轉(zhuǎn)移數(shù)據(jù)。這里有你需要創(chuàng)建藍牙連接的類和接口的 概述。 BluetoothAdapter 是所有藍牙互動的入口點。 2. BluetoothDevice BluetoothDevice 代表遠程的藍牙設(shè)備(及被連接的設(shè)備)。這是一個通過 InputStream 和OutputStream 連接點允許應(yīng)用程序與其他藍牙裝置進行數(shù)據(jù)交換。為了連接兩臺 Android 設(shè)備,一臺設(shè)備必須使用這個類打開這個 13 服務(wù)。BluetoothServerSocket 將返回一個已經(jīng)連接上了的 socket。這是一個只讀的屬性定義主設(shè)備的和次要設(shè)備的類和它的服務(wù)。 6. BluetoothProfile 代表了藍牙配置文件的接口。一個例子是免提配置 文件。 7. BluetoothHeadset 提供將藍牙耳機使用到移動手持設(shè)備上的支持。 8. BluetoothA2dp 定義高品質(zhì)的音頻,可以從一個設(shè)備傳輸?shù)搅硪粋€通過藍牙連接。 9. BluetoothHealth 代表醫(yī)療設(shè)備規(guī)范代理控制藍牙服務(wù)。你必須擴展這個類并實現(xiàn)回調(diào)方法來接收更新應(yīng)用程序的注冊狀態(tài)和藍牙信道狀態(tài)的變化。 12. 一個通知 BluetoothProfile 的 IPC 客戶端已連接到或從服務(wù)斷開的接口( 即,運行的特定配置文件的內(nèi)部服務(wù))。 您必須要求藍牙權(quán)限,以便執(zhí)行任何藍牙通訊,如請求一個連接,接受連接,傳輸數(shù)據(jù)。僅能夠發(fā)現(xiàn)本地藍牙設(shè)備的大多數(shù)應(yīng)用程序都需要這個權(quán)限。注:如果您使用許可 BLUETOOTH_ADMIN,然后還必須有 BLUETOOTH 權(quán)限。 如果不支持藍牙,那么你應(yīng)該禁用任何藍牙功能。這種設(shè)置通過 BluetoothAdapter,并且需這兩步才能完成。為了獲得bluetoothAdapter,可以調(diào)用 getDefaultAdapter 靜態(tài)方法。如果返回的是 null,怎么表示該設(shè)備不支持藍牙 [10]。調(diào)用 isEnabled()去檢查藍牙當(dāng)前是否可見。為了請求藍牙可見,可以調(diào)用 startActitivityForResult(),并 ACTION_REQUEST_ENABLE 設(shè)置動作意圖。 將出現(xiàn)一個對話框要求用戶權(quán)限啟用藍牙,如果用戶回答“是”,系統(tǒng)將開始啟用藍牙和焦點將返回到您的應(yīng)用程序。 如果啟用藍牙成功,你的生命周期通過 onActivityResult()回調(diào)方法接收RESULT_OK 結(jié)果代碼。 或者,您的應(yīng)用程序也可以監(jiān)聽 ACTION_STATE_CHANGED 廣播意向,當(dāng)藍牙狀態(tài)已經(jīng)改變該系統(tǒng)將播出。這些額外的字段可能 的 值 是 STATE_ON STATE_TURNING_ON , STATE_TURNING_OFF ,STATE_OFF。 查找設(shè)備 通過 BluetoothAdapter,你可以找到遠程藍牙設(shè)備,通過設(shè)備發(fā)現(xiàn),或通過查詢設(shè)備(連接)的列表進行匹配。然而,只有當(dāng)它可以被發(fā)現(xiàn)時。如果一個設(shè)備是可被發(fā)現(xiàn)的,它會分享一些信息,如設(shè)備的名稱,類別,和其唯一的 MAC 地址發(fā)現(xiàn)請求。當(dāng)設(shè)備配對后,該設(shè)備的基本信息(如設(shè)備的名稱,類 別,和 MAC 地址)將被保存,并可以使用藍牙 API 讀取。 配對和連接之間是有區(qū)別的。有一個可用于認證的密鑰共同的鏈路,并且能夠與對方建立加密連接。目前 Android 的藍牙 API 的 RFCOMM 連接建立前要求設(shè)備進行配對(配對時自動與藍牙 API執(zhí)行你啟動一個加密的連接)。然后將其存在一個藍牙設(shè)備數(shù)組中。 發(fā)現(xiàn)設(shè)備 開始發(fā)現(xiàn)設(shè)備時,只需調(diào)用 startDiscovery()。這個過程通常約 12 秒,查詢掃描隨后由頁面掃描每個發(fā)現(xiàn)的設(shè)備來檢索它的藍牙名稱。對于 每個設(shè)備,系統(tǒng)將會通過 ACTION_FOUND意向進行廣播。 可被發(fā)現(xiàn)設(shè)備 如果你想使本地設(shè)備可以被其他設(shè)備發(fā)現(xiàn),調(diào)用 startActivityForResult( Intent, int)和 ACTION_REQUEST_DISCOVERABLE 的行動意圖。默認情況下,該裝置將可被發(fā)現(xiàn) 120 秒。一個應(yīng)用程序可以設(shè)置的最大持續(xù)時間為 3600 秒,和值為 0 意味著設(shè)備總是發(fā)現(xiàn)。例如,這個片段的持續(xù)時間設(shè)置為 16 300 秒,將顯示一個對話框,要求用戶設(shè)置設(shè)備權(quán)限以使其可發(fā)現(xiàn)。如果用戶回答“否”或者發(fā)生錯誤,結(jié)果代碼將被RESULT_CANCELED。當(dāng)服務(wù)器和客戶端都有一個連接 BluetoothSocket在同一個 RFCOMM通道就被 認為是服務(wù)器和客戶端連接到對方了。本節(jié)介紹如何啟動兩個設(shè)備之間的連接。當(dāng)一個傳入連接被接受,服務(wù)器將接受客戶端。 服務(wù)器連接 當(dāng)你想連接兩個設(shè)備,一個設(shè)備必須通過調(diào)用 BluetoothServerSocket 作為服務(wù)器。BluetoothServerSocket 可以(而且應(yīng)該)被丟棄,除非你想接受更多的連接。 1. 通過調(diào)用 listenUsingRfmWithServiceRecord(String,UUID)來獲取BluetoothServerSocket。 UUID 被包含在 SDP 條目中,是用來規(guī)定與客戶端設(shè)備的連接協(xié)議。這些 UUID 必須匹配才能被接受的連接(下一步)。它會返回連接已接受或已發(fā)生異常這兩種情
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1