2012-04-03 3 views
1

안녕하세요, NFC 기능을 사용하여 Android 애플리케이션을 개발 중입니다. 여기 NFC Mifare nfc 태그를 읽으려고했습니다. 안드로이드 API를 사용할 수있는 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

예 삼성 버라이존 4g 기기를 사용해 보았습니다. NFC 기능이 있습니다. –

+0

NFCDemo 앱은 실제로 시대에 뒤떨어져 있습니다. 나는 그것을 구축하는데 사용하지 않을 것입니다. 그러나 먼저 문제를 파악하도록 노력하십시오. 가짜 태그 중 하나를 클릭하면 가짜 데이터로 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 활동의 인 텐트 필터를 업데이트해야합니다. 가장 큰 문제는 사람들이 TAG 감지 priorites입니다 우선 순위 1 : NDEF_DISCOVERED 우선 순위 2 : TECH_DISCOVERED 우선 순위 3 : 나는 내 응용 프로그램 다음 인 텐트 필터 안드로이드 시스템의 우선 순위 1를 준

TAG_DISCOVERED 항상 태그 내 활동을 시작 감지 됨.

+0

NDEF_DISCOVERED 인 텐트는 검색된 NFC 태그에 NDEF 메시지가있는 경우에만 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>

관련 문제