Android藍芽聯機Demo解析

來源:互聯網
上載者:User

標籤:android   style   blog   http   ar   使用   sp   strong   檔案   

寫在前面:

手遊的雙人對戰實現方式有很多,比如:

  • 連網對戰(需要一個伺服器負責轉寄用戶端請求,各種大型手遊的做法)
  • 分屏對戰(手機上下分屏,典型的例子就是切水果的雙人對戰)
  • 藍芽聯機對戰(通過藍芽聯機,典型的例子是三國Kill聯機版)

首先,連網對戰不考慮(成本高,伺服器貴..),而分屏對戰局限性太大(兩個人用一個手機玩,太不方便了)

所以藍芽聯機對戰是不錯的選擇,低成本,可實現(三國Kill就是最好的例子,至少證明了這是可行的)

一.資源搜集

搜尋“安卓開發藍芽聯機”,找到很多有用的資訊,經過篩選發現大多資訊都是與BluetoothChat有關的,瞭解後發現BluetoothChat是一個官方Demo,這就好辦了

先把源碼down過來,又順便找到了前輩的源碼解析,省了好多事兒,簡單整理了一下,資源如下:(前兩個來自網路,後兩個是新鮮出爐的)

  • 官方Demo源碼
  • 前輩的源碼解析  pdf預覽
  • apk檔案(適用於2.3.5到4.2.2)
  • 含詳細注釋的源碼

二.Demo測試

拿到Demo先確定可以用:

  1. 匯入Eclipse,出現紅叉叉,修改AndroidManifest.xml中的SDK版本,紅叉叉沒了
  2. 串連手機,安裝運行,程式異常終止,檢查Log,錯誤資訊為you can not combine custom titles with other title
  3. 最後更改資源檔解決了這個問題,問題詳細及解決方案如下:
  4. 測試成功,真機聯機聊天沒問題

使用Demo中可能遇到的問題:

  • you can not combine custom titles with other title錯誤原因以及怎麼解決?
原因:xml裡面定義的activity的theme和代碼定義的theme不一致,即title樣式衝突
解決方案:把xml裡對應的activity裡的theme改成@android:style/Theme
注意:如果xml裡activity沒有theme標籤,應該添加theme標籤並設定為上面的值

真機運行效果如下:

三.藍芽聯機過程

  1. 聲明藍芽相關許可權(關於許可權的詳細見前輩的源碼解析,不在此贅述)
  2. 擷取本機藍芽適配器(BluetoothAdapter是系統提供的藍芽介面,通過適配器操作本機藍芽)
  3. 掃描可串連的外部藍牙裝置(通過接收藍芽模組返回的廣播訊息得到外部裝置的相關資訊)
  4. 擷取外部裝置的MAC地址
  5. 通過MAC地址建立Socket串連(有了Socket串連就好辦了,下面的工作和一般的Socket聊天程式沒什麼區別了)
  6. 通過Socket串連收發訊息

簡單的說,聯機過程就是上面幾個步驟,筆者對源碼進行理解分析後(參照了前輩的源碼解析),補充了更易讀的注釋,如:

四.總結

源碼分析是一件耗時耗力的事情,但如果有時間的話,這樣的付出絕對是值得的,比單純的copy-modify要好很多,在分析別人的代碼過程中,我們可以得到這些東西:

  • 實現原理(比如用來實現功能的各個組件的分工、互動,而不只是簡單的瞭解代碼塊的功能)
  • 編碼規範(比如一開始會很好奇為什麼要分方法,分類,分層...)
  • 編碼風格(變數、方法、類、包的命名規則,縮排風格...)
  • 小技巧/常識(比如為了避免發布前刪除調試資訊的工作,可以定義一個標識變數表示處於調試階段,把所有輸出調試資訊的程式碼封裝裹在if塊中,發布前只需要把標識變數改為false即可)

Android藍芽聯機Demo解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.