0
点赞
收藏
分享

微信扫一扫

android 蓝牙 通信 bluetooth


此例子基于 android demo

Android的蓝牙开发,虽然不多用,但有时还是会用到,  Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试需要两部手机;
      由于公司用到了蓝牙,所以学习了一下,也和大家分享一下!


总体来说和网络 socket 很相似,监听,连接,成功后,发送数据;



  第一步:

先要在AndroidManifest.xml里加入权限

<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />

<uses-permissionandroid:name="android.permission.BLUETOOTH" />

    看下api,Android所有关于蓝牙开发的类都在android.bluetooth包下,如下图,只有8个类

                

 

  


1、获取本地蓝牙适配器

   

// Get local Bluetooth adapter
       mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
         if(mBluetoothAdapter==null)                 //如果为空可能不存在蓝牙,退出;
         {
              Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
              return;
         }


       

      2、打开蓝牙

if(!mAdapter.isEnabled()){
             //弹出对话框提示用户是后打开
             Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
              startActivityForResult(enabler, REQUEST_ENABLE);
            //不做提示,强行打开
            // mAdapter.enable();
 }

   3, 建立连接,服务器端(BluetoothServerSocket)和客户端(BluetoothSocket)需指定同样的UUID,才能建立连接,因为建立连接的方法会阻塞线程,所以服务器端和客户端都应启动新线程连接

 1)服务器端:

// Unique UUID for this application
     private static final UUID MY_UUID_SECURE =
         UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");
     private static final UUID MY_UUID_INSECURE =
         UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");

BluetoothServerSocket serverSocket = mAdapter. listenUsingRfcommWithServiceRecord(serverSocketName,MY_UUID_SECURE);

serverSocket.accept();

2)客户端:

//还记得我们刚才在BroadcastReceiver获取了BLuetoothDevice么?
  BluetoothSocket clienSocket=dcvice. createRfcommSocketToServiceRecord(UUID MY_UUID_INSECURE);
  clienSocket.connect();

4、数据传递,通过以上操作,就已经建立的BluetoothSocket连接了,数据传递无非是通过流的形式

1)获取流
  inputStream = socket.getInputStream();
  outputStream = socket.getOutputStream();
  2)写出、读入
                     // Read from the InputStream
                     bytes = mmInStream.read(buffer);
 
                     mmOutStream.write(buffer);



举报

相关推荐

0 条评论