安卓蓝牙通信初步


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);



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值