2012-04-03 5 views
1

こんにちは私はNFC機能を使ってAndroidのアプリケーションを開発しています。ここでは、NFC Mifare nfcタグを読み込もうとしました。私はアンドロイドapi.Butで利用可能なNFCDemoを使用して私のアプリケーションを介してデータを読み取るために成功を得ていない。そのデモでは、常に偽のタグを読んで、偽の結果しか与えません。アンドロイドでNFCタグを読み取るにはどうすればよいですか?

私は、マニフェストファイルのインテントフィルタについての混乱を持っています。私のデモではアプリケーションは、この

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.nfc" 
> 
    <uses-permission android:name="android.permission.NFC" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
    > 
    <activity android:name=".simulator.FakeTagsActivity" 
     android:theme="@android:style/Theme.NoTitleBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
     <activity android:name="TagViewer" 
      android:theme="@android:style/Theme.NoTitleBar" 
     > 
      <intent-filter> 
       <action android:name="android.nfc.action.TAG_DISCOVERED"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="9" /> 
    <uses-feature android:name="android.hardware.nfc" android:required="true" /> 
</manifest> 

のようなもので、アプリケーションが常にFakeTagsActivity活性と偽tags.Whenのいずれかの上映リストを開始している我々はそれがない偽のデータでTagViewer活動にリダイレクトされます偽のタグのいずれかをクリックしてください実際のタグデータ 私はTagViewer活動にあまりにも混乱を持っても、それは常に

if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {} 

を処理しているresolveIntent(テントの意図)があるが、私は理解していないのですいただきました!これで間違っています。 本当のタグデータを読むためにapiデモを修正する必要があることをアドバイスしてください。あるいは、nfcタグを読む方法は他にありますか?

私はすでにThis Sample を試みたが、私のための完全な助けません。 私を助けてください。前もって感謝します。

+0

あなたは、それが「動作しない」と言うとき、あなたは、実際のデバイスにしようとしていますか?デバイスにNFCハードウェアサポートが含まれていますか? –

+0

はい、Samsung Verizon 4gデバイスで試しました。 NFC機能を備えています。 –

+0

NFCDemoアプリは本当に時代遅れです。私はそれを構築するために使用しません。しかし、まず問題を見つけようとします。偽のタグの1つをクリックすると、偽のデータでTagViewアクティビティに移動します。それは期待される。実際にどの時点でタグをスキャンしますか?あなたがそれをしたときに私はあなたの質問につきませんでした。 – robertly

答えて

2

は最後に、私は私の質問のためのソリューションを考え出しました。そこ私たちは、その後、私はそれが今正常に動作します

if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {} 

ようTagViewerクラスの私の場合は条件を変更

<activity android:name="TagViewer" 
      android:theme="@android:style/Theme.NoTitleBar" 
     > 
      <intent-filter> 
       <action android:name="android.nfc.action.NDEF_DISCOVERED"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

ようTagViewerアクティビティのインテントフィルタを更新する必要があります。主な問題は、それらがあるタグ検出のprioritesある 優先1:NDEF_DISCOVERED 優先2:TECH_DISCOVERED 優先3:私は私のアプリケーション次いでインテントフィルタAndroidシステムの優先順位1を与え

TAG_DISCOVEREDは常にタグ私の活動を開始します検出された。

+0

アンNDEF_DISCOVEREDの意図は、唯一のAndroidによって送信されます。そうでない場合は、TECH_DISCOVEREDインテントのみが送信されます。さらに、最も具体的なNDEF_DISCOVEREDインテントフィルタを有するアプリ、すなわち、例えば、 NDEFメッセージのMIMEタイプ。インテントフィルタに ''を追加することで、プレーンテキストのNDEFメッセージがすべて得られます。一般に、NFC用のインテントフィルタを定義することはできません。これは、アプリが常に起動するようにします。 –

+0

タグのメッセージフォーマットとメッセージのタイプに基づいてインテントフィルタを使用する必要があります。すべてのNFC検出に共通のフィルタはありませんか? –

+0

すべてのNFCインテントをキャッチするインテントフィルタの組み合わせはありません。しかし、ほとんどの場合、アプリは非常に特定のNFCタグにのみ関心があります。たとえば、特定のタイプのNDEFメッセージ、または特定のURL(またはURL接頭辞)を含むタグ。 –

0

利用できるNFCため、これにチェックしたりしませa linkと..別々アクティブにreadindタグの詳細コードを追加します.....タグの詳細a linkを読み取るためにこれを試してください(例:youractivity)と

としてマニフェストギブで<activity android:name=".youractivity" <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="text/plain"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>

関連する問題