移动互联网Android知识Android技术知识

Android蓝牙4.0 Ble读写数据详解 -1

2017-04-27  本文已影响368人  Pencilso

Android蓝牙4.0 Ble读写数据详解 -1

因为最近公司在开发智能硬件这一块,于是就学习了下Android 4.0 Ble的蓝牙开发

刚开始的时候,网上找了很多博客,很多文章,但是大体都差不多,甚至很多一模一样的文章,找不到什么有用的资料,后来干脆放弃网上的资料了,自己动手,用代码来摸索。摸索了挺长时间。
首先  权限肯定是要的:
<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" />
创建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先判断一下 是否已经在列表了  如果不在的话  就添加到listview列表上
        }
    };
    adapter.startLeScan(leScanCallback);

停止扫描

    adapter.stopLeScan(leScanCallback);

开始连接蓝牙:

    /**
     * 需要连接的设备  可以从适配器当中使用MAC地址获取到设备  然后再进行链接  也可以直接从扫描到存储的列表直接取出来
     */
    BluetoothDevice remoteDevice = adapter.getRemoteDevice(address);
    remoteDevice.connectGatt(bluetoothService, false, new BluetoothGattCallback() {
        /**
         * 蓝牙设备状态的监听
         *
         * @param gatt
         * @param status
         * @param newState  蓝牙的状态被改变
         */
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            super.onConnectionStateChange(gatt, status, newState);
            switch (newState) {//对蓝牙反馈的状态进行判断
                case BluetoothProfile.STATE_CONNECTED://已链接
                LogUtils.log("已连接");
            break;
                case BluetoothProfile.STATE_DISCONNECTED://已断开
                LogUtils.log("已断开");
            break;
    }
        }
    });

至此 一个简单的蓝牙链接例子已经结束。之后再详解,传输数据,与读取数据和接收Notify通知。

上一篇下一篇

猜你喜欢

热点阅读