2014年8月3日 星期日

HC-05 主從一體藍牙模組初體驗 03 (BTSCmode.apk Eclipse 編譯環境說明 )

HC-05 主從一體藍牙模組是藍牙入門套件其中的一個配件,可至露天賣場訂購:

BTSCmode 主畫面

關於 "HC-05 主從一體藍牙模組初體驗" 共分為三篇,裡面說明了 HC-05 處於主動角色與從動角色時如何與手機配對與搜尋周邊藍牙裝置的方法,裡面同樣也針對使用到的 AT 指令做深入的探討與實機演示,並且提供了兩個 Android 手機 APP 軟體做為測試之用 ( 一個可由 Play store 下載;另一個則是經過修改 ( 購買套件者提供原始碼 ),擁有 SPP 藍牙 Server 與 Client 功能的 APP ),這幾篇網頁相關連結如下:
*******************************************************************************
這篇網頁是 "HC-05 主從一體藍牙模組初體驗" 的第三篇。主要是簡單說明 BTSCmode Android 手機 APP 在 Eclipse 的編譯時需要注意的地方,不涉及程式碼的說明,畢竟這不是 Android 手機程式的教學,只是為了讓有原始碼的使用者能夠更方便的做修改並且傳送到自己的手機做測試。
BTSCmode 手機 APP 是一個經過我改寫之後的 Android 手機程式,與藍牙串口助手最大的不同是:它提供 SPP 藍牙 Server 端,可讓 HC-05 在主動模式下自己發動連接,並且進行雙方的通訊。市面上的 SPP 藍牙 APP 幾乎不提供 Server 端功能,雖然 BTSCmode 只是個簡單的訊息互傳程式,發揮的空間卻是很大。

BTSCmode 是使用 Eclipse 寫的,所以如果要開啟這個專案檔,必須先安裝好 Android 手機開發的 Eclipse IDE,相關的資訊除了上網找一下如何安裝之外,也可以直接到 Android Developer Get the Android SDK 上直接下載使用。這部分就不此網頁討論的範圍,所以要改寫與編譯此程式的使用者,必須先自行搞定 Android 手機 Eclipse 開發環境。


** 載入 BTSCmode 

進入到藍牙入門套件的雲端硬碟 codes/Android 資料夾中下載 BTSCmode.zip,再將其解壓縮到任意的作業系統資料夾中。
codes/Android 資料夾

BTSCmode 解壓縮之後的檔案架構如下圖所示,檔案都是直接從目錄中壓縮未經過刪減。
BTSCmode 完整檔案目錄

開啟 Eclipse 匯入 BTSCmode ( File / Import... ),在視窗中選擇 Android / Existing Android Code into Workspace,再按下 "Next"
Import Android Code - 01
在出現的視窗按下 "Browse..." ,瀏覽到剛剛解壓縮檔案所在的上層目錄,按下 "確定" 之後,就會將目錄中的專案檔資料列到下方表格中
Import Android Code - 02

記得一定要點選 "Copy projects into workspace" 後再按下 "Finish"。匯入的專案檔就會整個出現在 Eclipse 左邊的 Project Explorer 視窗中
成功匯入 BTSCmode 到 Eclipse


**** 開始檔案編譯或是重新編譯之前很重要的提醒:

如果直接匯入這檔案到 Eclipse 中是不會出現問題的,只要有安裝編譯所需要的 Android 4.4.2 SDK 就不應該發生問題;但若是做其他修改或是用其他方式來產生這個專案檔,那下面這些東西就是程式成功執行與編譯必須要注意到的地方

  • 由於 BTSCmode 支援 2.3.3 之後的 Android 手機,所以 min SDK Version 是設定為 10,為了避免 appcompat_v7 一直抱錯,所以我是將這東西從 Properties / Android 選項視窗中移除掉了。
    所以,若原本的 Workspace 裡已經有 appcompat_v7 這專案檔,一旦匯入 BTSCmode 報錯,就先把 appcompar_v4 專案檔 "close project" 就可以解決這問題。

  • Android Tools / Expoer Signed Application Package... 匯出 APK 時報錯 "<key> is not translated in <language>",而且是一整個土拉庫。這不會在直接傳送到手機去執行時出錯,但就是會出現在匯出為 APK 時。
    解決的方法就是找到 Id: Missing Translation,將其 Severity 變更為 Warning 或是 Ignore
  • Warning or Ignore the Id of MissingTranslation

  • BTSCmode 預設的 Project Build Target 是 Android 4.4.2,如果你的 SDK Manager 沒有或只有其他版本的,沒關係 ! 只要選擇 Android 2.3.3 以上的 ( API Level >=10 ) 就可以,只要能編譯能夠成功就可以了。

  • 已知問題:

    下面這些列出來的已知問題,希望讓有原始碼的使用者先知道並試著自己去修正 ( 不然就等我寫新的程式時再慢慢修改 )

    • 沒有開啟藍牙的情況下,按下 "AS Client" 或 "AS Server" 程式會掛掉
      按鈕的事件處理沒有處理藍牙是否已開啟的判斷式,不喜歡的話可以在自行加上。

    • 按下 "AS Client" 進入到藍牙搜尋視窗,一定要選擇一個藍牙裝置做連線,否則若按返回鍵,程式會掛掉;沒有搜尋到任何藍牙裝置,按返回鍵,程式會掛掉
      主要是 onActivityResult 裡面設定一定要有東西去連線不然就結速程式。

    • 沒有特別去處理手機直立或是橫向放置時的事件處理
      這會讓當前的 Activity 再重新啟動

  • BTSCmode 實機測試手機機型

    BTSCmode 是使用 Android 4.4.2 編譯,最小 min SDK 建議 >= 10
    • 連線實機測試:Xperia P, Android 4.1.2

    • APK 安裝測試:Xperia P, Android 4.1.2;Xperia L, Android 4.2.2

如果手邊擁有類似的 SPP 藍牙程式,但可以搜尋藍牙裝置卻無法正常與其連線,請注意您 的編譯程式是否選用到 SDK >= 10 的版本。如果是,那就是 RFCOMM 語法不相容的問題,Debug 一下出錯的點,上網找對應的指令就會有解決的方法與程式碼。

以上,"HC-05 主從一體藍牙模組初體驗" 三篇就都已完成,緊接著就是進入到樹莓派的藍牙程式撰寫系列。

不過在這之前,還是讓我先將 USB 藍牙卡在 Windows 7 ( 32-bit ) 與 Windows 8.1 ( 64-bit ) 設置虛擬 COM 通訊埠講完再好好弄成是這一塊吧 !!

*****************************************************************
下一篇:USB 藍牙卡在 Windows 的設置與通訊建立


*****************************************************************



<< 部落格藍牙相關網頁連結 >>

<<樹莓派編輯環境設置系列文章>>

沒有留言:

張貼留言