Androidを使用してNFC技術(タグだけでなく)を発見する方法は?
質問
Android 2.3 Nexus SデバイスのJavaでコーディングしています。私は最近購入したNFCリーダー/ライターを発見しようとしている問題を抱えています。私のマニフェストファイルで、私は使用しています
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
私がやろうとしているのは、ある種のNFC技術が前後に/利用可能であることを発見することです。電話をNFCリーダー/ライターの近くに持って行くと、ログレジスタが表示されます いくつか 「Dalvikm」と「AudioHardware」のタグを使用したイベントのようなイベント。しかし、何らかの理由で、意図は私の活動を開始しません。私のアプリは、NFC関数を備えた唯一のアプリケーションです。デフォルトなどを確認してください。私のアクティビティでは、基本的なレイアウトとOnCreateメソッドと一緒に使用しています。
@Override
public void onNewIntent(Intent intent) {
// TODO
Toast.makeText(this, "NFC TECH DISCOVERED!", Toast.LENGTH_LONG).show();
}
少なくともアクティビティが起動することを期待していました。なぜこれがそうではないのかという考えはありますか?たぶん、私はこれをNFCリーダーの上に振っており、実際のNFCタグではなく、私がうまく見つけることができなかったからでしょう。アプリが少なくともNFCの有能なデバイスがあることを認めない理由がわからないと思いました。
リソースファイルには以下が含まれています。
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.MifareUltralight</tech>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.IsoDep</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
</resources>
解決
「android.nfc.action.tech_discovered」では、技術はNFCタグの技術を指すNFCデバイスを意味するものではありません。 Mifareclassic、Ultralightなど。そのため、タグではないため、読者/ライターを認識しません。
ネクサスがカスタムROMをインストールせずにタグとして機能できないため、デスクトップNFCリーダー/ライターをネクサスと通信するために多くの問題を抱えていると思います。読み取りまたは書き込み、ほとんどのデスクトップリーダーはタグとして機能することはできないため、読み書きや書くことはありません。おそらく、P2P通信を行うことができますが、それでもこれには多くの作業が必要だと思います。
どのNFCリーダー/ライターがありますか?
他のヒント
また、nfc_tech_filterファイルに間違いがあります。少なくとも1つのハイテクリストは、あなたと通信したいTAGによってサポートされている技術のサブセットでなければなりません。より少ない技術を持つより多くのハイテクリストを使用する必要があります。およびまたは原則がこのように実装されています。
ただし、カードリーダーの場合、ピーナッツの答えが主な問題です。