2012-03-23 8 views
22

Bluetoothプリンタに印刷ファイルを要求するAndroidタブレット用タブレットを開発する必要があります。 Bluetooth経由での印刷は、私のアプリの最も重要な機能の1つです。残念ながら、この件に関する情報はあまりないので、アドバイスをお願いしたいと思います。Android:Bluetooth印刷

私の知る限り、AndroidのBT StackはBPP(Basic Printing Profile)を実装していないため、Android上でBluetooth経由で(ネイティブコールを使用して)印刷することはできません。

のSDK /ライブラリ

  • Sybase-iAnywhere-Blue-SDK-for-Android: BTプロファイルの多くをサポートしている商用SDK私は、次の選択肢を見つけた少し研究を行います。大企業によって開発された(良いサポート私は 推測)。私はこのことに関する多くの情報を見出していない。 このSDKの使用方法に関するドキュメント、APIまたは例がありますか? 誰かがデモ版をダウンロードする方法を知っていますか? (リンク先は 最後に壊れたようです)
  • iPrint SDK:Commercial SDK。彼らのウェブサイト上のいくつかの例が、他には何もない。
  • Zebralink:Zebraプリンタのみ(自然)。他のメーカーにはおそらくプリンタ用のAPIもあります。

Googleがアプリ

  • のPrinterShare再生:商業(プレミアムキー)
  • ブルートゥーススマート印刷:無料・軽量を。 Bluetoothプリンタへの印刷請求。

私は理想的には、特定のブランドまたはプリンタモデルに縛られることは望ましくありません。今質問:

  • あなたはそれが最良の選択肢だと思いますか?
  • 私が逃した他の選択肢をご存知ですか?
  • 外部アプリケーションを使用してアプリケーションからファイルを簡単に印刷できますか?
  • Bluetoothでファイルを印刷するには、ファイルにどのような形式を使用する必要がありますか? (pdf、画像など)
  • プリンタメーカーとモデルに関するアドバイスはありますか?
  • AndroidでBluetoothで印刷した経験はありますか?
  • すぐにBluetooth をAndroidで印刷する予定はありますか?

あなたの助けを事前に感謝し;)

+0

Officejet 100モバイルプリンタ。ただし、Google Playで** Bluetooth Smart Printing **アプリが見つかりませんでした。リンクがありますか? –

答えて

11

スター精密は、Bluetooth経由でAndroidの印刷用SDK(だけでなく、イーサネットおよびUSB)があります。ここでダウンロードすることができます:http://www.starmicronics.com/support/SDKDocumentation.aspx

あなたが言及したように、現時点ではネイティブで印刷できないため、見つかった代替ソリューションが今日あなたの選択肢です。

私の経験では、外部アプリケーションではなくAPIを使用することをお勧めします。最大の理由は、プリンタの動作を完全に制御できることです。 APIがインテリジェントに構築されていても簡単です。あなたが望むようにプリントアウトをカスタマイズすることはできないので、外部アプリを使用することは制限されています。

私はあなたにリンクしているStar SDKは、実際に見えるように多くのプリンタ機能をテストしカスタマイズすることができる本当に素敵なサンプルアプリケーションを持っています。各機能は、ソースコードに文書化されています。コマンドとそのパラメータは、アプリケーション自体でも簡単に参照可能なスクリーン上の参照として利用できます。それに加えて、それは十分に文書化されています。

あなたの開発に使用する無料のデモプリンタを無料で入手できるので、スターは素晴らしい会社です。

この方法を選択すると、プレーンテキストをコマンドとともにプリンタに送ることができます。 APIは、データをプリンタが理解できるものに変換する処理を行います。

+1

Star MicroicsはライセンスフリーのSDKです。 – blackjack

+0

STARIOSDKは、あらゆる種類のファイルを印刷するのに役立ちますか? – blackjack

+1

SDKが他のBluetoothプリンタと連携するかどうか知っていますか? –

1

BlueToothプリンタへの印刷の可能性は、使用しようとしているプリンタのモデルによって大きく異なります。

例えば、私はCITIZEN CMP-10BTプリンタを使用しています。これは、Android APIを使用して簡単に実行できる特定のバイトシーケンスを送信することによって制御できます。私はそれの上にフレームワークを構築しました。

問題は、どのプリンタモデルがエンドユーザーによって使用されるのかを明確にすることができないという事実にのみあります。そのため、究極のSDKのいくつかは間違いなく大きな必要性になります。

+0

あなたの答えをありがとう、アレックス。好奇心から、オープンソースと言われる「フレームワーク」です。そしてもしそうなら、どこでそれを見つけるのでしょうか?ありがとう。 –

+0

@ Josh Pinter:残念ながら、いいえ。それは商業プロジェクトの一部なので、「発見」できる場所はありません。それでも興味があれば、私に電子メール(プロフィールのアドレスを参照)を書くことができ、印刷に必要なコード部分を提供することができます。 –

+0

ありがとう、アレックス。あなたのメールアドレスを見つけることができませんでしたが、私は今のところ私が探しているものを持っていると思います。私はあなたの助けに感謝します。 –

1

このコンポーネントをダウンロードすることができます: https://components.xamarin.com/view/ocpp-thermal-printer-usbそれはほとんどのusbとbluetooth汎用プリンタの魅力のように動作します。私はクラスを作成して、通常のescコマンドを送信します。使用法:outerInstance.mService.Write(modes.pordefecto()); https://play.google.com/store/apps/details?id=com.dynamixsoftware.printershare - - それは私のHPのための私のデバイス上で動作します、私は**のPrinterShare **アプリを保証することができます

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; 
    } 
}