2012/10/06

[n7]Androidアプリを作ろう (3)

Androidアプリを作ろう (1)
Androidアプリを作ろう (2)
Androidアプリを作ろう (3)

ししゃもを食べながらAndroidアプリを作っている(どうでもいい情報)。
ししゃもという名前は、柳と関係があったような。。。


前回は、permissionの設定を調べていた。
今回は最終回。

 

どうやら、カードの読み出しには優先度があるらしい。
ブリリアントサービスさんのNFC技術ブログの話がわかりやすかった。

困ったことに、優先度が高いアプリがインストールされていると、低い方はかすりもしないようなのだ。
アプリが前面に出ているとかそういうのは関係ないみたいだけど、なんとかならんもんかね。


とりあえず、NDEFとかそういうのは考えたくないので、NFC-A、とか、NFC-B、というくらいの読み取りをしたい。
そうなると、ACTION_TECH_DISCOVEREDか、ACTION_TAG_DISCOVEREDのどちらかになる。
NDEFでなければ、次はTECHのようなので、TECHにしておく。
一番優先度が低いTAGは、どういう場合に使うのかね(つつましいアプリとかか)?

 

あとは、Android Developersを見ながらやっていく。

  • フィルタを作る(xml/xxxxxxx.xml)
    名前は何でもいいらしいが、TECHでひっかけるフィルタを作るようだ。
    res/xml/xxx.xmlという名前なら何でもいいらしい。
  • つくったフィルタをAndroidManifestに書く
    <meta-data>を自分で書かんといかん。
    使うaction名(TECH_DISCOVERED)と、フィルタ名(@xml/xxx)
    フィルタは、<tech-list>で囲む。
    1つの<tech-list>内に書いたものはAND条件らしい。NFC-AでNDEF、など。
    <tech-list>を複数書けば、それはOR条件になる。

NFC関係っぽいのは、こういうところなのかな。


そして、私にとってはそれからが長い。
Androidアプリの作り方があまりわからないからだ。
慣れた人にとってはどうでもいいことだろうが、やったことを書いておこう。

  • layoutを作る
    デフォルトでres/layout/activity_main.xmlができているので、ダブルクリック。
    なんか、昔よりハイカラになってる。。
    ボタンなんかを置いてみた。
  • OnClickを指定
    1.6くらいだっただろうか、ボタンのクリックメソッドが指定できるようになったのは。
    ただ、あまり使われている例を見たことがない。
    やはり、リソースとソースファイルに分割されてしまうのを嫌がるのだろうか。
    私?
    私は実装が減るのを歓迎するので、OnClickプロパティに書いたよ。
  • インテント
    カードを検知すると、インテントが飛んでくるようだ。
    忘れてたけど、インテントが飛んでくるとonCreate()が呼ばれて、最初から始まったような感じになってしまうのだな。
    インテントが来る前を覚えていたいので、プリファレンスを使うことになった。
  • Toastはスタックする
    ボタンを押したら、押した内容をToastで出すようにした。
    そうしたのだが、ボタンをたくさん押しても表示してくれない。
    どうやら、スタックして、タイムアウト時間が経過したら上書きするようだ。

ほら、どうでもいい感じだったでしょう。
でもね、よくわからん人にとっては、それぞれがよくわからなかったのだ。


そんなこんなで、Androidでの初NFCアプリを作った。

完成?版は、Bの方。
しかし、なぜかうちのNexus7はNFC-Bのカードを検出できなかった。
「なにかかざされた」というのはわかったようだが、エラー音らしきものがするのだ。
しかたなく、NFC-Bでやるべきところを、NFC-Fに置き換えたのがFの方。
同じpackageなので、どっちかしかインストールできないと思う。

 

なにをするアプリか、説明してなかった。
起動するとボタンが4つ出てくるが、その真ん中にTextViewが1つある。
ボタンを押したりNFCカードをかざしたりして、そこに「SUCCESS !」と表示させるアプリだ。
ヒントは、

  • B版はNFC-Bを認識してNFC-Fは認識しない、F版はNFC-Bの代わりにNFC-Fを認識。
    つまり、Bを認識する方を意図としている。
  • NFCカードは2種類必要。
  • すんませんが、NDEFは書かれていない方がよいです。
    書いてあると、うまくいかない気がします。。
  • Toastに出てくる数字は、手順。手順から外れると0に戻る。
  • 数字が進む手順がわかると、すぐわかりそうな気がする。

というところか。

 

SUCCESS、と表示されるだけで、それ以上のものは何もないです。
初めて作るのがこんなアプリとは・・・。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。