2012-03-23 21 views
22

Muszę opracować aplikację dla tabletów z systemem Android, która wymaga drukowania plików na drukarce Bluetooth . Drukowanie przez Bluetooth to jedna z najważniejszych funkcji mojej aplikacji. Niestety, nie ma zbyt wielu informacji na ten temat, więc chciałbym poprosić o radę.Android: drukowanie Bluetooth

O ile mi wiadomo, nie jest możliwe drukowanie przez Bluetooth na Androidzie (przy użyciu połączeń natywnych), ponieważ Android BT Stack nie implementuje BPP (Basic Printing Profile). Robi trochę badań Znalazłem następujące alternatywy:

SDK/Biblioteki

  • Sybase-iAnywhere-Blue-SDK-for-Android: SDK komercyjna, który obsługuje wiele profili BT. Opracowany przez dużą firmę (dobre wsparcie I zgadnij). Nie znalazłem wielu informacji na ten temat. Czy jest tam pewna dokumentacja, interfejs API lub przykłady użycia tego zestawu SDK? Czy ktoś wie, jak pobrać wersję demo? (link wydaje się być zepsuty ostatni raz próbowałem)
  • Zestaw SDK do iPrint: komercyjny pakiet SDK. Niektóre przykłady na ich stronie internetowej, ale nic więcej.
  • Zebralink: tylko dla drukarek Zebra (naturalnie). Inni producenci prawdopodobnie mają też interfejsy API dla swoich drukarek.

Google Play aplikacje

  • PrinterShare: Commercial (klawisz Premium)
  • Bluetooth Smart Printing: Darmowe i lekkie. Roszczenia do drukowania na drukarkach Bluetooth.

Idealnie nie chciałbym być przywiązany do konkretnej marki lub modelu drukarki. Teraz pytania:

  • Co według Ciebie byłoby najlepszym wyborem?
  • Czy znasz inną alternatywę, którą przegapiłem?
  • Czy mogę łatwo drukować pliki z mojej aplikacji za pomocą zewnętrznej aplikacji?
  • W jakim formacie należy używać moich plików, aby móc je wydrukować za pomocą funkcji Bluetooth ? (pdf, obrazy itp.)
  • Jakieś rady dotyczące producenta i modeli drukarek?
  • Czy miałeś jakieś doświadczenie w drukowaniu przez Bluetooth na Androida?
  • Czy w najbliższej przyszłości planowane jest wdrożenie technologii Bluetooth w systemie Android?

Z góry dzięki za pomoc;)

+0

mogę ręczyć za ** PrinterShare ** APP - https://play.google.com/store/apps/details?id=com.dynamixsoftware.printershare - to działa na moich urządzeniach do mojego HP Mobilna drukarka Officejet 100. Nie mogłem jednak znaleźć aplikacji ** Bluetooth Smart Printing ** w Google Play. Czy masz link? –

Odpowiedz

11

Star Micronics ma SDK dla Androida drukowanie przez Bluetooth (jak również Ethernet i USB). Możesz pobrać go tutaj: http://www.starmicronics.com/support/SDKDocumentation.aspx.

Jak już wspomniano, nie można drukować natywnie w tym momencie, więc alternatywne rozwiązania, które znalazłeś, są dziś dostępne.

Z mojego doświadczenia najlepiej korzystać z interfejsu API, a nie z aplikacji zewnętrznej. Największym powodem jest pełna kontrola nad zachowaniem drukarki. To proste, jeśli API jest zbudowany inteligentnie. Używanie zewnętrznej aplikacji jest ograniczone, ponieważ nie można dostosowywać wydruków tak, jak chcesz.

Star SDK, do którego Cię przyłączyłem, ma naprawdę fajną przykładową aplikację, która pozwala przetestować i dostosować wiele funkcji drukarki, aby zobaczyć je w akcji. Każda funkcja jest udokumentowana w kodzie źródłowym. Polecenia i ich parametry są również dostępne w samej aplikacji jako szybkie odniesienie do ekranu, co jest wygodne. Co więcej, jest dobrze udokumentowany.

Star to świetna firma, z którą można pracować, ponieważ można uzyskać bezpłatną drukarkę demo do wyboru w celu jej rozwoju.

Jeśli wybierzesz tę opcję, możesz wysyłać zwykły tekst do drukarki wraz z poleceniami. Interfejs API obsługuje konwertowanie danych na to, co może zrozumieć drukarka.

+1

Czy Star micronics jest licencjonowanym sdk. – blackjack

+0

Czy STARIOSDK może być pomocny przy drukowaniu wszelkiego rodzaju plików. – blackjack

+1

Czy wiesz, czy SDK współpracuje z innymi markami drukarek Bluetooth? –

1

Możliwość drukowania na drukarce BlueTooth zależy w dużym stopniu od modelu drukarki, z której próbujesz korzystać.

Na przykład używam drukarki CITIZEN CMP-10BT, którą można kontrolować, wysyłając określone sekwencje bajtów, które można łatwo wykonać za pomocą interfejsu Android API. Zbudowałem nawet ramy do tego.

Problem polega tylko na tym, że nie można stwierdzić, które modele drukarek będą używane przez użytkowników końcowych, więc ostateczny pakiet SDK z pewnością będzie bardzo potrzebny.

+0

Dzięki za odpowiedź, Alex. Z ciekawości, to "framework", o którym wspominasz open source. A jeśli tak, to gdzie go można znaleźć? Dzięki. –

+0

@ Josh Pinter: Niestety, nie. Jest to część komercyjnego projektu, więc nie ma miejsca, gdzie można go "znaleźć". Jeśli nadal jesteś zainteresowany, możesz napisać do mnie e-mail (zobacz adres w profilu) i mogę podać niektóre części kodu niezbędne do drukowania. –

+0

Dzięki, Alex. Nie mogę znaleźć Twojego adresu e-mail, ale myślę, że mam to, czego szukam, na razie. Doceniam jednak twoją ofertę pomocy. –

1

Możesz pobrać ten komponent: https://components.xamarin.com/view/ocpp-thermal-printer-usb Działa jak urok w większości drukarek usb i bluetooth. Skłaniam klasę do wysyłania najczęstszych poleceń esc. Sposób użycia: 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; 
    } 
} 
Powiązane problemy