1

我正在开发一个蓝牙打印应用程序,在其中我发现所有都在蓝牙附近。现在我必须检查特定的蓝牙是三星打印机或斑马打印机或任何其他类型的打印机。

因为我们可以使用以下代码在 iOS 中使用 ExternalAccessory.framework 获取蓝牙标识符。

ExternalAccessory.framework
  if ([accessory.protocolStrings indexOfObject:@"com.zebra.rawport"] != NSNotFound) {
      discoveredPrinter.device_type = @(DeviceTypeZebra);
}

我在 Android 中搜索了相同的方式,但我知道在 android 中我们无法通过蓝牙实现这种事情。请让我知道是否有人在确定蓝牙打印机类型之前解决了同样的问题。

4

2 回答 2

2

只是提示可能是您的问题可以通过此解决

与Android中的iOS不同,您可以找到蓝牙设备的MAC地址

因为每个供应商都被分配了一个特定的 MAC 地址前缀

所以你可能会用这个过滤吗

什么是 MAC 地址?什么是 OUI?

参考:MAC地址查找

MAC 地址是网络接口的唯一标识符。它是一个 48 位数字(12 个十六进制字符)。它们可以用以下任何一种格式编写:

MM:MM:MM:SS:SS:SS
MM-MM-MM-SS-SS-SS

OUI {Organizationally Unique Identifier} 是一个 24 位数字,用于唯一标识供应商或制造商。它们由 IEEE 购买和分配。OUI 基本上是 MAC 地址的前三个八位字节。例如,这些是 OUI 的示例:

00:00:0A -- this is owned by Omron
00-0D-4B -- this is owned by Roku, LLC
于 2015-11-19T08:37:48.953 回答
0

您可以使用BluetoothClass.Device.MajorBluetoothClass.Device来识别设备类型。对于打印机,它将是:

if (btDevice.bluetoothClass.majorDeviceClass == BluetoothClass.Device.Major.IMAGING 
    && btDevice.bluetoothClass.deviceClass == 1664) 
{
    // it's a printer

从那时起,您可以尝试 Epson 的ESC 代码事实上的标准)或制造商的 SDK(如Zebra的)。

至于 OUI,它们是由IEEE定义的,但您可以以更干净的形式获得它们。

(打印机类代码的来源,荷兰语。)

于 2021-06-01T09:14:17.853 回答