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