gpt4 book ai didi

android - 为具有现有应用程序的设备发现特定的蓝牙设备

转载 作者:行者123 更新时间:2023-11-30 02:49:12 27 4
gpt4 key购买 nike

我正在构建一个应用程序 X,此应用程序需要通过蓝牙连接到具有相同应用程序 (X) 的其他设备,因此我想列出可用设备,但我只需要列出那些具有相同应用程序 (X) 的设备应用程序 X,有什么方法可以获取安装了应用程序 X 的特定设备?

最佳答案

简而言之:通过蓝牙连接应用程序实例将需要客户端和服务器端的实现,两者都使用相同的服务记录 uuid。

在连接之前,您需要执行蓝牙扫描以查找附近所有可用的 BT 设备。

详细信息:

执行发现

// get adapter
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

// create discovery listener
discoveryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
allDiscoveredDevices.add(device);
}
};

// and register it
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter.addAction(BluetoothDevice.ACTION_FOUND);
return context.registerReceiver(discoveryReceiver, filter);

// start discovert
boolean started = bluetoothAdapter.startDiscovery(); //async call!
if (!started) {
// log error
}

一旦您知道您所在地区的 BT 设备,请尝试使用您应用的 UUID 进行连接:

客户端连接

BluetoothSocket sock = device.createRfcommSocketToServiceRecord(MY_APP_UUID);
try {
sock.connect(context);
// if here: two peers of your app are now connected <--------------------
} catch (Exception e) {
// no peer app found
}

以及BT服务器逻辑:

服务器循环

BluetoothServerSocket ssocket = bluetoothAdapter.listenUsingRfcommWithServiceRecord(name, MY_APP_UUID);

while (serverIsRunning) {
try {
clientSocket = btServerSocket.accept(); // returns a connected socket
} catch (IOException e) {
// log error
}
}

应该明确的是,以上是 naive 编码。现实生活中的 BT 连接要复杂得多。它处理可能依赖于每个对等方操作系统版本的边缘条件。它可能需要您访问隐藏的 API,例如通过反射。

BTWiz ,一个由您真正开发的开源 Android BT 库,可以处理大部分这种复杂性为您提供异步 IO 接口(interface),使 BT 通信变得更加简单。

请随意使用。但即使不是 - 您可能想浏览它的代码并查看它是如何处理的与发现和连接相关的常见 BT 问题。

关于android - 为具有现有应用程序的设备发现特定的蓝牙设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24499019/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com