安卓工业平板电脑的蓝牙开发教程

  
 <代码>开发系统:Android4.4.2运行平台:广州微嵌安卓工业平板电脑
  安卓的蓝牙的打开包括获取蓝牙模块,搜索蓝牙设备,蓝牙设备间的配对,连接跟通信等部分。
  1,安卓中使用蓝牙模块需要蓝牙的使用权限,需要在AndroidMainfest.xml中声明: 
  

允许程序连接到已配对的蓝牙设备
& lt; uses-permission android: name=癮ndroid.permission.BLUETOOTH"/祝辞
允许程序发现和配对蓝牙设备
& lt; uses-permission android: name=癮ndroid.permission.BLUETOOTH_ADMIN"/祝辞

  

2,获取蓝牙适配器并打开蓝牙

  

//获取蓝牙适配器
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter ();
如果(mBluetoothAdapter==null) {
吐司。makeText(这个“不支持蓝牙设备“,Toast.LENGTH_LONG),告诉();bluetoothSwitch.setEnabled(假);
返回;
}
打开蓝牙设备
//判断蓝牙设备是否处于关闭状态,如果是则打开蓝牙
如果(! mBluetoothAdapter.isEnabled ()) {
如果(mBluetoothManager.enable()){//打开蓝牙设备
//开启蓝牙后,需设置蓝牙为可发现状态,这样其它的蓝牙设备才能搜索到。
意图discoverableIntent=new意图
(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//最后的参数设置可见的时间,最长为300年代,设为0表示一直可见
discoverableIntent.putExtra (
BluetoothAdapter。EXTRA_DISCOVERABLE_DURATION, 0);
startActivity (discoverableIntent);
//成功打开蓝牙后开始搜索附近的蓝牙设备
mBluetoothAdapter.startDiscovery ();
//停止搜索:mBluetoothAdapter.cancelDiscovery ();
其他}
} {
//关闭蓝牙设备
mBluetoothManager.disable ();
}
//获取已配对的蓝牙设备
Set

Bondedlist=mBluetoothAdapter.getBondedDevices ();   

3,定义广播接收,在开始搜索附近的蓝牙设备,系统回发出三个搜索状态的广播

  

BluetoothDevice。ACTION_FOUND//搜索到设备
BluetoothAdapter。ACTION_DISCOVERY_STARTED//开始搜索
BluetoothAdapter。ACTION_DISCOVERY_FINISHED//搜索结束
定义广播接收相应的广播状态
private class BluetoothReceive extends BroadcastReceiver{@Override
br/>@Override
br/>@Override
//TODO 自动生成的方法存根
try {
//该方法是服务器阻塞等待客户端的连接,
//监听到有客户端连接返回一个BluetoothSocket的实例
socket=mServerSocket.accept();
Log.d("Server", "以连接");
//开启读取线程读取客户端发来的数据
read=new readThread();
read.start();
} catch (IOException e) {
//TODO 自动生成的 catch 块
e.printStackTrace();
}
super.run();
}
}
读取数据:
public class readThread extends Thread{@Override
br/>@Override
//TODO 自动生成的方法存根
if(socket.isConnected()){
try {
//获取socket的InputStream并不断读取数据
InputStream in=socket.getInputStream();
byte[] buff=new byte[1024];
while(!isInterrupted()){
int size=in.read(buff);;
if(size>0){
Log.d("RECVDATA", String.valueOf(buff));
}
}
in.close();
} catch (IOException e) {
//TODO 自动生成的 catch 块
e.printStackTrace();
}
}
super.run();
}
}
发送数据:
public void write(String str){
if(socket.isConnected()){
try {
//获取socket的OutputStream并写入数据
OutputStream out=socket.getOutputStream();
out.write(str.getBytes());
out.close();
} catch (IOException e) {
//TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
//关闭服务器:
mServerSocket.close();
//关闭BluetoothSocket:
Socket.close();

  

6,客户端:

  

获取一个BluetoothSocket的实例并向服务器发送连接请求
公共类ConnectThread扩展线程{@Override
br/> @Override
//TODO自动生成的方法存根
尝试{
//获取BluetoothSocket实例并连接服务器,该处的uuid需与服务器短
//的uuid一致才能连接成功,connect()是回阻塞的。
套接字=mBluetoothDevice
.createRfcommSocketToServiceRecord (uuid);
socket.connect ()
Log.d (“TAG",“连接成功“);
阅读=new ReadThread ();
read.start ();
}捕捉(IOException e) {
//TODO自动生成的catch块
e.printStackTrace ();
}
super.run ();
}
}
客户端的读取跟发送与服务器的相同。

  
 <代码>至此安卓系统工业平板电脑的蓝牙的基本功能就基本完成了,在两块都开启了蓝牙的安卓设备上分别建议服务器跟客户端,并进行连接,连接成功后双方就可以通过蓝牙进行通信了。

安卓工业平板电脑的蓝牙开发教程