Подтвердить что ты не робот

Android: печать Bluetooth

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

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

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

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

Приложения Google Play

  • PrinterShare: коммерческий (премиум-ключ)
  • Умная печать Bluetooth: бесплатная и легкая. Претензии для печати на принтеры Bluetooth.

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

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

Заранее благодарим за помощь;)

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

Вы можете скачать этот компонент: https://components.xamarin.com/view/ocpp-thermal-printer-usb it Работает как очарование в большинстве принтеров 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;
    }
}