gpt4 book ai didi

ios - iOS 设备在连接到 MFI 硬件时可以检测或获取哪些硬件属性?

转载 作者:可可西里 更新时间:2023-11-01 03:13:42 25 4
gpt4 key购买 nike

我正在为一个项目处理外部配件和 MFI 并有这个问题:

将 iOS 设备连接到 MFI 硬件后,可以识别哪些第 3 方硬件属性(如果有)?具体来说,我正在寻找一种通用方法来确定设备类别或功能,而不是必须检查特定的制造商和设备名称,类似于 Android 可以做到的(见下文)。这可能吗?

http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html

最终目标:连接到音频底座时切换一个 bool 值;忽略其他事件。我不确定 iOS 能做到多细。 iOS 可以区分 audio dock 之间的区别吗?和一个 Golf Putter App Cradle ? MFi 是否可以深入了解设备的功能?

我将以 iOS 4.2+ 为目标。

最佳答案

您可以请求通过 EAAccessoryManager 类(通过 registerForLocalNotifications 方法)获取通知。为此,您需要将 ExternalAccessory.framework 添加到您的项目中。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];

添加硬件后,您会收到一个带有 EAAccessoryKey 的通知,然后可以使用它从配件管理器中获取 EAAccessory

- (void)_accessoryDidConnect:(NSNotification *)notification {
EAAccessory *accessory = [[notification userInfo] objectForKey:EAAccessoryKey];

配件有许多属性,应该有助于识别连接了哪种硬件:

NSString* name  
NSString* manufacturer
NSString* modelNumber
NSString* serialNumber
NSString* firmwareRevision
NSString* hardwareRevision
NSArray* protocolStrings

我不知道你的音频底座在这里提供了什么,但应该很容易简单地尝试并希望它对所有设备都是一致的 :-)

如果您对特定设备不感兴趣,而是对一类设备(具有特定行为)感兴趣,protocolStrings 应该很有用。该数组由命名协议(protocol)的字符串组成(在行为意义上,而不是在 ObjectiveC 意义上)。名称被格式化为反向 DNS 字符串 (com.mycompany.myprotocol)。

如果您在应用的 Info.plist 文件的 UISupportedExternalAccessoryProtocols 部分(类型:字符串数组)中提供一个或多个此类协议(protocol)名称,您的应用将如果连接了合适的设备则启动。

关于ios - iOS 设备在连接到 MFI 硬件时可以检测或获取哪些硬件属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com