1. 程式人生 > >用VS2017 Xamarin 開發Andriod Bluetooth APP 歷程記錄

用VS2017 Xamarin 開發Andriod Bluetooth APP 歷程記錄

用VS2017 Xamarin 開發Andriod Bluetooth APP 歷程記錄

入門新手

作為一個漫長的軟體開發專案經理以後, 程式碼丟的生了,新技術也丟的生了. 終於辭職以後, 有了大把的時間了, 做了20年IT, 浪了一段時間, 其他技能好像已經不適應了, 就還是撿起程式碼來的有感覺些, 踏實些, 這就是命! 來吧開發一個andriod 藍芽app來玩玩吧. 作為一個C#背景的人來講, 選中Xamarin.Forms作為開端, VS2017下載安裝, 根據微軟的入門指引, 建project, 啟動模擬器。折騰啊, 好電腦還給公司了, 我自己老Y470, 模擬器根本跑不起來, 氣的我奄奄一息. 後來俺家小老闆花了8000多大洋給買了一臺yoga710, 哈哈, 觸屏+輕便, 不如遊戲本有分量, 好吧, 配了兩天環境, demo程式跑起了, 巨醜的andriod app 在模擬器上biubiu發著光了. 接下來就是bluetooth拉, 啥東東呢?

Bluetooth 瞭望

對於一個bluetooth裝置經驗僅限於平時用的無線滑鼠和為了控制體重常早上起來稱體重的好輕app和體重老不見下去數字以外, 其他一無所知. 有網路, 就有知識, 不急, 沒人催出貨, 慢慢來.

  1. Bluetooth Adapter ,藍芽介面卡;在電腦的裝置管理器和手機上都有這貨, 要寫藍芽app, 必定通過程式碼去玩它. 作為一個開發平臺肯定有個啥類去用的, 找找吧. 嗯就是這個類BluetoothAdapter, 怎麼用, 我還不知道.
  2. Bluetooth AccessRight, 你要操縱任何東東, 你得有許可權吧, 在我建的iBoardcast.Andriod專案屬性的Android清單裡, 發現三個相關的許可權;BLUETOOTH/ BLUETOOTH ADMIN/ BLUETOOTH PRIVILEDGED, 這三個許可權各自代表什麼意思呢? 儲存在哪個檔案裡面呢, 點點就知道了. 靠, checkbox, 都可以選, 不是互斥的. 三個貨都點了,查詢bluetooth關鍵字, 在AndriodManifest.xml裡. 所以直接在xml裡改就ok了.
 <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
 <uses-permission android:name="android.permission.BLUETOOTH" />
 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  • BLUETOOTH: 允許程式連線到已配對的藍芽裝置, 請求連線/接收連線/傳輸資料需要改許可權, 主要用於對配對後進行操作; 做Bluetooth App的這個肯定的開.
  • BLUETOOTH_ADMIN: 允許程式發現和配對藍芽裝置, 該許可權用來管理藍芽裝置, 有了這個許可權, 應用才能使用本機的藍芽裝置,
    主要用於對配對前的操作; 做Bluetooth App的這個的開.
  • BLUETOOTH_PRIVILEGED: 只有系統才能獲得這個許可權, 寫app的猿人們就用不著這個, 開啟也沒得用的, 直接跳起跑就是了.

那麼問題來了, 常規Admin按道理比Bluetooth許可權高吧, 開admin就夠了嘛, 可是達人們說優先順序 : BLUETOOTH許可權是BLUETOOTH_ADMIN許可權的前提, 如果沒有BLUETOOTH許可權, 就不能使用BLUETOOTH_ADMIN許可權; 別較勁了, 平臺又不是我們說啥就啥的, 都開吧, 反正就是一句話而已.

許可權還有兩個, 傳說 google在android6.0之後,為了更好的保護使用者的資料安全,所有需要訪問硬體唯一識別符號的地方都需要申請位置許可權,據說還要動態在程式碼裡請求的

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  • ACCESS_COARSE_LOCATION, 允許一個程式訪問CellID或WiFi熱點來獲取粗略的位置.
  • ACCESS_FINE_LOCATION, 允許一個程式訪問精良位置(如GPS)
    這樣說來, 藍芽是通過CellID來的, 應該只打開ACCESS_COARSE_LOCATION 就夠了. 不明白網上大神們都讓兩個都開啟, 浪費資源麼? 不瞭解就先都加上吧. 稍後除錯的時候來試試看.

未完待續, 今天把介面類寫完收工