这些代码我也是从网上看到的 很多个网页都是这样 如果侵权了,告诉我一声 我把这章删掉。我写这些只是做个日记而已
一:先打开蓝牙,代码如下
blueadapter.isEnabled() 判断蓝牙是否开启
//确认开启蓝牙
if(!blueadapter.isEnabled()){
Log.i(getClass().getName(), "isEnabled=="+blueadapter.isEnabled());
//请求用户开启
Intent intent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, RESULT_FIRST_USER);
//使蓝牙设备可见,方便配对
Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);
startActivity(in);
//直接开启,不经过提示
blueadapter.enable();
}
1,点击搜索之前先注册搜索蓝牙的广播
hasregister是否注册过
//注册蓝牙接收广播
if(!hasregister){
hasregister=true;
IntentFilter filter=new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(mydevice, filter);
}
<pre name="code" class="java">2.点击搜索后先判断是否在搜索中 调用blueadapter.isDiscovering()方法如果是就取消搜索blueadapter.cancelDiscovery();
否则就开启搜索 blueadapter.startDiscovery(); 不过在开启搜索之前可以通过下面的方法获取到已经配对过的设备
Set<BluetoothDevice> device=blueadapter.getBondedDevices();
for(Iterator<BluetoothDevice> it=device.iterator();it.hasNext();){
BluetoothDevice btd=it.next();
}
3.调用了blueadapter.startDiscovery()方法后就就可以触发之前的注册的广播了。(如果附近有蓝牙设备的话)在广播接收器里面
调用Set<BluetoothDevice> device=blueadapter.getBondedDevices(); 可以获取到附近的蓝牙设备
3.根据步骤2中获取的蓝牙设备 进行连接获取,步骤2中我们获取到 BluetoothDevice的集合,选择其中一个调用BluetoothDevice.getAddress();方法获取到蓝牙的地址(XX:XX:XX:XX:XX:XX格式)有了地址之后我们需要获取远程蓝牙设备的驱动
BluetoothDevice device = BluetoothAdapter.getRemoteDevice(address);
之后在开启线程获取socket
new Thread(new Runnable(
public void run() {
Socket socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
socket.connect();
}
)).start();
拿到Socket后就可以进行读取或者发送数据了
以上就是蓝牙客户端的大概就这样子了~~细节木有~~至于服务端的那个Scoket怎么写的我就不知道了~~~如果是啥硬件设备的话 比如平衡车~啥的应该有提供啥jar包和接口文档啥的吧~。。。我猜的
//我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~