Android: Bluetooth печать - PullRequest
       6

Android: Bluetooth печать

26 голосов
/ 23 марта 2012

Мне нужно разработать приложение для планшетов Android, которое требует печати файлов на принтере Bluetooth.Печать по Bluetooth - одна из самых важных функций моего приложения.К сожалению, информации на эту тему не так много, поэтому я хотел бы попросить совета.

Насколько я знаю, невозможно печатать через Bluetooth на Android (с использованием собственных вызовов), как Android BTСтек не реализует BPP (базовый профиль печати).Проведя небольшое исследование, я нашел следующие альтернативы:

SDK / Библиотеки

  • Sybase-iAnywhere-Blue-SDK-for-Android: коммерческий SDK, который поддерживает множество профилей BT.Разработано крупной компанией (думаю, хорошая поддержка).Я не нашел много информации об этом.Есть ли документация, API или примеры использования этого SDK?Кто-нибудь знает, как скачать демо-версию?(в прошлый раз, когда я пытался связаться, ссылка, похоже, не работает)
  • iPrint SDK: Коммерческий SDK.Некоторые примеры на их сайте, но не более того.
  • Zebralink: Только для принтеров Zebra (естественно).Другие производители, вероятно, также имеют API для своих принтеров.

Google Play Apps

  • PrinterShare: Commercial (Premium key)
  • Bluetooth Smart Printing: бесплатный и легкий.Заявки на печать на принтерах Bluetooth.

В идеале я бы не хотел привязываться к конкретной марке или модели принтера.Теперь вопросы:

  • Как вы думаете, это будет лучший выбор?
  • Знаете ли вы какие-либо другие альтернативы, которые я пропустил?
  • Могу ли ялегко печатать файлы из моего приложения с помощью внешнего приложения?
  • Какой формат я должен использовать, чтобы мои файлы могли распечатывать их по Bluetooth?(pdf, изображения и т. д.)
  • Есть ли у вас какие-либо советы по поводу производителя и моделей принтера?
  • У вас был реальный опыт печати по Bluetooth на Android?
  • Есть ли планы?в ближайшее время реализовать Bluetooth-печать на Android?

Заранее спасибо за помощь;)

Ответы [ 4 ]

12 голосов
/ 30 марта 2012

Star Micronics имеет SDK для Android-печати через Bluetooth (а также через Ethernet и USB).Вы можете скачать его здесь: http://www.starmicronics.com/support/SDKDocumentation.aspx.

Как вы упомянули, вы не можете печатать изначально в данный момент, поэтому альтернативные решения, которые вы нашли, - ваши варианты сегодня.

По моему опытуЛучше использовать API, а не внешнее приложение.Основная причина в том, что вы получаете полный контроль над поведением принтера.Это также легко, если API построен разумно.Использование внешнего приложения является ограничением, поскольку вы не можете настраивать свои распечатки так, как вам хочется.

Star SDK, с которым я связал вас, имеет действительно хороший пример приложения, которое позволяет вам тестировать и настраивать множество принтеров.функции, чтобы увидеть их в действии.Каждая функция документирована в исходном коде.Команды и их параметры также доступны в самом приложении в виде быстрой справки на экране, что удобно.Вдобавок ко всему, это хорошо документировано.

Star - отличная компания для работы, потому что вы можете получить бесплатный демонстрационный принтер по вашему выбору для использования в вашей разработке.

Если вы выберете этоКстати, вы можете отправлять простой текст на принтер вместе с командами.API выполняет преобразование данных в то, что принтер понимает.

1 голос
/ 10 октября 2017

Вы можете скачать этот компонент: https://components.xamarin.com/view/ocpp-thermal-printer-usb Он работает как шарм в большинстве универсальных принтеров USB и Bluetooth.Я создаю класс для отправки большинства обычных команд esc.Использование: outerInstance.mService.Write (modes.pordefecto ());

public class modes
{
    public static byte[] condensado()
    {
        byte[] cmd = new byte[3];
        cmd[0] = 0x1b;
        cmd[1] = 0x21;
        cmd[2] |= 0x01;

        return cmd;
    }

    public static byte[] pordefecto()
    {
        byte[] cmd = new byte[3];
        cmd[0] = 0x1b;
        cmd[1] = 0x21;
        cmd[2] |= 0x00;
        return cmd;
    }

    public static byte[] negrita()
    {
        byte[] cmd = new byte[3];
        cmd[0] = 0x1b;
        cmd[1] = 0x21;
        cmd[2] |= 0x08;
        return cmd;
    }

    public static byte[] lineamenor()
    {
        byte[] cmd = new byte[3];
        cmd[0] = 0x1b;
        cmd[1] = 0x33;
        cmd[2] |= 0x14;
        return cmd;
    }

    public static byte[] cancelalinea()
    {
        byte[] cmd = new byte[2];
        cmd[0] = 0x1b;
        cmd[1] = 0x32;
        return cmd;
    }

    public static byte[] centra()
    {
        byte[] cmd = new byte[3];
        cmd[0] = 0x1b;
        cmd[1] = 0x61;
        cmd[2] |= 0x01;
        return cmd;
    }

    public static byte[] quitacentro()
    {
        byte[] cmd = new byte[3];
        cmd[0] = 0x1b;
        cmd[1] = 0x61;
        cmd[2] |= 0x00;
        return cmd;
    }

    public static byte[] codepage()
    {
        byte[] cmd = new byte[5];
        cmd[0] = 0x1f;
        cmd[1] = 0x1b;
        cmd[2] = 0x1f;
        cmd[3] |= 0xfe;
        cmd[4] |= 0x01;
        return cmd;
    }

    public static byte[] latino()
    {
        byte[] cmd = new byte[5];
        cmd[0] = 0x1f;
        cmd[1] = 0x1b;
        cmd[2] = 0x1f;
        cmd[3] |= 0xff;
        cmd[4] |= 0x12;
        return cmd;
    }
    public static byte[] logo()
    {
        byte[] cmd = new byte[4];
        cmd[0] = 0x1c;
        cmd[1] = 0x70;
        cmd[2] = 0x01;
        cmd[3] |= 0x00;

        return cmd;
    }
}
1 голос
/ 23 июля 2012

Возможность печати на принтере BlueTooth сильно зависит от модели принтера, который вы пытаетесь использовать.

Например, я использую принтер CITIZEN CMP-10BT , которым можно управлять, посылая определенные последовательности байтов, что легко сделать с помощью Android API. Я даже построил фреймворк поверх этого.

Проблема заключается только в том, что вы не можете точно сказать, какие модели принтеров будут использовать конечные пользователи, поэтому определенно понадобится какой-то окончательный SDK.

0 голосов
/ 04 марта 2019

Используйте библиотеку Printooth для любого типа принтеров, с нулевыми конфигурациями, простым использованием и документацией скважин

https://github.com/mazenrashed/Printooth

Вот пример кода для печати простой строки:

var printables = ArrayList<Printable>()
var printable = Printable.PrintableBuilder()  
    .setImage(image) 
    .setNewLinesAfter(1) // To provide n lines after sentence
    .build()
printables.add(printable)
BluetoothPrinter.printer().print(printables)

Вы можете продолжить чтение здесь: https://github.com/mazenrashed/Printooth/blob/master/README.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...