因為最近天氣冷常常一回家就窩在被窩裡用mac開著Youtube聽歌,因為我的床距離我的書桌有一段距離,有時候Youtube想換一首歌的時候就要離開被窩去換歌,想著想著就想到能不能用手機跟macbook的藍牙連接去操控電腦,所以花了點時間研究了藍牙。
這裡用到iOS開發藍牙的框架是
CoreBluetooth: 一個功能強大的藍牙框架,只支援提供藍牙4.0以上的設備。
相較於前幾個iOS藍牙開發框架GameKit、MultipeerConnectivity只支援iOS設備,CoreBluetooth不局限於iOS設備之間的傳輸,只要有支援BLE4.0標準的設備都可以進行傳輸,所以這裡選擇CoreBluetooth進行開發。
CoreBluetooth主要的架構是分成兩個部分Peripheral跟Central
兩者分別類似Server-Client端的
Peripheral(Server端)
Central(Client端)
Central跟Peripheral用來溝通的橋樑是CBService和CBCharacteristic,兩著皆有唯一的UUID來辨別一個Service跟Characteristic,每個Service可以擁有多個Characteristic,Central跟Peripheral會透過至些UUID來找到彼此進行溝通。
在程式中主要用到CBPeripheralManager和CBCentralManager這兩個類別來進行操作
CBPeripheralManager : 通常用於產生資料,保存資料,發布廣播,讓Central知道可用的Service跟Characteristic。
CBCentralManager : 收Peripheral發出的資料,Central掃描可用的Peripheral並建立連線,建立成功就可以使用這些Peripheral的Service跟characteristic。
Central跟Peripheral的操作流程如下
A.Peripheral
1.Create一個CBPeripheralManager
2.Create一個Characteristic跟Service
3.開始廣播
B.Central
1.Create一個CBCentralManager
2.掃描Peripheral,發現可用的Peripheral建立連線並保存Peripheral和設置 Peripheral的delegate
3.查詢Peripheral的Service和Characteristic,Peripheral的Characteristic的值更新,即可在delegate的method中讀取更新後的值
介紹完基本的藍牙操作後,實作的程式碼位置:
https://github.com/Wei789/RemoteTV
下載完後用Xcode run Peripheral程式,mac要記得開藍牙
執行成功出現這個畫面(mac要停留在這個畫面才能操作)
接著我們先到Youtube去找個影片複製他的網址,按下copy link
然後 Run Central端程式在手機上,貼上剛剛複製的網址
按下確定後mac端程式就成功出現畫面嚕~
這個程式也可以複製你的播放清單,基本提供的操作有
上一首(shift + p)
下一首(shift + n)
暫停播放操作 (space)
S按鈕是用來切換焦點
目前只要這個程式在mac上開啟,我們其實不只是能控制這個程式而已,而是能控制整個電腦,我們手機會傳快捷鍵的熱鍵給電腦,例如暫停就是按下空白鍵(space),如果mac畫面不是停在這個程式而是停在其它程式的話就會變成在其他程式按下空白鍵,希望之後能改進只針對著個程式去做操作而且在背景也能操作。