我尝试使用我的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);
我获得了所有配对设备的MAC
和Device name
。我想做的是当我选择一个连接到Bluetooth
设备时。
当Samsung S4
当我打开Bluetooth
时会弹出Dialog
whitch包含我所有配对的设备,当我点击它连接的任何人时(我&#39;我和#39;我能够...)所以基本上我想这样做,因为现在我已经得到配对的设备(我不知道它是不是最好的方法来获得它但确实如此)然后当用户点击它连接到设备的任何人时。
这是question之类的内容,但不幸的是没有答案。
答案 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 - 这是管理两个套接字之间连接的线程。
如果这有助于您,请告诉我。