问题标签 [eaaccessory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1750 浏览

ios - 将 iOS 设备与非 iOS 设备通信

如 Apple 文档中所示,可以通过 EAAccessory 框架与经过认证的配件(由 Apple 认证)进行通信。但我有点困惑,因为有些帖子告诉我它也可以通过 CoreBluetooth 制作。

我还读到 CoreBlueTooth 仅受 iOS 5 支持,iPhone 4S 可能与外部配件通信。

问题是“我应该同时使用CoreBluetooth 和 EAAccessory 框架(我认为在这种情况下我必须测试设备型号和 iOS 版本的组合)还是 EAAccessory 框架就足够了? ”。

0 投票
2 回答
2137 浏览

ios - 在 iPad App 中检测蓝牙键盘

在我的应用程序中,我有一个客户信息表单,其中有许多我使用过的文本字段,现在当用户编辑任何字段时,我需要将整个视图向上移动,这样编辑文本字段就不会进入 iPad 的内部键盘,这工作正常。现在客户想使用外部蓝牙键盘来填写这个表格。一旦这个外部键盘与 iPad 连接,那么在应用程序中编辑任何文本字段时都不会显示内部键盘,因为外部已连接,在这种情况下,整个视图需要在页面上,无需向上移动。但是当我编辑文本字段时,它仍然会上升,而不会在屏幕上显示内部键盘,这会使屏幕的一半空白,因为它会向上移动整个视图。

为此,我尝试了一些方法,例如启用内部键盘显示/隐藏通知,但只有在未连接外部键盘时才会调用这些通知,这对我没有帮助。也尝试使用 ExternalAccessory 框架,但它不会检测到蓝牙连接的键盘也尝试使用 EADemo 检测外部键盘,但它没有检测到外部键盘,但它检测到信用卡刷卡器连接的槽底座。

如果这里有人使用过此功能或知道与此相关的任何事情,请告诉我。

0 投票
1 回答
1203 浏览

objective-c - EAAccessoryDe​​legate 中的 –accessoryDidDisconnect: 方法的目的是什么?

我一直在研究连接到硬件的 iOS 实现,因此,我不得不使用 External Accessory 框架。为了与设备交互,您需要有一个类来处理与EAAccessory对象的通信。为此,您必须使用EAAccessoryDelegate协议定义设备连接类。

EAAccessoryDelegate协议包含一种方法——

– accessoryDidDisconnect:(EAAccessory *)accessory.

苹果文档指出:

该协议定义了在关联对象断开连接EAAccessoryDelegate时接收通知的单一方法。EAAccessory此方法的实现是可选的。

当你实例化你的类时,你可以向NSNotificationCenter系统注册你自己的方法。当存在 Device Connect 或 Device Disconnect 事件时,您可以根据需要处理该事件。当 Device Disconnect 事件发生时,它的目的- accessoryDidDisconnect:就变得毫无意义,因为它为您的类提供了完全相同的功能和数据。

此外,我能找到的有关使用外部附件框架的示例提供了通过NSNotificationCenter订阅机制检测设备连接更改的示例。

话虽如此,该– accessoryDidDisconnect:方法从未真正使用过的意义何在?是的,它可以实现,但正如我所提到的,所有形式的文档都建议您通过NSNotificationCenter.

我知道这是一个挑剔的问题,但我很好奇。

0 投票
1 回答
1151 浏览

iphone - 如何开始为 iOS 开发配件?

我们希望开发可插入 30 针基座连接器的 iOS 配件。对于初学者来说,是否有一个很好的起点来讨论 EAAccessory 框架可以做什么和不能做什么?

Apress 在 2010 年 6 月发布了一本关于 EAAccessory 框架的书。这仍然相关吗,还是从那时起 Apple 引入了许多新的 API?是否有其他可用资源?

0 投票
2 回答
3240 浏览

ios - EASession 泄漏

我有一个连接到附件的应用程序,当您断开附件时,我创建的用于与附件通信的 EASession 泄漏。

当配件连接时,我会收到通知并检查 EAAccessoryManager 的配件集合,以查找具有特定名称且使用特定协议的配件。当我找到这个时,我使用代码为该附件创建一个 EASession 对象:

通常我将 alloc 和 init 放在一行上,但我发现(像这样将它分开)是 alloc 提供 +1 保留计数(如您所料)但是iniWithAccessory:forProtocol:我给它 +3 保留计数只会期望 init 方法中的 +2 retainCount。

泄漏工具似乎也支持这一点:

在此处输入图像描述

一步一步看泄漏仪器:

  1. +1 保留计数 :: [???Accessory openSession]- 这是我分配新 EASession 的地方。
  2. +1 保留计数 ::[EAInputStream iniWithAccessory:forSession:]输入流保留对拥有会话的引用。
  3. +1 保留计数 ::[EAOutputStream initWithAccessory:forSession:]输出流保留对拥有会话的引用。
  4. +1 保留计数 ::[EASession iniWithAccessory:forProtocol:] 我不知道为什么这会增加 EASession 的保留计数。我相信这是造成我无法解释的额外保留计数的原因......不确定这应该如何平衡。这是Apple的错误吗?我需要release额外的时间来平衡事情……非常非常奇怪。
  5. -1 保留计数 ::[EAInputStream close] 清理上面的步骤 #2
  6. -1 保留计数 ::[EAOutputStream close] 清理上面的第 3 步
  7. -1 保留计数 ::???Accessory closeSession]清理上面的步骤 #11

