Androidに載っけてみたmjhd.hatenablog.comの記事にて、BMPからUNIRASTへの変換が完了した。AndroidからAirPrintができるはず。いうことで実装してみた。BonjourBonjourは、ネットワーク上のデバイスを探すためのプロトコルのよう。NuGetにPCLでも使えるBonjourライブラリがあったため、今回はこれを使用する。www.nuget.org例えば、ネットワーク上にあるプリンタを列挙したい場合、以下のようなコードを書くことで可能になる。Console.WriteLine(printer);IPPAirPrintは実際はIPPを使用して印刷している。IPPはHTTP上に実装された印刷を制御するためのプロトコル。HTTP上でやりとりが行われているため、プロクシやらSSLやら何やら、HTTPで使用できる技術の恩恵が受けられる点が強みらしい。遠隔地からの印刷なども、HTTPさえ繋がれば可能になる。今回は、以下のプロジェクトを参考に、IPPをある程度実装した。github.comIPPは以下のような書式になっている。1byteGroupは、Attributeの集合。操作に関するIDや、ジョブに関するIDなど、Attributeの種類に応じてグループが存在する。Attributeは、実際の値の集合となっている。この辺からかなり複雑になってくるので、割愛。IDとしてセットし、詳しい設定をAttributeとしてセット、そして送信する。CodeがSuccessなどだったら、Attributeを読み込み、結果を取得する。今回は、プリンタの情報を取得するGet-Printer-Attributes操作と、ジョブの有効性を判定するValidate-Job操作、実際に印刷をするPrint-Job操作、印刷の状況を取得するGet-Job-Attribute操作を実装した。すべてのソースコードがPCL上で完結しているため、Xamarin上で使用することができる。AndroidからAirPrint対応プリンタを通して印刷が行えた。これにより何が嬉しいかというと、Android標準の印刷ダイアログを表示せずに印刷を行うことができる。Android標準の印刷機能を使うと、どうしてもユーザに印刷ボタンを押す操作をしてもらう必要が出てしまうため、回避するためにはこう言った工夫が必要なのだと思う。今現在は多くの印刷に関する設定を、プリンタのデフォルト値にしているため、プリンタによって印刷結果が変わってしまうことがある。この辺どうにかしたい。テストできるプリンタがない...。追記:実は、AirPrintはBonjourを使うとも限らないようで、自分が探した中にも、Bonjour以外の方法でしか探すことのできないプリンタがあった。いった方法で探索しているかは、ベンダしか知らないようなので、今回の方法ではすべてのプリンタを探索できるわけではないということが分かった。探索できない場合は、手動でIPアドレスを指定するようにした。Androidに載っけてみたTweet広告を非表示にする関連記事2016-11-05UNIRASTをC#で実装してみるUNIRASTという画像形式がある。<p>wait0000さんは、はてなブログを使っています。<p>引用をストックできませんでした。<p>限定公開記事のため引用できません。