根性を用いてUWPでバーコードスキャナを実装する

この記事はWindows Phone / Windows 10 Mobile Advent Calendar 2015の14日目の記事の(予備と)して書かれました。 余談: 本当は楽に済まそうと思ってLumia950のレビューを書こうと思っていたのですが、Cloveが11月末入荷予定からずるずると出荷を遅らせ、最終的に届いたのが11/12でした。小心者の私はLumiaが届かないだろうと思ってこのエントリをすでにバリバリと書き始めてしまったので、Advent Calendarにはこちらの記事を投稿することにしました。結局ギリギリになって950も届いたがためにレビューの執筆も間に合ってしまいました(つらい日曜日だった)。よろしければあわせてご覧ください。 http://blog.naotaco.com/archives/979 本題 まともなNFCがiPhoneに載る気配がないせいか、現代においてもQRコードはとても広く使われています。自分のWindowsPhone/Windows 10 mobileアプリでもQRコードを読みたくなるのが人情というものでしょう。今年のAdvent calendarのトップバッター@tanaka_733さんのエントリをみる限りWP8.1だと比較的楽に実装ができるそうですが、我らがUWP勢にそのような甘えは許されません。 必要なものはこちら: 根性 W10M端末, もしくはWindows 10 desktop + WebCam ZXing.Net どうやっていいかわからなかったので、まずはカメラのプレビュー映像を表示して、そこから一定間隔で画像を抜き取り、それをZxing.Netに投げるという方式で進めることにします。作りが雑すぎて故郷の母にはとても見せられないような感じになりますが、強い気持ちで乗り越えてください。 さて、まずはXAMLに置いたUIElementにカメラのプレビュー画像を表示させます。Androidで言うとSurfaceViewに描画するような感じです。とにかくMicrosoft謹製のサンプルがあるので、そこのCameraGetPreviewFrameを全力で参考にします。 作ったサンプルコードのソースはGitHubに上げておきました。

Read more

[UWP] VisualStateManagerを使って画面サイズ, 向きによっていい感じにレイアウトを変える

Windows10, Windows 10 mobileそれぞれで、同じプロジェクトのアプリケーションが動作するようになった。ここだけ聞くと夢の国に聞こえるが、例によって画面サイズの問題がついてまわる。はぁ。 VisualStateTriggerを使うと、groupごとにstateを定義して、画面サイズの変化によってstateを遷移させることができる。このときにXAMLのプロパティを変えたり、コードビハインドでハンドラを叩いたりさせることができる。

Read more