スポンサーサイト

--.--.--.--.--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NFC使ってみた

2012.11.10.Sat.01:22
Windows8ではOS標準でNFCをサポートしていて、WinRTのAPIもあるので使ってみました。

ProximityAPIのサンプル (MSDN)
Proximity API (MSDN)

私の知る限り、日本国内で一般的に手に入れられるProximity API対応のNFCリーダーライターは、SonyのRC-S380だけです。NFC CertifiedなNFC機器は他にもありますが、外付け対応なのは、RC-S380とDragonと評価キットくらいしか見つかりませんでした。

あと、NFCタグも必要です。
Mifare UltraLight(Type2)
Felica light(Type3)

まず、マニフェストにNFCを使うことを宣言します。
ProximityAPI使用時のマニフェスト設定


次にリーダーライターを取得します。

ProximityDevice _device = ProximityDevice.GetDefault();


もし、対応リーダーが接続されていなければ、_deviceがnullになります。

次に、NFC機器がタッチされたとき、離れた時のハンドラーを登録します。

_device.DeviceArrived += ProximityDeviceArrived;
_device.DeviceDeparted += ProximityDeviceDeparted;


これで、NFCのタグや、NFC搭載のスマホなどをリーダーにタッチすると、イベントが発生します。


次にNFCのタグからデータを読み込んでみます。
…の前に、タグにデータを書き込まないといけません。

NDEF Writerを使用して、NFCタグ(Felica lightやMifare UltraLight等)にデータを書き込みます。

さて、NDEFメッセージを読み込んでみましょう。

_device.SubscribeForMessage("NDEF", messageReceivedHandler);


となるはずです。
というのも、この書き方をしているサンプルコードはいくつか見かけたのですが、RC-S380ではFileNotFoundExceptionが発生します。対応していないのか、コードが悪いのか…。今のところ原因はわかっていません。

あと、最初のうちしばらくはDeviceArrivedとか全く反応せず頭を抱えていたのですが、突然反応するようになったりで、謎です。細かい動きを見るにはもう少し時間がかかりそうです。
どこかに書いてあったのですが、NFCの読み取りは、アプリがアクティブの状態でしかされないようです。
なのでバックグラウンドの状態とか、あとシミュレータもだめっぽいです。必ずローカルコンピュータで実行してください。
スポンサーサイト
コメント

管理者のみに表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。