我对蓝牙连接感到困惑。
前言:通过蓝牙连接 Android 设备时,您可以作为服务器或客户端进行连接
我的理解:作为服务器连接本质上意味着您的设备将托管连接。作为客户端连接意味着您正在由另一台设备托管 - 和/或您要连接的设备是主机。
我正在尝试构建一个可以通过蓝牙连接并控制设备的应用程序。我的第一个用例是我的电视。所以我想制作一个可以连接到我的电视并将其作为 Remote 控制的应用程序。我最初的想法是电视充当服务器。如果我要连接到另一部手机,那么我会想象我的设备需要成为服务器。在大多数情况下,如果我希望我的应用程序充当 Controller ,向其连接的设备发送控制信号 - 假设我的设备是客户端或服务器是否正确?
最佳答案
假设您指的是低功耗蓝牙 (BLE),那么有两种不同类型的角色决定了 Android 中的通信方式:-
中央与外围设备 - 这与连接建立和维护有关,如下所示:-
- 外围设备负责通告其存在并接受传入连接。传感器通常属于这一类。
- 中央设备负责扫描并与远程外围设备建立连接。手机通常属于这一类。
GATT 客户端与 GATT 服务器 - 这决定了建立连接时如何处理通信:-
- GATT 服务器是托管所有数据的设备。同样,传感器通常属于这一类。
- GATT 客户端是从 GATT 服务器读取数据的设备。同样,手机和计算机通常扮演 GATT 客户端的角色。
这两种角色是独立的(即 Central 可以是 GATT 服务器或 GATT 客户端,反之亦然),但在大多数情况下,Central 是 GATT 客户端。
最后,为了回答你的问题,我会让远程 Controller 同时成为中央和 GATT 客户端。这样,您的电视将始终宣传其存在并托管日期,而 Remote 则扫描/连接并读取/写入该数据。
您可以在以下链接中找到更多信息:-
关于Android 蓝牙连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68629411/