Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android藍牙聯機Demo解析

Android藍牙聯機Demo解析

編輯:關於Android編程

手游的雙人對戰實現方式有很多,比如:   聯網對戰(需要一個服務器負責轉發客戶端請求,各種大型手游的做法) 分屏對戰(手機上下分屏,典型的例子就是切水果的雙人對戰) 藍牙聯機對戰(通過藍牙聯機,典型的例子是三國Kill聯機版) 首先,聯網對戰不考慮(成本高,服務器貴..),而分屏對戰局限性太大(兩個人用一個手機玩,太不方便了)   所以藍牙聯機對戰是不錯的選擇,低成本,可實現(三國Kill就是最好的例子,至少證明了這是可行的)   一.資源搜集   搜索“安卓開發藍牙聯機”,找到很多有用的信息,經過篩選發現大多信息都是與BluetoothChat有關的,了解後發現BluetoothChat是一個官方Demo,這就好辦了   先把源碼down過來,又順便找到了前輩的源碼解析,省了好多事兒,簡單整理了一下,資源如下:(前兩個來自網絡,後兩個是新鮮出爐的)   官方Demo源碼 前輩的源碼解析  pdf預覽 apk文件(適用於2.3.5到4.2.2) 含詳細注釋的源碼 二.Demo測試   拿到Demo先確定可以用:   導入Eclipse,出現紅叉叉,修改AndroidManifest.xml中的SDK版本,紅叉叉沒了 連接手機,安裝運行,程序異常終止,檢查Log,錯誤信息為you can not combine custom titles with other title 最後更改資源文件解決了這個問題,問題詳細及解決方案如下: 測試成功,真機聯機聊天沒問題 使用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標簽並設置為上面的值 真機運行效果如下:      三.藍牙聯機過程   聲明藍牙相關權限(關於權限的詳細見前輩的源碼解析,不在此贅述) 獲取本機藍牙適配器(BluetoothAdapter是系統提供的藍牙接口,通過適配器操作本機藍牙) 掃描可連接的外部藍牙設備(通過接收藍牙模塊返回的廣播消息得到外部設備的相關信息) 獲取外部設備的MAC地址 通過MAC地址建立Socket連接(有了Socket連接就好辦了,下面的工作和一般的Socket聊天程序沒什麼區別了) 通過Socket連接收發消息 簡單的說,聯機過程就是上面幾個步驟,筆者對源碼進行理解分析後(參照了前輩的源碼解析),補充了更易讀的注釋,如:       四.總結   源碼分析是一件耗時耗力的事情,但如果有時間的話,這樣的付出絕對是值得的,比單純的copy-modify要好很多,在分析別人的代碼過程中,我們可以得到這些東西:   實現原理(比如用來實現功能的各個組件的分工、交互,而不只是簡單的了解代碼塊的功能) 編碼規范(比如一開始會很好奇為什麼要分方法,分類,分層...) 編碼風格(變量、方法、類、包的命名規則,縮進風格...) 小技巧/常識(比如為了避免發布前刪除調試信息的工作,可以定義一個標識變量表示處於調試階段,把所有輸出調試信息的代碼包裹在if塊中,發布前只需要把標識變量改為false即可)
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved