如何从蓝牙打印机获取蓝牙端口标识符

时间:2015-11-19 05:38:40

标签: android printing bluetooth android-bluetooth bluetooth-printing

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

我们可以通过使用以下代码在iOS中使用ExternalAccessory.framework来获取蓝牙的标识符。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

也许您可以使用此

进行过滤

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

参考:MAC address Lookup

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

答案 1 :(得分:0)

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

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

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

至于 OUI,它们由 IEEE 定义,但您可以以更 sanitized 的形式获取它们。

Source 表示打印机类别代码,荷兰语。)