android - 是否可以使用蓝牙连接 iOS 和 android 设备?

标签 android ios bluetooth core-bluetooth bluetooth-lowenergy

我必须制作一个应用程序来配对 iOS 和 Android 设备(iPhone 5、iPad 3、Galaxy S3、Nexus 7,它们都使用蓝牙 4.0),然后相互发送数据。

  • 这个数据量有限制吗?我们可以发送照片或 PDF 之类的东西吗?

我已经使用 CoreBluetooth 和 Apple 的示例代码在 2 个 iOS 设备之间完成配对和发送数据 BTLE_Transfer

据我了解,外围设备(服务器)可以向中央设备(客户端)发布广告。 这个中央扫描自身,然后通过查找广告服务的 UUID 来尝试找到服务器。

当我在 Android 上创建服务器时,它正在等待连接(监听),我知道我的服务器的 UUID 和 mac 地址。 但是当我用我的 iPhone 扫描时(当然是扫描相同的 UUID),我找不到服务器。

  • 那么android server 有没有可能像iOS 上的Peripheral 一样做广告呢?
  • 或者我的 iPhone 客户端可能会使用服务器的 mac 地址进行连接?

最佳答案

问:这个数据量有限制吗?我们可以发送照片或 PDF 之类的东西吗?

低功耗蓝牙未针对发送大量数据进行优化,也未针对流式传输进行优化。它更适合定期发送小块数据(例如温度读数、时间等)。请看this answer了解 BLE 传输与传统蓝牙有何不同。也就是说,您仍然可以通过 BLE 发送大量数据,而且数据量是无限的。然而,这可能最终变得不可靠并且相对缓慢。

Q:那么android server有没有可能像iOS的Peripheral一样做广告呢?

作为服务器/客户端与作为外设/中心完全不同:-

Peripheral/central 指示如何建立连接。中央设备应启动连接。外围设备应通告并等待连接请求。

客户端/服务器 规定了数据的分布方式。 Gatt 服务器保存数据。 Gatt 客户端可以读取、写入或收到此数据的通知(获得连续的读数流)。在大多数情况下,服务器也是外围设备,但这不是强制性的。

所以回答你的问题,是的,服务器可以像 iOS 上的外设一样做广告。但是,对于 Android,此功能尚不可用,将成为下一个版本 (Android L) 发布的一部分。请看这个answer获取更多信息。

问:或者我的 iPhone 客户端是否可以使用服务器的 mac 地址进行连接?

据我所知,在 coreBluetooth 中,您需要外围设备的 UUID,而不是 MAC 地址才能连接到它。您不需要知道从外围设备通告的服务。最好的办法是扫描外围设备,然后连接到具有 UUID 和/或您知道属于外围设备的广告数据的设备。

希望对您有所帮助。

关于android - 是否可以使用蓝牙连接 iOS 和 android 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302525/

相关文章:

android - 找不到处理 Intent { act=android.bluetooth.adapter.action.STATE_CHANGED } 的 Activity

android - 对用于显示列表的 Textview 和 Listview 感到困惑

ios - 如何 NSLog 进入文件

objective-c - 使用 URL 方案打开应用程序时出现奇怪的 UI 行为

iOS 旋转手机崩溃

iOS/swift : Automatically Pair With Bluetooth Classic Device

android - 如何将小部件放置在 ListView 的上方和下方?

Android NDK - 未找到库

android - Google 登录按钮导致空对象引用

android - 调用AudioManager.setMode(MODE_NORMAL)时,如何修复具有Android 8.0和8.1.0特定SecurityException的Samsung?