单击一下即可连接到特定的蓝牙设备
Connect to specific Bluetooth device with a click
我正在尝试使用我的 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
。我想做的是当我 select 一个连接到 Bluetooth
设备时。
示例
在 Samsung S4
上,当我打开 Bluetooth
它会弹出一个 Dialog
包含我所有配对设备的窗口,当我点击它连接的任何人时(我已经能够......)所以基本上我想这样做,因为现在我已经获得了配对设备(我不知道这是否是获得它的最佳方式但确实如此)然后当用户点击它连接到设备的任何人。
是这样的question,但不幸的是没有人回答。
这种格式不可能给你举个例子,所以我提供给你
带有很好的示例和有用的链接,可帮助您理解示例。
我建议您按照我提供的步骤进行操作,然后,当您
具体问题,你可以把它带到这里,你有代码片段
困难
我推荐你使用下载这个示例代码:
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"/>
这是一个建议使用的 Intent,用于检查是否启用了 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);
}
正如我在 中提到的:
You can avoid using an intent to search for paired devices. When
connecting to a device that is not paired, a notification will pop up
asking to pair the devices. Once paired this message should not show
again for these devices, the connection should be automatic (according
to how you have written your program).
I use an intent to enable bluetooth, and to make my device
discoverable, I then set up my code to connect, and press a button to
connect. In your case, you will need to ensure your accessories are
discoverable also. In my case I use a unique UUID, and both devices
must recognise this to connect. This can only be used if you are
programming both devices, whether both are android or one android and
one other device type.
您需要了解如何使用套接字,这是设备通信的方式。
我建议研究这两个链接:
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
设备之间的连接由独立于用户的线程管理
接口线程。这是为了防止 phone 在
设置、搜索和建立 BT 连接。
例如:
AcceptThread - 侦听连接并接受连接(通过服务器套接字)的线程。此线程可以 运行 长时间等待设备连接。
ConnectThread - 连接到服务器的设备用来连接到服务器套接字的线程。
ConnectedThread - 这是管理两个套接字之间连接的线程。
如果这对你有帮助,请告诉我。
我正在尝试使用我的 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
。我想做的是当我 select 一个连接到 Bluetooth
设备时。
示例
在 Samsung S4
上,当我打开 Bluetooth
它会弹出一个 Dialog
包含我所有配对设备的窗口,当我点击它连接的任何人时(我已经能够......)所以基本上我想这样做,因为现在我已经获得了配对设备(我不知道这是否是获得它的最佳方式但确实如此)然后当用户点击它连接到设备的任何人。
是这样的question,但不幸的是没有人回答。
这种格式不可能给你举个例子,所以我提供给你 带有很好的示例和有用的链接,可帮助您理解示例。
我建议您按照我提供的步骤进行操作,然后,当您 具体问题,你可以把它带到这里,你有代码片段 困难
我推荐你使用下载这个示例代码:
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"/>
这是一个建议使用的 Intent,用于检查是否启用了 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);
}
正如我在
You can avoid using an intent to search for paired devices. When connecting to a device that is not paired, a notification will pop up asking to pair the devices. Once paired this message should not show again for these devices, the connection should be automatic (according to how you have written your program).
I use an intent to enable bluetooth, and to make my device discoverable, I then set up my code to connect, and press a button to connect. In your case, you will need to ensure your accessories are discoverable also. In my case I use a unique UUID, and both devices must recognise this to connect. This can only be used if you are programming both devices, whether both are android or one android and one other device type.
您需要了解如何使用套接字,这是设备通信的方式。
我建议研究这两个链接:
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
设备之间的连接由独立于用户的线程管理 接口线程。这是为了防止 phone 在 设置、搜索和建立 BT 连接。
例如:
AcceptThread - 侦听连接并接受连接(通过服务器套接字)的线程。此线程可以 运行 长时间等待设备连接。
ConnectThread - 连接到服务器的设备用来连接到服务器套接字的线程。
ConnectedThread - 这是管理两个套接字之间连接的线程。
如果这对你有帮助,请告诉我。