Windows10でもAndroid Beamを使いたいけど使えなかった

※この記事はただのログです。成果物のリリースではありません。
Win7からWin10にアップグレードしましてね、期待してたのがAndroid Beamなんですよ。期待通り、NFCだけでやりとりする軽量なものはできるようになっていました。Win8からですけどね。だけどでかいファイルのやりとりにはまだ対応できていません。
つまりAndroid 4.0時代のBeamには対応しているけどBluetoothを使ったAndroid4.1のBeam(BTSSP)にはまだ対応していないみたいです。

対応していなければ作ればいいじゃない!ということでBluetoothレシーバーとNFC R/Wを用意して開発しようとしたわけなんですが、うん、Win10になってもまだだめでした。

なにがだめかっていうと、BTSSPはNFCでNDEFメッセージをやりとりした後NDEFメッセージに含まれているBluetooth接続情報を使ってシリアル通信を行うという流れだと思うんです。たぶん。仕様書とかいろいろ探ってみた結果そんな感じだと思いました。
しかし、Android Beamに使われているであろうNDEFメッセージを全然キャッチできない!!
サンプルコードはこんなかんじです。ストアアプリです。
var device = ProximityDevice.GetDefault();
device.DeviceArrived += ProximityDeviceArrived;
device.DeviceDeparted += ProximityDeviceDeparted;
device.SubscribeForMessage("NDEF", messageReceived);
色々省いてますけどまぁ、重要なのはSubscribeForMessage()なので(たぶん)許してください。
これで、NDEFメッセージを捕まえられるはずなんですが、キャッチできない。ドキュメントにSubscribeForMessage()の引数として、"Windows"を指定すれば全部のNFC通信をバイナリデータとしてキャッチできるというようなことが書いてあるので指定してみても、サポートされてないって例外が出る。ちょwwwドキュメントしっかりしてよwww

NFCデバイスが来た、去った、ってことはProximityDeviceDeparted/ProximityDeviceArrivedイベントで検知できてるので、ライブラリのサポートがまだまだ甘いってところだと思います。たぶん。
というわけで、やってみようと思ったけど、玉砕しました。
Win7の時もPC/SCでやって見てたんですけど、PC/SCはもう壊滅的だったから、まだWin10のほうがサポートはできてるかな。PC/SCの頃はNFC R/WがOSでサポートしてされてなかったら、ドライバがそれぞれの機能を提供している状態でシッチャカメッチャカでした。Win10ではNFCデバイスを統合してProximityDevice.GetDefault()で同じものとして使えるようになってるから、進化したかなって。

蛇足

あと、関係ないけど、さっき書いたドキュメントのMSDNの日本語版の翻訳が翻訳しすぎてて???になってました。報告しておいたけど。「ペアリング:Bluetooth Windows は、近接を使用して Bluetooth のペアリングを完了するために、…」のところね。
更に蛇足でこのスライドに書いてある手順を踏んでみたけど(PeerFinderクラスを使った手順)、これはWinPhone専用みたいで、Android Beamにはびくとも反応しませんでした。規格統一してくれ~(切実
もうちょっと蛇足。NDEFメッセージをパースしてくれるライブラがあったよん。

コメント

このブログの人気の投稿

[Win]Xboxコントローラーのバッテリ残量確認と電源を切るツールXControllerTool

UWPアプリでSuicaの履歴を複数件読みだす方法