Android蓝牙插座连接

时间:2014-03-13 13:51:20

标签: sockets bluetooth android-bluetooth android-print-framework

2 个答案:

答案 0 :(得分: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的更多信息,请阅读this

答案 1 :(得分: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并在打开连接后直接写。我不知道为什么会发生