#java #android #pdf #printing #bluetooth
#java #Android #PDF #печать #bluetooth
Вопрос:
Как новое для Android подключение по Bluetooth и печать содержимого на принтере.Но теперь я могу подключиться к принтеру Bluetooth с моего устройства Android.Итак, в соответствии с требованиями моего проекта я должен распечатать содержимое PDF-файла.Ранее в том же проекте я мог печатать содержимое строковой переменной.
Теперь с изменением требований проекта появится задача печати PDF-файла.Сначала я создаю PDF с помощью библиотеки itext на Java для создания PDF-файла.Итак, часть создания файла выполнена.И что я сделал для печати этого файла, так это сгенерировал массив байтов для файла pdf.
вот строка кода
FileInputStream fin=new FileInputStream(pdffile);
fileContent=new byte[(int) pdffile.length()];//file content is the byte array for the pdf file.
Следующая строка — подключение принтера по Bluetooth к устройству Android.
mBTAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(PRINTER_MAC_ID);
Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1);
mBTSocket.connect();
с помощью этого сокета (mBTSocket) получаем выходной поток.
и чем записывать массив байтов в этот выходной поток.
os.write(fileContent);
os.flush();
mBTSocket.close();
итак, когда я попытался распечатать содержимое PDF-файла через принтер Bluetooth, ничего не произошло, нет исключения или сбоя приложения, но выдается предупреждение getbluetoothservice () вызывается без обратного вызова bluetoothmanagercallback и не выводит содержимое на бумагу.Итак, любой может сказать мне, что / где я делаю неправильно.Я также ищу эту тему, но все, что я получил, касается только печати строк, но без файла.
Одна из ссылок рассказывает о каком-то sdk под названием StarIOsdk для Android для печати файла.И еще одна проблема в Android sdk заключается в том, что новый метод печати представлен на уровне API 4.4, но как мы будем это делать на предыдущем уровне API.Используемый здесь принтер — термопринтер Bluetooth (небольшой размер бумаги размером 2 дюйма).Заранее спасибо.
Комментарии:
1. как вы решили свою проблему .. у меня также есть аналогичное требование
Ответ №1:
mBTAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(PRINTER_MAC_ID);
Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1);
mBTSocket.connect();
Thread.sleep(100);
После подключения к сокету переводите поток в спящий режим..У меня это сработало