cnblog收集:
Android所有关于蓝牙开发的类都在android.bluetooth包下,只有8个类,而我们需要用到了就只有几个而已:
1.BluetoothAdapter
cancelDiscovery()
Intemtenabler=new
startActivityForResult(enabler,reCode);//同startActivity(enabler);
2.BluetoothDevice看名字就知道,这个类描述了一个蓝牙设备
createRfcommSocketToServ
这个方法也是我们获取BluetoothDevice的目的——创建BluetoothSocket
这个类其他的方法,如getAddress(),getName(),同BluetoothAdapter
3.BluetoothServerSocket如果去除了Bluetooth相信大家一定再熟悉不过了,既然是Socket,方法就应该都差不多,
这个类一种只有三个方法
两个重载的accept(),accept(inttimeout)两者的区别在于后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行!
还有一点需要注意的是,这两个方法都返回一个BluetoothSocket,最后的连接也是服务器端与客户端的两个BluetoothSocket的连接
4.BluetoothSocket,跟BluetoothServerSocket相对,是客户端
一共5个方法,不出意外,都会用到
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
1、获取本地蓝牙适配器
mAdapter=
2、打开蓝牙
if(!mAdapter.isEnabled()){
//弹出对话框提示用户是后打开
Intent
startActivityForResult(enabler,
}
3、搜索设备
1)刚才说过了mAdapter.startDiscovery()
是第一步,可以你会发现没有返回的蓝牙设备,怎么知道查找到了呢?向下看,不要急
2)定义BroadcastReceiver,关于BroadcastReceiver不多讲了,不是今天的讨论内容,代码如下
BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {//找到设备
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
Log.v(TAG, "find device:" + device.getName()+ device.getAddress());
}
}
//搜索完成
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
setTitle("搜索完成");
if (mNewDevicesAdapter.getCount() == 0) {
Log.v(TAG,"find over");
}
}
//执行更新列表的代码
}
};
BroadcastReceiver,具体代码如下
IntentFilter
registerReceiver(mReceiver,
filter
registerReceiver(mReceiver,
(这段代码,一般写在onCreate()里..)
3建立连接,首先Android
1)服务器端:
//UUID格式一般是"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"可到
BluetoothServerSocket
serverSocket.accept();
2)客户端:
//还记得我们刚才在BroadcastReceiver获取了BLuetoothDevice么?
BluetoothSocket
clienSocket.connect();
4、数据传递,通过以上操作,就已经建立的BluetoothSocket连接了,数据传递无非是通过流的形式
1)获取流
inputStream
outputStream
2)写出、读入
---------------------------
首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限
步骤一:Setting
通过BluetoothAdapter得到蓝牙的Activity
发送蓝牙连接意图
通过onActivityResult()得到蓝牙连接意图
步骤二:
通过得到开启蓝牙用户名和MAC地址
配对蓝牙
,使设备能够被搜索