Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在操作\u ACL\u连接后创建与蓝牙设备的套接字连接_Android_Sockets_Bluetooth_Broadcastreceiver - Fatal编程技术网

Android 在操作\u ACL\u连接后创建与蓝牙设备的套接字连接

Android 在操作\u ACL\u连接后创建与蓝牙设备的套接字连接,android,sockets,bluetooth,broadcastreceiver,Android,Sockets,Bluetooth,Broadcastreceiver,如果我的应用程序在接收到ACTION\u ACL\u CONNECTED广播之前正在等待“accept”调用,我可以从蓝牙设备获得工作连接。如果我发出“accept”调用以响应接收到的广播,则无法进行套接字连接 有没有一种方法可以实现这一点,以便我可以设置套接字连接以响应蓝牙事件?我认为没有一种方法可以接受对已连接的操作的响应,这种方法的工作原理与常规TCP套接字类似,只会发生侦听(在蓝牙术语中,这意味着在SDP记录中注册服务UUID并等待传入的连接)进行accept()调用时 如果您担心在ac

如果我的应用程序在接收到ACTION\u ACL\u CONNECTED广播之前正在等待“accept”调用,我可以从蓝牙设备获得工作连接。如果我发出“accept”调用以响应接收到的广播,则无法进行套接字连接


有没有一种方法可以实现这一点,以便我可以设置套接字连接以响应蓝牙事件?

我认为没有一种方法可以接受对已连接的操作的响应,这种方法的工作原理与常规TCP套接字类似,只会发生侦听(在蓝牙术语中,这意味着在SDP记录中注册服务UUID并等待传入的连接)进行accept()调用时


如果您担心在accept调用上阻塞,并且负担不起在accept()上阻塞专用线程,则可以尝试accept(超时)

如果我构建应用程序,使其在客户端设备使用此已知配置文件时随时等待接受SPP连接,我的应用程序将接受并开始处理。但是,如果来自客户端设备的SPP配置文件连接用于其他应用程序,会发生什么情况?我希望可以查看低级别的ACL连接ect广播以确定刚刚播出的设备是否是我的应用程序可以通话的设备,如果不是,我将忽略连接广播。我希望的行为是,如果应用程序尝试“接受”,蓝牙堆栈将首先查看设备是否有低电平连接处于活动状态,并且可能正在尝试套接字连接。如果堆栈未找到这些“未应答”连接中的一个,它将正常阻止。当远程设备发现时,应用程序将通过UUID(对于不同的应用程序是唯一的)注册和标识自己,它通过此UUID找到应用程序/服务,然后连接到此UUID,因此当您等待accept()时对于正在等待连接到此UUID的连接。因此,即使多个应用程序正在使用SPP,accept()也将基于UUID进行定向。此外,您始终可以断开与不想连接的设备的连接。(如果您有办法知道不想连接的设备)如果它是我正在控制的一个可以工作的应用程序,不幸的是,它是一个我无法控制的设备,并且它使用了众所周知的SPP UID。设备构建者使用他们自己的唯一UID会更好,但是那艘船在大约100000台设备之前航行过。您可以在广播后启动服务器: