【问题标题】:Bluetooth android server client with a headset带耳机的蓝牙 android 服务器客户端
【发布时间】:2013-08-14 18:23:34
【问题描述】:

我正在尝试在 android 上创建一个服务器来监听传入的连接,例如我拥有的特定耳机。

我已经阅读了很多教程、StackOverflow 中的帖子和 Android|Developer 中的帖子,但我似乎不明白一些事情。

1) UUID,它是每个蓝牙设备的特定地址吗?还是需要在服务器和客户端中才能创建连接的共享密钥?我的猜测是后者,因为那里还有 MAC 地址......

2) 当我将耳机与手机配对时,耳机会保存上次配对设备的 MAC\UUID 吗?

3) 蓝牙芯片是否也能以这种方式工作?手机开机后立即连接到配对设备,所以我的猜测是它为每个配对设备打开一个 Socket 并等待它打开,是真的吗?

4) 是否有可能完成我正在尝试的事情?意思是创建一个蓝牙服务器套接字来接受来自耳机的连接?

服务器端的代码示例:

//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();

提前致谢。

【问题讨论】:

    标签: java android bluetooth uuid headset


    【解决方案1】:

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

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

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

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

    希望这会有所帮助;)

    【讨论】:

    • 谢谢 1 ,但这不是我想要的,我希望在 2 ,3 ,4 上得到更专业的答案 .. 配对设备后,它可以连接到android 在 2 秒内无论手机是否处于睡眠状态……这就是我想要实现的目标 ..
    • 所以也给我更多的专业信息:)。当您第一次配对耳机时,您是否有某种配置?还是每次都要选择耳机设备?如果您想在设备处于睡眠状态的情况下建立连接,那么它可能更难做到。或者您可以使用Service。您为什么不尝试修改 BluetoothChat 示例以获取您想要的信息?
    • 我想了解蓝牙设备的“生命周期”,在您通过设置将设备与操作系统蓝牙配对后,您只需打开设备,它就会自动连接到您的设备电话,不管是睡着还是醒着。所以我想我真正想知道的是如何模仿这种行为。最重要的是,在我配对设备后,操作系统是否会打开一个套接字等待该特定设备尝试连接它?再次感谢...
    • 然后蓝牙设备可以创建一个连接rfcommsocket。要实现这种功能,您只需要创建一个服务,然后创建一个蓝牙监听套接字。当您创建监听套接字时,Android 会获取 UUID 和蓝牙服务名称,以将所有数据重定向到您的应用或服务。然后,很容易制作一个管理传入连接的应用程序。当您启动蓝牙时,Android 在每个可用通道上打开 listenerign 套接字,查看注册的 UUID/BT 服务名称以查看它是否必须重定向。希望这次能有所帮助;)
    • 我想我明白你的意思,是的,它有更多帮助;)。任何代码示例可能吗?当你的意思是注册 UUID 你的意思是广播 uf UUID ?再次感谢老兄。
    【解决方案2】:

    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 的帮助。

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 2018-01-01
      • 2013-06-21
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多