Используйте портативный Bluetooth-принтер с Android.

У меня есть портативный Bluetooth-принтер, с которым я могу связаться с помощью SPP-соединения с моего Mac (с помощью Coolterm). Когда я Я пытаюсь сделать то же самое с Android (используя платформу 7). У меня несколько проблем:

  • Похоже, принтер не поддерживает / не требует аутентификации по PIN-коду. При подключении из OSX я просто выбрал опцию «Не использовать штырь», и она соединилась. В Android, когда я использую device.createRfcommSocketToServiceRecord () , он всегда заканчивает тем, что запрашивает у меня PIN-код / ​​ключ (который у меня нет / нужен). Я решил это с помощью трюка с отражением:

     Метод m = device.getClass (). GetMethod ("createInsecureRfcommSocket", new Class [] {int.class}); 
    BluetoothSocket connection = (BluetoothSocket) m.invoke (device, 1); 
     

    Я не уверен, действительно ли это сработало, но мигающий светодиод на принтере перестает мигать, что заставляет меня думать, что это так.

  • Когда у меня есть сокет, я пытаюсь записать байтовые данные в поток, используя:

     byte [] buffer = new byte [3]; 
    buffer [0] = (byte) 0x8A; { {1}} buffer [1] = (байт) 0xC1; 
    buffer [2] = (byte) 0x04; 
    outStream.write (buffer); 
    int response = inStream .read (); 
    mySocket.close (); 
     

    При отправке той же трехбайтовой последовательности из Coolterm в OSX на принтере печатается тестовая страница. Однако это, похоже, заставляет поток зависать на Android (чтение).

Что-то я здесь упускаю?

РЕДАКТИРОВАТЬ: Кажется, это работает, только когда я устанавливаю канал на 1. Это означает, что я кое-что понял.

37
задан navjotk 10 November 2011 в 08:29
поделиться