android上位机连接hc-06蓝牙模块(以蓝牙智能小车为例)

假期和同伴做了一个android蓝牙控制小车的项目,他负责下位机代码实现,我负责上位机代码实现。但在蓝牙开发上的经验不算熟悉,在网上查找相关资料的时候也发现很多答案参差不齐,并且也不是用于蓝牙上位机连接的,就参着网上这一块,那一块的说法完成了一个超级简陋的实现。自己是在看不过去,于是又重构了一遍,现在把源码贴出,并且说说连接蓝牙模块的那些事:(源码见最后):
首先,要进行蓝牙连接,必不可少的几个类是:
1.BuleToothAdapter ,这个类是用来创建一个蓝牙实例,并通过实例对象进行蓝牙模块间的连接。获取该类对象的方法为:

BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();

另外,该类只声明一个蓝牙对象,并没有说明会启动蓝牙,所以需要启动蓝牙的时候,需要以下代码:

//边界监测,如果蓝牙已经开启,默认执行。如果蓝牙未开启,则选择启动蓝牙
if (!mAdapter.isEnabled()) {
        mAdapter.enable();//启动蓝牙。
}

注意的是:在某些android系统中,调用该方法会在没有任何提示的情况下直接打开蓝牙。因此我们也可以用另外一种办法打开,代码如下:

Intent requestBluetoothOn = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE);

2.BlueToothSocket,蓝牙间的连接使用的是Socket连接的方式,因此在bluetooth包中集成了一个用于连接蓝牙的socket类,它的作用是通过调用bluetoothsocket.connect()方法进行连接,当然,在此之前,还需要对参数进行设置。

3.BluetoothDevice定义一个蓝牙设备对象,通过BlueToothSocket进行连接。声明一个BluetoothDevic对象的方法为:

BluetoothDevice device =mAdapter.getRemoteDevice(Constant.BLUE_ADDRESS);
//Constant.BLUE_ADDRESS代表需要连接的蓝牙的MAC地址,可通过搜索蓝牙后,调用device.getAddress()方法获得

通过Socket设置蓝牙uuid参数的方法为:

BluetoothSocket mSocket=device.createInsecureRfcommSocketToServiceRecord(Constant.MY_UUID);
//蓝牙连接需要的参数根据实际应用会有不同的类型,此处使用源码中封装的即可(在Util包下Constant.java类中可看到相关信息)

注意:因为是蓝牙上位机,并且只有一台蓝牙小车进行测试,为了使得测试比较方便和快速,因此在后期封装的时候把搜索蓝牙并显示在列表上的操作给去掉了,因此如果需要实现这一步骤的话,其实也可以在源码中进行增添。话不多说,上传送门:
蓝牙控制小车源代码

你可能感兴趣的:(杂谈)