0

您好,我将我的设备 android 连接到打印机,方法如下。

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
      BluetoothDevice bluetakebt220 =
bluetoothAdapter.getRemoteDevice(obj.getMac().toString());
      BluetoothSocket mBTsocket= null;
      bluetoothAdapter.cancelDiscovery();  
       UUID num = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
       mBTsocket = bluetakebt220.createRfcommSocketToServiceRecord(num);
       mBTsocket.connect();

这适用于大多数设备,但有些设备没有连接,¿这可能是由于?

4

2 回答 2

1

我能想到的最明显的原因是 UUID 不匹配。如果您正在制作通用应用程序,则需要拥有每台打印机的 UUID。这可以以 case switch 语句的形式完成。

代码

switch(Mac Address) {
  case (Mac Address 1) 
     UUID = xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

  case (Mac Address 2): 
     UUID = xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

  default: 
     UUID = 00001101-0000-1000-8000-00805F9B34FB;

大多数情况下您的连接工作的原因是因为 00001101-0000-1000-8000-00805F9B34FB 是大多数现成硬件设备(键盘、鼠标、打印机、扫描仪等)的通用 ID。您的 UUID 与连接不匹配的那一刻不会发生。阅读本文以获取有关 UUID 的更多信息。

于 2014-03-13T21:24:35.597 回答
0

设备行为相同,只是没有建立正确的连接,但是允许写入

如果有人可以提供帮助,这是代码

UUID num = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
  bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  BluetoothDevice bluetakebt220 = bluetoothAdapter.getRemoteDevice(obj.getMac().toString());//PRINTER ADAPTER FOR LPT BLUETAKE BT220
  BluetoothSocket mBTsocket= null;
  mBTsocket = bluetakebt220.createRfcommSocketToServiceRecord(num);
  bluetoothAdapter.cancelDiscovery();    
  mBTsocket.connect();
  OutputStream os = **mBTsocket**.getOutputStream();
  os.flush();
  byte[] CPCLFormat = null;
  PCLFormat = objImpresion.getTexto().getBytes("utf-8");
  os.write(CPCLFormat);//se imprime el texto
  os.flush();
  os.close();

.我只是评论 msocket.isConnected 并在打开连接后直接写。我不知道为什么会发生

于 2014-03-14T18:41:26.417 回答