2012-03-23 121 views
22

我必須開發一款適用於Android平板電腦的應用程序,要求將打印文件打印到 藍牙打印機。通過藍牙打印是我的應用程序最重要的功能之一。不幸的是,關於這個主題的信息並不多,所以我想徵求意見。Android:藍牙打印

據我所知,無法通過藍牙在Android上打印(使用本機通話),因爲Android的BT協議棧沒有實現BPP(基本打印配置文件)。做了一些研究,我發現下列選項:

的SDK /庫

  • Sybase-iAnywhere-Blue-SDK-for-Android:支持 很多BT型材商業SDK。由大公司開發(很好的支持我猜 )。我還沒有找到關於這個的很多信息。 有一些文檔,API或關於如何使用這個SDK的例子? 有人知道如何下載演示版本嗎? (鏈接似乎是 上次我嘗試過)
  • iPrint SDK:商業SDK。他們網站上的一些例子,但沒有別的。
  • Zebralink:僅適用於Zebra打印機(自然)。其他製造商也可能爲他們的打印機提供API。

谷歌Play應用

  • 的PrinterShare:商業(高級鑰匙)
  • 藍牙智能打印:免費輕便。聲稱打印到藍牙打印機。

理想情況下,我不想被綁定到特定的品牌或打印機型號。現在的問題:

  • 你認爲這是最好的選擇?
  • 你知道我錯過了其他的選擇嗎?
  • 我可以使用外部應用程序輕鬆打印來自我的應用程序的文件嗎?
  • 我應該使用什麼格式的文件才能通過 打印藍牙? (pdf,圖像等)
  • 打印機制造商和型號的任何建議?
  • 你有沒有在Android上通過藍牙打印的實際經驗?
  • 在Android上打印藍牙 有沒有計劃在不久的將來?

預先感謝你的幫助;)

+0

我可以保證的** **的PrinterShare應用程序 - https://play.google.com/store/apps/details?id=com.dynamixsoftware.printershare - 它的作品在我的設備我的HP Officejet 100移動打印機。不過,我無法在Google Play中找到** Bluetooth Smart Printing **應用。你有鏈接嗎? – 2017-03-29 20:14:25

回答

11

星MICRONICS具有通過藍牙Android的打印一個SDK(以及以太網和USB)。你可以在這裏下載:http://www.starmicronics.com/support/SDKDocumentation.aspx

正如您所提到的,您目前無法在本地打印,因此您發現的替代解決方案是您今天的選擇。

根據我的經驗,最好使用API​​而不是外部應用程序。最大的原因是您可以完全控制打印機行爲。如果API是智能構建的,也很容易。使用外部應用程序受到限制,因爲您無法按照自己的意願自定義打印輸出。

我把你鏈接到的Star SDK有一個非常好的示例應用程序,它可以讓你測試和定製很多打印機功能,以便看到它們在行動中。源代碼中記錄了每個函數。這些命令及其參數也可以在應用程序本身作爲快捷的屏幕參考使用,方便。最重要的是,它是有據可查的。

Star是一家很棒的公司,因爲您可以獲得您選擇的免費演示打印機用於您的開發。

如果您選擇這種方式,您可以將純文本與命令一起發送到打印機。 API處理將數據轉換爲打印機可以理解的內容。

+1

星微電子是免費的sdk許可證。 – blackjack 2014-07-01 06:27:17

+0

STARIOSDK可以幫助打印所有類型的文件。 – blackjack 2014-07-02 07:54:26

+1

您是否知道SDK是否可以與其他品牌的藍牙打印機配合使用? – 2014-10-01 15:41:34

1

打印到BlueTooth打印機的可能性很大程度上取決於您嘗試使用的打印機型號。例如,我使用CITIZEN CMP-10BT打印機,可以通過發送特定的字節序列來控制打印機,這些字節序列可以使用Android API輕鬆完成。我甚至在其上構建了一個框架。

問題在於,您無法確定哪些打印機型號將被最終用戶使用,因此一些終極SDK肯定會非常需要。

+0

謝謝你的回答,Alex。出於好奇,是你提到開源的「框架」。而且,如果是這樣,那麼可以找到它的地方?謝謝。 – 2014-07-10 21:42:54

+0

@ Josh Pinter:不幸的是,沒有。它是商業項目的一部分,所以沒有可以「找到」的地方。如果你仍然感興趣,你可以給我寫一封電子郵件(見配置文件中的地址),我可以提供一些打印所需的代碼部分。 – 2014-07-17 10:09:48

+0

謝謝,亞歷克斯。找不到你的電子郵件地址,但我想我現在已經找到了我正在尋找的東西。儘管如此,我很欣賞你提供的幫助。 – 2014-07-17 16:14:23

1

您可以下載此組件: https://components.xamarin.com/view/ocpp-thermal-printer-usb它在大多數USB和藍牙通用打印機中像一個魅力。我發佈了一個類來發送最常用的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; 
    } 
}