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();

.I は単に msocket.isConnected にコメントを付けて、接続を開いた直後に書き込みます。なぜ起こるかわかりません

于 2014-03-14T18:41:26.417 に答える