那么...为什么我要泄漏 EASession 对象?使用 EASession 对象不泄漏的正确方法是什么?


编辑 - EADemo 不会泄漏,但...

EADemo连接到配件,但不会泄漏。出于好奇,我添加了一个额外[_session retain]的内容以使其泄漏,以便我可以在仪器中跟踪它的 malloc 历史。有趣的是,我的应用程序的 malloc 历史记录中没有调用一些内部调用。

在此处输入图像描述

你可以看到这已经[EAAccessoryInternal removeSession:]调用了 3 次。这在我的应用程序的 malloc 历史中从未被调用过。我认为这是为什么我的 EASession 没有被释放的关键......

0 投票
1 回答
310 浏览

ios - [UIScreen 屏幕] 什么时候返回一个空数组

[UIScreen screens]在我们记录到 Flurry 的崩溃报告中,我看到了 iOS 5.0.1 中的奇怪行为。有时[UIScreen screens]会返回一个空数组。我们的应用通过 EAAccessory 框架实现对外部附件的支持。这种行为完全出乎意料,因为即使Apple 的文档也说从该方法返回的数组将始终包含至少一个条目。

0 投票
2 回答
441 浏览

objective-c - Objective C - 将 EAAccessory 存储到 NSUserDefaults

在我必须制作的项目中,我正在使用外部附件和框架 ExternalAccessory。

(我只能连接一个附件)。

连接很容易,发送数据并不难。

我想做的一件事是将最后连接的设备存储在内存中,以在应用程序重新启动时尝试自动重新连接。(离开之后,所以在第一次发射之后。)

所以,我的问题是 EAAccessory 是一个自定义类对象,不能存储到 NSUserDefaults 中。

我看到这个问题来存储自定义对象:

如何在 NSUserDefaults 中存储自定义对象

所以我会用它创建一个 NSData ,但没有成功,因为 EAAccessory 没有实现 encodeWithCoder 和 initWithCoder 方法......

任何想法 ?对于这种方式或另一种方式来处理?

0 投票
1 回答
4143 浏览

ios - IOS:如何检测配对蓝牙 3.0 设备的品牌/型号?

IOS菜鸟问题在这里,但我希望它不是重复。在针对 IOS 4+ 的 XCode 4.3 上进行开发。我正在努力寻找有关如何获取配对蓝牙设备列表的指导。似乎有多个蓝牙接口,但用于专用目的。如果我有以下错误,请纠正我: CoreBluetooth: Bluetooth LE (Bluetooth 4.0) Gamekit: peer-peer based on session id EAAccessory: MFi Bluetooth devices 在 XCode 3.0 中似乎也有一个已失效的“BlueToothManager”API。有人可以与我分享如何获取当前与运行我的应用程序的设备配对的蓝牙设备列表吗?我只对品牌、型号、标识符(或序列号)感兴趣。我实际上不需要与设备通信,只是为了确定。提前致谢。

0 投票
1 回答
1545 浏览

ios - ios ExternalAccessory 蓝牙问题

我在为我的 ipod 运行 ExternalAccessory 时遇到了一些困难......

我有一个 bluecove 蓝牙监听器在我的计算机(mac,Mountain Lion)上运行 java (代码在这里:http://pastebin.com/j6Eu0H66),我已经成功地将我的 ipod 与我的计算机配对。但是,当我列出我的 ipod 列表时:

我只得到蟋蟀。我假设这是因为我没有在 info.plist 中设置任何有效的附件——但问题是,我不知道我应该输入什么!

有没有人知道为什么我无法通过 EAAccessoryManager 找到我的计算机,有没有人知道什么归类为有效协议?我找不到关于实际写什么作为协议的文档。

PS 作为这个项目的早期部分,我试图通过 lejos 将我的计算机与我的 NXT 配对,但是我遇到了这个问题:

https://groups.google.com/forum/?fromgroups=#!topic/bluecove-users/7jWv1V1GC-4

结果,我使用 hack 在第一个评论之后发表了几条评论,并将我的 Mountain Lion IOBluetooth.framework 替换为 Lion IOBluetooth.framework。我不确定这是否会对 iOS 方面产生巨大影响,但我想我应该让你们知道。

PSS 我用来打印附件列表的代码:注意它还没有返回任何东西,也没有使用protocolString。

我得到了“Testing123”日志,但没有得到“设备!” 日志

另外,这是我的 info.Plist 的屏幕截图:

在此处输入图像描述

0 投票
0 回答
1174 浏览

bluetooth - 无需用户交互即可连接外部附件蓝牙设备

根据从 iOS 6 开始使用 showBluetoothAccessoryPickerWithNameFilter 的 EAAccessoryManager 类参考,我们可以显示一个配件选择器,它可以帮助用户连接外部配件,包括通过蓝牙唯一 ID 的 iAP。

现在我们想以编程方式连接该列表中的一个外部附件。

我们需要您的支持。

我们如何以编程方式连接手机范围内的任何外部设备?

我们如何在没有用户交互的情况下以编程方式连接任何外部设备?

我们如何以编程方式获取用户手机范围内的外部设备列表?

我们如何获取范围内但未连接的外部设备的 EAAccessory 对象列表?

我们可以将 EAAccessory 对象存储在 NSUserDefaults 中吗?如果是,我们该怎么做?由于 EAAccessory EAAccessory 没有实现 encodeWithCoder 和 initWithCoder 方法,所以它不允许将其存储到 NSUserDefaults 中。

使用 BTLE 我们可以解决这个问题,但我们需要 BT Classic 中的解决方案。