Android蓝牙4.0 Ble读写数据详解 -1 有更新!

2017-04-27

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

评论
发表评论
validate
取消