Ble藍牙API

Ble藍牙API

1.獲取藍牙管理器

  • BluetoothManager buetoothManage = getSystemService(Context.BLUETOOTH_SERVICE);
    2.獲取藍牙適配器
  • BlueToothAdapter bluetoothAdapter = bluetoothManager.getAdapter();

3.獲取藍牙掃描器

  • bleScanner = bluetoothAdapter.getBluetoothLeScanner();
  • bleScanner.startScan(scanCallback);
// BLE掃描回調(diào)
    private final ScanCallback scanCallback = new ScanCallback() {
        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            super.onScanResult(callbackType, result);
            
            BluetoothDevice device = result.getDevice();
            String deviceName = device.getName();
            
            // 過濾設(shè)備名稱
            if (deviceName != null && deviceName.contains(DEVICE_NAME_FILTER) && 
                !deviceList.contains(device)) {
                
                deviceList.add(device);
                devicesAdapter.add(device.getName() + "\n" + device.getAddress());
            }
        }
        
        @Override
        public void onScanFailed(int errorCode) {
            super.onScanFailed(errorCode);
            statusText.setText("掃描失敗: " + errorCode);
            scanning = false;
            btnScan.setText("掃描設(shè)備");
        }
    };

4.連接設(shè)備

   BluetoothGatt   bluetoothGatt ;
    private void connectDevice() {
        bluetoothGatt = selectedDevice.connectGatt(this, false, gattCallback);
    }

private final BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
        /// 監(jiān)聽藍牙連接
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            super.onConnectionStateChange(gatt, status, newState);
            if (newState == BluetoothGatt.STATE_CONNECTED) {
                runOnUiThread(() -> {
                    statusText.setText("已連接,發(fā)現(xiàn)服務(wù)中...");
                });

            } else if (newState == BluetoothGatt.STATE_DISCONNECTED) {
                runOnUiThread(() -> {
                    statusText.setText("已斷開連接");

                });
            }
        }

        /// 發(fā)現(xiàn)BluetoothGatt服務(wù)
        @Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
            super.onServicesDiscovered(gatt, status);
             List<BluetoothGattService> gattServices =gatt.getServices();
            BluetoothGattCharacteristic charData = bluetoothGatt.getService(SERVICE_UUID).getCharacteristic(DATA_UUID);
            BluetoothGattCharacteristic charHeartbeat = bluetoothGatt.getService(SERVICE_UUID).getCharacteristic(HEARTBEAT_UUID);
            //設(shè)置開啟特性監(jiān)聽,這樣onCharacteristicChanged才會有回調(diào)數(shù)據(jù)
            bluetoothGatt.setCharacteristicNotification(charData, true);
            bluetoothGatt.setCharacteristicNotification(charHeartbeat, true);

        }
        /// 特性變化時,收到通知
        @Override
        public void onCharacteristicChanged(
                BluetoothGatt gatt,
                BluetoothGattCharacteristic characteristic
        ) {
            super.onCharacteristicChanged(gatt, characteristic);
            // 這里處理從BLE設(shè)備接收到的數(shù)據(jù)
            byte[] data = characteristic.getValue();
            if (data != null && data.length > 0) {
                String receivedData = new String(data, StandardCharsets.UTF_8);

                // 在主線程更新UI
                runOnUiThread(() -> {
                    //parseAndDisplayData(receivedData);
                });
            }
        }
    };

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • """1.個性化消息: 將用戶的姓名存到一個變量中,并向該用戶顯示一條消息。顯示的消息應(yīng)非常簡單,如“Hello ...
    她即我命閱讀 5,431評論 0 6
  • 1、expected an indented block 冒號后面是要寫上一定的內(nèi)容的(新手容易遺忘這一點); 縮...
    庵下桃花仙閱讀 1,107評論 1 2
  • 一、工具箱(多種工具共用一個快捷鍵的可同時按【Shift】加此快捷鍵選取)矩形、橢圓選框工具 【M】移動工具 【V...
    墨雅丫閱讀 1,633評論 0 0
  • 跟隨樊老師和伙伴們一起學(xué)習(xí)心理知識提升自已,已經(jīng)有三個月有余了,這一段時間因為天氣的原因休課,順便整理一下之前學(xué)習(xí)...
    學(xué)習(xí)思考行動閱讀 1,044評論 0 2
  • 一臉憤怒的她躺在了床上,好幾次甩開了他抱過來的雙手,到最后還堅決的翻了個身,只留給他一個冷漠的背影。 多次嘗試抱她...
    海邊的藍兔子閱讀 1,029評論 1 4

友情鏈接更多精彩內(nèi)容