人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述Android - 关闭特定的蓝牙插座相关的知识,希望能为你提供帮助。
我正在尝试使用android设备连接蓝牙设备以检索一些信息。特别是我想在这个UUID上连接到蓝牙耳机:
"0000111E-0000-1000-8000-00805F9B34FB"
要做到这一点,我正在创建一个套接字并以这种方式将其连接到远程设备:
public ConnectThread(BluetoothDevice device) {
// Use a temporary object that is later assigned to mmSocket
// because mmSocket is final.
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothSocket tmp = null;
mmDevice = device;
try {
// Get a BluetoothSocket to connect with the given BluetoothDevice.
// MY_UUID is the app's UUID string, also used in the server code.
tmp = device.createRfcommSocketToServiceRecord(UUID_HF);
} catch (IOException e) {
Log.e(TAG, "Socket's create() method failed", e);
}
mmSocket = tmp;
}public void run() {
// Cancel discovery because it otherwise slows down the connection.
bluetoothAdapter.cancelDiscovery();
try {
// Connect to the remote device through the socket. This call blocks
// until it succeeds or throws an exception.mmSocket.connect();
} catch (IOException connectException) {
// Unable to connect;
close the socket and return.
try {
mmSocket.close();
} catch (IOException closeException) {
Log.e(TAG, "Could not close the client socket", closeException);
}
return;
}// The connection attempt succeeded. Perform work associated with
// the connection in a separate thread.
manageMyConnectedSocket(mmSocket);
}
【Android - 关闭特定的蓝牙插座】当耳机尚未与我的Android设备连接时,它可以正常工作。但是,由于操作系统本身,耳机会自动与我的Android设备连接。在这种情况下,当我执行mmSocket.connect()方法时,它不会返回。我想也许Android已经自动连接另一个具有相同UUID的套接字,因此我的工作不起作用。你认为这是问题吗?如果是,有没有办法关闭我的Android设备和远程蓝牙设备之间的所有插座?或者也许只是困扰我的过程的那个?提前致谢。
答案实际发生的是操作系统正在执行配对的设备标准以节省一些电池,因为搜索过程消耗了大量的能量。既然你已完成搜索,你应该去配对设备中搜索而不是普通搜索,搜索结果应该来自查询配对设备
在执行设备发现之前,值得查询配对设备集以查看是否已知所需设备。为此,请调用getBondedDevices()。这将返回一组代表配对设备的BluetoothDevice对象。例如,您可以查询所有配对设备并获取每个设备的名称和MAC地址,如以下代码段所示:
Set<
BluetoothDevice>
pairedDevices = mBluetoothAdapter.getBondedDevices();
if (pairedDevices.size() >
0) {
// There are paired devices. Get the name and address of each paired device.
for (BluetoothDevice device : pairedDevices) {
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress();
// MAC address
}
}
要启动与蓝牙设备的连接,相关BluetoothDevice对象所需的全部是MAC地址,您可以通过调用getAddress()来检索该MAC地址。您可以在“连接设备”部分中了解有关创建连接的更多信息。
这是谷歌的官方文档,涵盖了蓝牙的每一个细节:https://developer.android.com/guide/topics/connectivity/bluetooth
推荐阅读
- 同步期间Android studio错误(远程主机强行关闭现有连接)
- Android开发 - 通过3G缓慢的互联网连接
- 如何在ACCDB项目中设置Application.CurrentProject.Connection()
- PlayerPrefs没有在android上工作
- Android FileOutputStream位置保存文件
- 恢复android中活动的动态UI元素
- 将Android中的位图保存为外部存储中的JPEG文件夹
- 如何在android中删除包()
- Visual Studio,Android(找出Nuget-packages所需的框架)