1、查询已经成功绑定过的蓝牙
BtnScan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//获得BluetoothAdapter对象,该API是android 2.0开始支持的
//注意操作蓝牙,需要相关权限
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
//adapter不等于null,说明本机有蓝牙设备
final ArrayList<String> array = new ArrayList<String>();
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(SelectBlue.this, android.R.layout.simple_expandable_list_item_1,array);
if(adapter != null){
System.out.println("本机有蓝牙设备!");
//如果蓝牙设备未开启
if(!adapter.isEnabled()){
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
//请求开启蓝牙设备
startActivity(intent);
}
//获得已配对的远程蓝牙设备的集合
Set<BluetoothDevice> devices = adapter.getBondedDevices();
if(devices.size()>0){
for(Iterator<BluetoothDevice> it = devices.iterator();it.hasNext();){
BluetoothDevice device = (BluetoothDevice)it.next();
array.add(device.getName()+": "+device.getAddress());
}
List.setAdapter(aa);
}else{
System.out.println("还没有已配对的远程蓝牙设备!");
}
}else{
System.out.println("本机没有蓝牙设备!");
}
}
});
2、连接指定的蓝牙
device = adapter.getRemoteDevice(Addr);
if(device ==null)System.out.println("Addr=");
try {
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
socket.connect();
//注意指定接收和发送的编码格式,否则对于大于0X80的 char将发送两个字节
mBufferedReaderClient = new BufferedReader(new InputStreamReader(socket.getInputStream(), "Iso8859-1"));
writer = new OutputStreamWriter(socket.getOutputStream(),"Iso8859-1");
//此处不能创建连接线程 否则就直接崩溃
//clientConnectThread = new clientThread();
//clientConnectThread.start();
mreadThread = new readThread(); //启动接收数据线程
mreadThread.start();
mwriteThread = new WriteThread();//启动发送数据线程
mwriteThread.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3、读取数据
if((bytes = mBufferedReaderClient.read(buffer)) > 0 )
{
for(int i=0; i<bytes; i++)
{
buf_data[ReadCnt+i] = buffer[i];
}
4、发送数据
writer.write(SendAction.SendDate);