- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在搜索互联网,但是在如何完全实现OOB配对方面却一无所获。我希望这里的人可以指出一些示例代码来帮助我。 Android开发人员网站中的聊天示例并没有真正涉及这种类型的配对。
基本上,我有一个Android平板电脑,我想与一个用C++编写的,没有内置显示/IO机制的设备安全配对。要配对的平板电脑将充当GUI/IO界面,我将通过蓝牙向后发送消息和第四条消息。因此,我想通过OOB配对方案将平板电脑与每个设备安全地配对。
我了解OOB的概念,但是在android.developers.com网站上查找我的android客户端代码时,我很难找到合适的方法来调用。同样,在查看bluez内容时,我发现对于C++编写的服务器来说,还有很多事情要做。
基本用例是用户将通过USB连接将平板电脑连接到设备。 USB连接将有助于每个设备的 key /mac地址的传递,然后使该信息对与蓝牙相互使用。
我可以弄清楚USB部分,但是一旦有了客户端和服务器上的 key 和必要的信息,我似乎就无法找到正确的方法来调用两端以成功并安全地配对。
我已经有一个客户端/服务器通过不安全的连接进行交谈,因此,真正困扰我的唯一部分是两端的实际配对。配对后,我就可以使用secureRFComm来完成以后的所有消息传递。
最佳答案
我的问题已解决95%,但遇到了小障碍。首先,我将用对原始问题的更具体答案来更新此帖子,并在最后发布我的问题。
回顾一下,我的任务是使用带外(oob)配对通过USB将使用Honeycomb 3.2的android平板电脑安全地配对到beagle板上。我无法发布特定的代码,但是我将为您提供完成此操作所需的所有步骤。
在beagle板上,我安装了bluez 4.96堆栈,并安装了dbusoob插件。要确认此设置正确,请在beagle板上安装2个蓝牙加密狗,然后运行test文件夹中bluez文件中的OOB测试代码。这是一个python脚本。如果未设置bluez,脚本可能会成功配对2个蓝牙适配器。
要使平板电脑能够与USB通信,您需要安装mtpfs和mtp-tools。这些用于安装平板电脑。他们解决了在两台设备之间获取OOB信息的方式,就是将平板电脑安装在beagle板上。安装后,平板电脑和beagle板可以写出包含所需信息的文件。
在android方面,公共(public)API不支持OOB,所以事情变得棘手。我相信这是因为Honeycomb 3.2没有正式支持OOB绑定(bind)的bluez堆栈,但是Google已经编码了某种实现。我相信这是因为,如果您查看Bluetooth适配器和Bluetooth Device类的 Gingerbread 源代码,则可以请参阅可用的OOB方法,但未通过记录的API公开。
这些方法仍然是公共(public)的,因此您可以通过反射来调用它们。使用反射,您还可以获得类中的所有方法签名。这就是我找出可用的方法的方式。
请注意,尽管其中许多文件没有记录,并且某些文件的功能尚不明确。需要注意的重要方面是适配器类中的readOutOfBandData()和设备类中的setDeviceOutOfandData()。
当您将oob数据写入平板电脑上的文件以供beagle板读取时,您可能会遇到的另一个难题。由于android使用mtp,因此您必须在将文件写入内部sdcard存储设备后对文件进行索引。为了解决这个问题,您需要使用MediaScannerConnection类和scanFile()方法。
希望以上内容可以帮助其他任何人解决同样的问题。
现在我的问题。我的Android应用程序运行良好,beagle板代码已更新为testOOB示例,以使一端从文件中读取OOB信息。现在,我看到的问题是,执行该命令时,每个人都感觉很好,但是在平板电脑上,我仍然收到一条消息,询问是否要与设备xyz配对。没有键或数字。它只是询问“与设备XYZ配对”或类似的内容。
如果我按“pair”,那么从平板电脑的角度来看都是配对的,但是python脚本返回配对失败。 beagle板上的python脚本正在调用实际方法来进行设备之间的绑定(bind)。即使当我有android启动createBond调用时,我也会看到相同的结果。我可以保证在尝试在两种情况下进行配对之前,已经在两端都设置了必需的OOB数据,这样看来并非如此。
因此,我希望有人可以帮助我解决的问题是:
1)如果OOB数据正确交换,为什么我什至在Android上也收到一条消息?我还有另一个电话想念吗?在哪端?
2)即使我按了平板电脑上显示的“pair”弹出窗口,beagle board python脚本为什么仍返回配对失败,为什么?数位板和蓝色显示器都将设备显示为已配对。再次,我倾向于我缺少某些东西的想法。
感谢任何可以提供帮助的人:)
编辑:
要添加更多信息,这里是logcat输出:
D/UIBluetooth( 4363): !!!!!! Start Bond !!!!!!
D/BluetoothService( 1703): Setting out of band data for: 00:02:76:24:C2:8F:[-37, -1, 65, -42, -121, -75, -60, -4, -47, -86, -88, 14, 64, 83, 16, 96]:[-112, 34, 121, -97, 15, -54, -83, -
93, 104, -83, -124, -25, 89, 114, 66, 62]
D/BluetoothBondState( 1703): 00:02:76:24:C2:8F bond state 10 -> 11 (0)
D/UIBluetooth( 4363): createOobBond Successful
V/BluetoothEventManager( 2174): Received android.bluetooth.device.action.BOND_STATE_CHANGED
D/BluetoothEventLoop( 1703): Property Changed: Devices : 1
D/BluetoothEventLoop( 1703): Device property changed: 00:02:76:24:C2:8F property: Connected value: true
I/BluetoothEventLoop.cpp( 1703): agent_event_filter: Received method org.bluez.Agent:RequestOobData
I/BluetoothEventLoop.cpp( 1703): agent_event_filter: Received method org.bluez.Agent:RequestOobData
关于android - Android上的蓝牙 "out of band"(OOB)配对了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918262/
我想创建一个类似于乐队附带的星巴克应用程序的应用程序。我想显示条形码。我可以在云端或本地设备上将条形码生成为 JPG 图像,但我需要能够在乐队的屏幕上显示它们。到目前为止,我还没有找到使用 Band
Microsoft Band SDK 文档中提到使用 WriteableBitmap 创建磁贴图标,但如何让它指向我为磁贴制作的现有图像? 最佳答案 如果您的 Windows Phone 应用程序有一
有没有一种好的方法可以在打开 band 磁贴时触发 Windows 应用商店后台任务?是否有使用最新 SDK 从后台任务处理乐队的示例?我看到有人提到了这样做的能力,但找不到这方面的任何代码示例。 我
我这里有个情况。几个星期以来,我一直在努力解决这个问题。我是 iReport 的新手。 这几天我在为一个公司部门设计一个报表。 我的报告只有 3 个部分,即 Title、Detail 和 Summar
我正在创建一个使用新的自定义页面布局的 Microsoft Band 应用。我使用的是 Microsoft Visual Studio Community 2013 update 4。我的一切工作正常
我需要在 Delphi 5 中创建一个 QuickReport,其布局如下: +================ | Report Header +================ +========
我需要将 QuickReport 导出为 XLS 文件,问题是我的数据对象之间有空列,发生这种情况是因为在创建流时,设置了列根据物体的位置从上到下,这样如果对象的左侧位置未设置为完全相同的位置作为留在
最近,我一直在尝试清理我的openGl渲染。我已经有一段时间了,但是从来没有真正考虑过。这是一个屏幕截图: 经过一些研究,我一直无法弄清楚它到底出了什么问题。我在OSX上使用OpenGl,但在其他系统
1> Band = band. * 1: syntax error before: 'band' 我试图在这里做一个原子,但是出现语法错误。为什么? 最佳答案 从编译器错误中还不清楚,但是您正在得到,
我购买了微软手环。我的范围是使用该设备来实时跟踪步数和心率等信息。我想知道有没有一种方法可以在没有第三个设备的情况下直接将这些数据实时传输到电脑,例如使用蓝牙设备?是否有文件系统可以在 Band 设备
我正在创建一个 Windows 8.1 Phone 应用程序。 UI 有一个按钮和一个文本框(称为 txtStatus) 基本上,当我单击 UI 中的按钮时,将启动以下代码(仅显示其中的一部分):
我正在尝试异步验证 Nymi band 。但是当我尝试这样做时,出现以下异常: java.lang.RuntimeException: Can't create handler inside thre
我正在为乐队开发 UWP。有什么方法可以在某些序列号/唯一 ID 或其他东西上识别连接的频段。就像我发现连接的乐队一样 IBandInfo[] pairedBands = await BandClie
我正在创建自定义磁贴。我希望该磁贴能够读取一些传感器数据,例如心率,然后与移动应用程序进行通信。我也想同步数据 MS Health Cloud API 感谢任何帮助/想法 [微软乐队] 最佳答案 要与
我想使用 multiband blending 混合两个图像但我不清楚这个函数的输入参数: void detail::Blender::prepare(const std::vector& corne
我正在开发一个面向通用 Windows 和 .Net 应用程序的可移植类库,我从 NuGet 安装了 Microsoft.Band SDK,这解决了大部分带符号: IBandInfo[] paired
我尝试从手环读取加速度计值,即使 手机已锁定 应用没有焦点 在应用获得焦点时读取值效果很好。但是,如果我按下“Windows”按钮并在其他应用程序上工作,则不会再触发任何 ChangedEventAr
尝试在 VS2015 中使用 MSTest 和 Microsoft Band nuGet 包进行单元测试并遇到以下错误 "Microsoft.Band.BandIOException: An erro
我使用 UDP 编写了多人游戏 Pong。我正在使用插值和外推来为客户端创建平滑的外观效果。 它有效。但是,球中有一些持续的口吃。每次收到新数据包时,它都会向前跳一点点。它看起来有点滞后,但可以玩。
在 Cordova CLI v3.4 中使用 ionicframework 我在 config.xml 文件中使用以下首选项。 通过 CLI 和 XCode 编译似乎没有解决任何问题。 然后我搜
我是一名优秀的程序员,十分优秀!