如何编程连接2个Android设备与蓝牙?

我正在开发一个应用程序,它应该通过蓝牙自动连接2个Android设备。 假设他们已经配对了。 是否有可能实现这一目标?

  • Android的Lollipop默认为移动数据,当Wi-Fi没有互联网接入?
  • 如何检查无限制的Internet访问? (强制门户检测)
  • 打开Android应用程序时,互联网连接上,否则显示没有互联网连接消息
  • 如何从MySql服务器到Android应用程序?
  • 通过互联网(在NAT后面)的Android P2P(直接连接)
  • Android:AirDroid应用程序如何工作?
  • 如何将Android应用程序连接到远程数据库?
  • 连接Android到WiFi企业networkingEAP(PEAP)
  • 当然这是可能的。 我将在文档中做一个简短的教程:

    从BluetoothAdapter开始 – 这是您的蓝牙pipe理器。

    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

    如果bluetoothAdapter为空,则意味着这个Android设备不支持蓝牙(它没有蓝牙无线电,虽然我认为很less遇到这些设备…)

    接下来,确保蓝牙已打开:

     if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, request_code_for_enabling_bt); } 

    如果没有,我们开始要求用户启用它的活动。

    比方说,用户确实启用(我想你应该检查他是否做,在你的onActivityResult方法做)。 我们可以查询配对的设备:

     Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBoundedDevices(); 

    然后循环播放: for(BluetoothDevice device : pairedDevices)并find您要连接的那个。

    一旦你find了一个设备,创build一个套接字来连接它:

     BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID); 

    YOUR_UUID是包含您的应用的特殊ID的UUID对象。 在这里阅读。

    现在,尝试连接(您尝试连接的设备必须在侦听模式下使用相同的UUID创build一个套接字):

     socket.connect(); 

    connect() 阻塞你的线程,直到连接build立,或者发生错误 – 在这种情况下会抛出一个exception。 所以你应该调用connect在一个单独的线程。

    在那里! 您已连接到其他设备。 现在得到input和输出stream:

     InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); 

    你可以开始发送/接收数据。 请记住,这两个动作(发送和接收)都是阻塞的,所以你应该从不同的线程调用这些动作。

    阅读更多关于此的信息,并了解如何在蓝牙文档中创build服务器(这里我们创build了一个客户端) 。