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

作者: Pencilso | 来源:发表于2017-04-27 12:22 被阅读368次

    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通知。

    相关文章

      网友评论

      本文标题:Android蓝牙4.0 Ble读写数据详解 -1

      本文链接:https://www.haomeiwen.com/subject/tjbgzttx.html