1

我正在尝试在 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();

提前致谢。

4

2 回答 2

1

1)UUID,是蓝牙通信的特定ID。当您在 Android 中创建蓝牙套接字时,listenUsingRfcommWithServiceRecord(Activity.APP_NAME, myUUID);要求 Android 将与 UUID 匹配的蓝牙连接重定向到您的应用程序。

2) 我不确定。这取决于耳机可以进行的连接类型。当你想使用它时,你需要在Android中选择它,还是你直接放它就可以了?

3) 我不知道。但是你可以看看 Android 源代码 ;)

4)如果蓝牙耳机可以创建连接插座,是的,有可能

希望这可以帮助 ;)

于 2013-08-13T09:50:35.007 回答
0

1) 是的,UUID 特定于每个设备,为了连接到设备,您需要拥有它的 UUID。如Android SDK的蓝牙聊天示例所示

2)取决于硬件,例如像 HC-06 这样的芯片组确实会保存最后配对的设备 UUID,而 HC-05 则不会...

3)我测试过的耳机(三星制造)充当服务器。因此,通过使用耳机的 UUID 启动蓝牙套接字,您可以连接到它。

4)是的,可以连接到帖子中回答的蓝牙耳机:将 Android RecognizerIntent 与蓝牙耳机一起使用

特别说明:

在没有任何唤醒锁的情况下监听即将到来的连接的最佳方法是注册 BluetoothDevice.ACTION_ACL_CONNECTED 广播并检查每个传入连接的名称\mac\UUID。

感谢 Hoan Nagayu 的帮助。

于 2013-08-15T14:23:57.737 回答