ほほぅ。
まあ、NFCが一般的かって言われると、そうじゃないと思う。
だいたい、技術が先行するとあんまりはやらない気がする。
冷蔵庫ってどうやって冷やしてるの?と聞かれても私にはよくわからんのだが(わからんのかい)、冷蔵庫は便利だ。
そんなもんだと思う。
が、冷蔵庫が出てきた時代とも違うし、比較してもしょうが無かろう。
それに、このサイトを見ているとわかるかもしれんが、私は応用よりも技術の基礎的なところを知る方が好きなようだ。
なので、技術が先行しても特に気にしない。
ならば、私も長いものに巻かれて、HCEをもう少し真面目にやってみようと思い、以前作ったサンプルを立ち上げた。
が・・・動かない・・・・・・・。
今回、なぜか急に私がAndroid SDK(eclipse)から、AndroidStudioに変更してみようと思った。
HCE Sampleをビルドする前に、Wizardで新規作成したプロジェクトをビルドさせてNexus7に焼こうとしたけど、まずそこが失敗。
理由は、[INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]。
これは別にAndroid Studioのせいではなく、package名に大文字が入っていたせいだった。
http://stackoverflow.com/questions/12396351/how-to-fix-install-parse-failed-manifest-malformed-in-my-android-application
これでStudioで焼けることがわかったので、HCE Sampleをインポートしてビルド。
そしてここでもつまずく。
どうも、Nexus7にAndroid Lを入れていたためのようだ。
build.gradleを編集して対応できた。
http://stackoverflow.com/questions/24437950/build-failed-after-updating-tools-for-android-l
ようやくNexus7に焼くことができたけど、はて、前回はどうやって動作確認したのだか。
Windows7 + NDEF Writerで、Type4のREADを試したけど、どうもうまくいかない。
搬送波が出なかったり、エラーになったり。
Windows8で試したけど、SNEPの方が反応してしまうためか、同じくだめ(Android Beamしなくても、裏ではLLCPが動き続けているログが出てる)。
じゃあ自分で作るか・・・と思ったが、めんどくさい。
幸い、SDK for NFC Starter Kitにコマンドライン版ではあるがType4Aを読むサンプルがあったので実行する。
が・・・なんか「The tag is not a supported Type4 Tag」と出てくる。
しょうが無いのでVisual Studioでデバッグすると、SmartPosterを読み込む部分がかなり決め決めで実装されていた。
SmartPoster内のNDEF Recordは、Shortで3つ。
3つの順番は、TEXT, URI, Action
URIとTEXTだけやっていたので、はじかれていたのだった。
SmartPosterRecord::setPayloadData()を変更して、ようやく動いた。
私のHCE Sampleは間違ってなかったんだ!
とはいえ、HCEの目的からすると、端末がNDEFタグを吐き出すことではないだろう。
なにかしら、セキュアなデータをやりとりするような、そんな緊迫した使い方がメインになるはず。
そういうサンプルを作ってみたいけど、これはR/W側も同時に実装しないといけないのよね・・・。
それには、メモリとしてのNFCタグではなく、Type4Aが持つデータ構造とかアクセス手段とかも知っておかないといかんような気がする。
まあ、Android側もR/W側も自由に扱えると言うほどに熟練してないので、まずはお勉強からですかね。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。