获取 MIDI 设备的序列号或其他唯一 ID?
Posted
技术标签:
【中文标题】获取 MIDI 设备的序列号或其他唯一 ID?【英文标题】:Get serial number or other unique ID of MIDI device? 【发布时间】:2021-02-17 06:41:44 【问题描述】:如果我有一个 android MidiDevice 对象,我可以像这样获取它的名称或产品名称:
val name = device.info.properties.getString(MidiDeviceInfo.PROPERTY_NAME)
val product = device.info.properties.getString(MidiDeviceInfo.PROPERTY_PRODUCT)
但是对其serial number的请求总是返回null:
val serialNumber = device.info.properties.getString(MidiDeviceInfo.PROPERTY_SERIAL_NUMBER)
我尝试过的每个设备都会发生这种情况,包括虚拟 MIDI 设备、USB MIDI 接口和蓝牙 MIDI 接口。这对其他人有用吗?我没有在 Google、*** 或 Android IssueTracker 中找到任何提及此属性的内容。
我显示序列号的目的是在接口中区分同一型号的多个接口。如果有其他方法,我愿意接受其他解决方案。
【问题讨论】:
【参考方案1】:我不能具体说 Android,但 MIDI 接口很少有这样的序列号。
这是一个常见问题。如果您查看多个相同型号设备的 USB 设备描述符(使用 USBTreeView 或类似设备),您会发现两者之间通常没有任何区别。
此外,在 MIDI 方面,肯定无法保证 ID/序列号,因为甚至没有检索此类信息的标准。我认为在我拥有的所有 MIDI 设备中,只有一个 (APC40) 具有可通过 SysEx 消息访问的序列号。
说了这么多,我认为该属性不会被可靠地填充,因为在大多数情况下没有特定于设备的信息可以作为它的基础。它可能已被添加到 Android API 中,用于 RTP-MIDI 或类似的东西。
【讨论】:
谢谢。 ios 有 kMIDIPropertyUniqueID,它填充了一个大整数,但我不知道它来自哪里。 @arlomedia 可能来自操作系统,而不是设备。也许是 USB 设备路径的哈希?我认为 Windows 会做一些这样的哈希。以上是关于获取 MIDI 设备的序列号或其他唯一 ID?的主要内容,如果未能解决你的问题,请参考以下文章