Android藍芽聯機Demo解析

來源:互聯網
上載者:User

Android藍芽聯機Demo解析
手遊的雙人對戰實現方式有很多,比如: 連網對戰(需要一個伺服器負責轉寄用戶端請求,各種大型手遊的做法)分屏對戰(手機上下分屏,典型的例子就是切水果的雙人對戰)藍芽聯機對戰(通過藍芽聯機,典型的例子是三國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即可)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.