2015/01/17

[android]未フォーマットのFeliCa LiteをNDEFとして検出してしまう

あまり調査できてないのだが、Android 5.0.1でFeliCa Lite未フォーマットのカードをかざすと、intentをgetTag()して取得したTagがNDEFとして見られているような感じがする。

public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Tag tag = getTag(intent);
    if (Ndef.get(tag) != null) {
        //NDEFの処理
    }
}

こんな感じのコードにしていたのだが、if文の中に入ってしまったのだ。
でもNDEFじゃないので、何かするとTag Lostで例外に飛んでしまう。
以前はそうじゃなかったような気がするんだけど・・・。

NdefFormatterがうまく動かないので、NDEFかどうかの判定よりも先に、NFC-Fかどうかの判定をして、NFC-FだったらNDEFフォーマットだろうと未フォーマットだろうと、とにかく未フォーマット時の処理をするようにした。
バグかな?という気もするけど、Androidアプリに慣れていないので単なる実装ミスのような気もしてしまう。

それと、Nexus7(2013)でFeliCa Liteカードの読み込みがあまりよろしくない。
昔からそうだったのかもしれないけど、TagInfoですぐエラーになってしまう。
調子がよいときもあるので、単にかざし方がよくないだけのようにも思うが、もうちょっとがんばってくれてもよいような気がする。

なんか、技術的に弱みがあると「気がする」が多くなってしまうな。。。

0 件のコメント:

コメントを投稿

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