我正在尝试在 android 上创建一个服务器,它将监听传入的连接,例如我拥有的特定耳机。
我已经阅读了很多教程、StackOverflow 中的帖子和来自 Android|Developer 的帖子,但我似乎不明白一些事情。
1) UUID ,它是每个蓝牙设备的特定地址吗?还是需要在服务器和客户端中才能创建连接的共享 key ?我的猜测是后者,因为那里还有 MAC 地址 ...
2) 当我将耳机与手机配对时,耳机会保存上次配对设备的 MAC\UUID 吗?
3) 蓝牙芯片是否以这种方式工作?手机一开机就立即连接到配对设备,所以我的猜测是它为每个配对设备打开一个套接字并等待它打开,是这样吗?
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();
提前致谢。
最佳答案
1) UUID ,是蓝牙通信的特定ID。当您在 Android 中创建蓝牙套接字时,listenUsingRfcommWithServiceRecord(Activity.APP_NAME, myUUID);
要求 Android 将与 UUID 匹配的蓝牙连接重定向到您的应用。
2) 我不确定。这取决于耳机可以建立的连接类型。当你要用的时候,是需要在Android中选择它,还是直接放上去就可以了?
3) 我不知道。但是你可以看看 Android 源代码 ;)
4) 如果蓝牙耳机可以创建连接套接字,是的,这是可能的
希望这有帮助;)
关于java - 带耳机的蓝牙安卓服务器客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18203962/