点击即可连接到特定的蓝牙设备

时间:2015-08-10 13:52:28

标签: android android-bluetooth

我尝试使用我的Android APP连接到特定设备,直到现在我能够做的是让配对项目执行此操作:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set < BluetoothDevice > pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
    for (BluetoothDevice device: pairedDevices) {
        mDeviceName.add(device.getName());
        mDeviceMAC.add(device.getAddress());

    }
}
bluetoothClass.setDeviceName(mDeviceName);
bluetoothClass.setDeviceMac(mDeviceMAC);

我获得了所有配对设备的MACDevice name。我想做的是当我选择一个连接到Bluetooth设备时。

实施例

Samsung S4当我打开Bluetooth时会弹出Dialog whitch包含我所有配对的设备,当我点击它连接的任何人时(我&#39;我和#39;我能够...)所以基本上我想这样做,因为现在我已经得到配对的设备(我不知道它是不是最好的方法来获得它但确实如此)然后当用户点击它连接到设备的任何人时。

这是question之类的内容,但不幸的是没有答案。

1 个答案:

答案 0 :(得分:6)

在这种格式下给你一个例子是不可能的,所以我已经为你提供了 有一个很好的样本和有用的链接,可以帮助您理解样本。

我建议你按照我提供的步骤进行操作,然后按照我的步骤进行操作 具体问题,您可以使用您所拥有的代码段将其带到此处 困难。

我建议您使用下载此示例代码:
http://developer.android.com/samples/BluetoothChat/index.html

如果你还没有,最好先研究一下:
http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html

这是一个很好的教程,他们有很多教程:
http://www.tutorialspoint.com/android/android_bluetooth.htm

您的清单中需要以下权限:

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

这是一个建议使用的意图,以检查BT是否已启用:

if (!mBluetoothAdapter.isEnabled()) {
    android.content.Intent enableIntent = new android.content.Intent(
           android.bluetooth.BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
}

并使您的设备可被其他设备发现:

if (mBluetoothAdapter.getScanMode() !=
        android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
    android.content.Intent discoverableIntent =
        new android.content.Intent(
            android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    discoverableIntent.putExtra(
        android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
                300); // You are able to set how long it is discoverable.
    startActivity(discoverableIntent);
}

正如我在my answer here中提到的那样:

  

您可以避免使用意图搜索配对设备。什么时候   连接到未配对的设备时,会弹出通知   要求配对设备。配对后,此消息不应显示   对于这些设备,连接应该是自动的(根据   如何编写程序)。

     

我使用意图启用蓝牙,并制作我的设备   可发现的,我然后设置我的代码连接,并按一个按钮   连接。在您的情况下,您需要确保您的配件   也可以发现。在我的情况下,我使用一个独特的UUID和两个设备   必须认识到这一点才能联系只有你这样才能使用   编程两个设备,无论是Android还是一个Android和   另一种设备类型。

您需要了解如何使用套接字,这就是设备的通信方式  我建议研究这两个链接:

http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html

套接字用于设置设备之间的连接。将有一个服务器套接字和设备套接字(由许多因素决定,程序员,实际设备)。服务器套接字侦听传入连接,当接受连接时,设备连接,每个连接都有一个简单的套接字。

我不确定您对线程了解多少。 需要使用线程管理连接:

http://developer.android.com/guide/components/processes-and-threads.html
http://android-developers.blogspot.com.au/2009/05/painless-threading.html

设备之间的连接在与用户分开的线程上进行管理  接口线程。这是为了防止手机锁定  建立,寻求和建立BT连接。

例如:

AcceptThread - 侦听连接并接受连接的线程(通过serversocket)。该线程可以运行一段时间,等待设备连接。

ConnectThread - 连接到服务器的设备用于连接到serversocket的线程。

ConnectedThread - 这是管理两个套接字之间连接的线程。

如果这有助于您,请告诉我。