1.開啓本機藍牙android
ble.enable(
function() {
console.log("Bluetooth is enabled");
},
function() {
console.log("The user did *not* enable Bluetooth");
}
);ios
這方法是開啓藍牙功能的方法,在android上會彈出是否開啓藍牙的提示框,肯定會開啓藍牙功能,iOS上有提示,可是點擊肯定也不會打開,好像是iOS的權限不容許,坑,數組
2.掃描藍牙app
ble.scan([], 10, function (device) {//成功的回調函數
$scope.devices = [];
$scope.devices.push(device);
$scope.$apply(function () {
$scope.devices.push(device);
});ionic
return $scope.devices;
}, function(){函數
//失敗的回調函數post
}ui
);spa
藍牙掃描的方法,第二個參數10指的掃描時間,單位是秒,device是掃描的設備插件
3.鏈接其餘設備藍牙
$scope.connectFun=function(device){
ble.connect(device.id, $scope.onConnected, $scope.onError);
}
鏈接藍牙的方法,第一個參數是你掃描到的設備的id,後面的是成功和失敗的回調
4.讀取數據
readCounter = setInterval(function () {
ble.read(device.id, $scope.serviceUUID, $scope.counterCharacteristic, $scope.onDataReader, $scope.onReadError);
}, 1000);
讀取已鏈接藍牙的數據,我用了個定時器,1秒讀一次,
device.id:藍牙id,同第3的device.id
$scope.serviceUUID:藍牙的UUID,具體不懂,每一個藍牙都有,可是這個值須要注意的地方就是它在android和ios上的寫法不同,好比在android上它的值是xxxxfff0-xxxx-xxxx-xxxx-xxxxxxxxxxx,那麼它在ios上就是FFF0,這個能夠用ionic.Platform.isAndroid()進行平臺判斷
$scope.counterCharacteristic:藍牙的特性值,寫法跟UUID相似,在android和ios的差別寫法也跟UUID同樣,剛開始我在android上寫好功能後在iOS上連不上藍牙問題就出在了這裏
$scope.onDataReader:成功的回調,能夠進行讀取數據
$scope.onReadError:失敗的回調
5.讀取數據擴充
$scope.onDataReader=function(buffer){
//buffer就是藍牙讀取的數據,可是須要轉換才能被引用
var data = new Uint8Array(buffer);//Uint8Array對象:8 位無符號整數值的類型化數組。內容將初始化爲 0。若是沒法分配請求數目的字節,則將引起異常。
//這裏能夠一步步打印data而後按須要轉出所需的數據
//將值賦值給頁面上綁定的變量時,若是變量沒有變化,試着用
$scope.$apply(function(){
//將計算後的數據給變量賦值,要用$apply涉及到了ng的髒值檢查機制,有興趣能夠去搜搜相關資料
})
}
6.斷開藍牙
ble.disconnect(device.id, function(){
//do something
}, function(){
//do something
});
功能類似的話,記得斷開後中止定時器