Android藍牙4.0 Ble讀寫數(shù)據(jù)詳解 -1

Android藍牙4.0 Ble讀寫數(shù)據(jù)詳解 -1

因為最近公司在開發(fā)智能硬件這一塊,于是就學習了下Android 4.0 Ble的藍牙開發(fā)

剛開始的時候,網(wǎng)上找了很多博客,很多文章,但是大體都差不多,甚至很多一模一樣的文章,找不到什么有用的資料,后來干脆放棄網(wǎng)上的資料了,自己動手,用代碼來摸索。摸索了挺長時間。
首先  權限肯定是要的:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
創(chuàng)建Activity  然后寫一個Listview 用來展示設備列表  這些我就不寫在文檔了

其次獲取到藍牙的管理類:
    BluetoothManager bluetoothManager = (BluetoothManager) bluetoothService.getSystemService(Context.BLUETOOTH_SERVICE);
    BluetoothAdapter adapter = bluetoothManager.getAdapter();

開啟掃描:
     
    BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
        /**
         *
         * @param device    掃描到的設備
         * @param rssi
         * @param scanRecord
         */
        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
            String address = device.getAddress();
            String name = device.getName();
            // 然后將device先判斷一下 是否已經(jīng)在列表了  如果不在的話  就添加到listview列表上
        }
    };
    adapter.startLeScan(leScanCallback);

停止掃描

    adapter.stopLeScan(leScanCallback);

開始連接藍牙:

    /**
     * 需要連接的設備  可以從適配器當中使用MAC地址獲取到設備  然后再進行鏈接  也可以直接從掃描到存儲的列表直接取出來
     */
    BluetoothDevice remoteDevice = adapter.getRemoteDevice(address);
    remoteDevice.connectGatt(bluetoothService, false, new BluetoothGattCallback() {
        /**
         * 藍牙設備狀態(tài)的監(jiān)聽
         *
         * @param gatt
         * @param status
         * @param newState  藍牙的狀態(tài)被改變
         */
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            super.onConnectionStateChange(gatt, status, newState);
            switch (newState) {//對藍牙反饋的狀態(tài)進行判斷
                case BluetoothProfile.STATE_CONNECTED://已鏈接
                LogUtils.log("已連接");
            break;
                case BluetoothProfile.STATE_DISCONNECTED://已斷開
                LogUtils.log("已斷開");
            break;
    }
        }
    });

至此 一個簡單的藍牙鏈接例子已經(jīng)結束。之后再詳解,傳輸數(shù)據(jù),與讀取數(shù)據(jù)和接收Notify通知。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容