我正在尝试在Android上创建一个服务器来监听传入的连接,例如我拥有的特定耳机。
我已经阅读了许多教程,StackOverflow中的帖子以及来自Android | Developer的帖子,我似乎并不了解一些事情。
1)UUID,它是每个蓝牙设备的特定地址吗?或者它是需要在服务器和客户端中创建连接的共享密钥?我的猜测是后者导致MAC地址......
2)当我将耳机与手机配对时,耳机会保存最后配对设备的MAC \ UUID吗?
3)蓝牙芯片是否以这种方式工作?手机在打开时立即连接到配对设备,所以我的猜测是它为每个配对的设备打开一个Socket并等待它打开,是真的吗?
4)有可能完成即时尝试吗?是否意味着创建一个将接受来自头部集的连接的BluetoothServerSocket?
服务器端的代码示例:
//This may b needs to be the UUID of the headset ? or special one ? or what ?
UUID myUUID = UUID.fromString("0000111e-0000-1000-8000-00805f9b34fb");
private final BluetoothServerSocket mServerSocket;
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
tmp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord(Activity.APP_NAME, myUUID);
mServerScooket = tmp;
//Im hoping that this will block until the specific headset will be turned on
socket = mServerSocket.accept();
提前致谢。
答案 0 :(得分:1)
1)UUID,是蓝牙通信的特定ID。当您在Android中创建蓝牙套接字时,listenUsingRfcommWithServiceRecord(Activity.APP_NAME, myUUID);
要求Android将与UUID匹配的蓝牙连接重定向到您的应用。
2)我不确定。这取决于耳机可以连接的类型。当您想要使用它时,是否需要在Android中选择它,或者您可以放置它并且它可以工作?
3)我不知道。但是你可以查看Android源代码;)
4)如果蓝牙耳机可以创建连接插座,是的,可以
希望这会有所帮助;)
答案 1 :(得分:0)
1)是的UUID特定于每个设备,为了连接到设备,您需要拥有其UUID。 如Android SDK的蓝牙聊天示例所示
2)取决于硬件 像HC-06这样的芯片组确实保存了最后配对的设备UUID 虽然HC-05没剂量......
3)我测试的耳机(三星制造)充当服务器。 因此,通过使用耳机的UUID启动BluetoothSocket,您可以连接到它。
4)是的,可以连接到帖子中回答的蓝牙耳机: Using the Android RecognizerIntent with a bluetooth headset
特别说明:
在没有找到任何唤醒锁的情况下收听即将到来的连接的最佳方式是注册BluetoothDevice.ACTION_ACL_CONNECTED广播并检查每个接入连接的名称\ mac \ UUID。
感谢Hoan Nagayu的帮助。