2013-07-02 4 views
2

Android 기기에서 NFC 스택 (또는 칩셋)을 파악할 수 있나요? NfcV 클래스 (ISO15693 태그)에 대한 사용자 지정 구현을 사용하여 응용 프로그램을 만들고 있습니다. Nexus S, Galaxy S2, Nexus 7과 같은 구형 장치에서 NFC 칩셋은 NXP에서 제공되며 지원되는 ISO15693 태그는 NXP ICODE 태그뿐입니다. 나는 송수신 기능에 의존하는 커스텀 구현을 가지고있다. TI 및 ST Micro 태그와 함께 아름답게 작동합니다. 그러나 문제는 Nexus 10, Nexus 4 및 SGS4 Google과 같은 기기에서 Broadcom NFC 송수신기와 ISO15693 태그를 기본적으로 지원하는 NFC 스택을 사용하기 시작한 것입니다. 프로그래밍 방식으로 NFC 칩셋을 식별 할 수 있습니까? 그렇다면 어떻게?NFC 스택 (칩)을 찾는 방법 Android 기기에서 NXP와 Broadcom을 비교하십시오.

+1

확실한 접근 방법은 사용할 수없는 경우 정상적으로 실패하고 결과로 나타나는 예외/오류를 포착 할 수 있도록 고유 한 방법을 사용하려고 시도 할 수있는 방법입니다. 또는 어떤 모듈/드라이버가로드되거나 구성되었는지 볼 수 있습니다 (/proc/config.gz가있는 경우 자주 사용됨). 최후의 수단은 호환 가능한 장치/빌드 목록을 유지하고이를 가이드로 활용하는 것입니다. –

답변

1

NXP NFC 기반 장치는 모두 MifareClassic 태그를 지원하지만 Broadcom 기반 태그는 지원하지 않습니다. https://stackoverflow.com/a/15833191/1202968에 설명 된대로 지원 여부를 앱에서 확인할 수 있습니다.

"지원되는 유일한 ISO15693 태그는 NXP ICODE 태그입니다"라고 쓰면 ISO15693 태그에서 NDEF 메시지를 읽고 쓰는 것이 통신이 잘 작동하기 때문에 해당 장치의 NXP ICODE 태그에서만 지원된다는 의미입니다 이러한 NXP 기반 NFC 장치에서 ISO 15693 명령 사용). 이러한 장치가 다른 ISO15693 태그의 NDEF 메시지 저장소를 지원하도록 업데이트 된 경우 MifareClassic 지원을 확인하는 트릭이 더 이상 작동하지 않습니다. 분명히 ...

+0

제안 해 주셔서 감사합니다. 지금은 Braodcom 칩인지 알아보기 위해 techlist에 "android.nfc.tech.NdefFormatable"과 "android.nfc.tech.Ndef"를 찾고 있습니다. 클래스 중 하나가 ISO15693 태그를 지원하는 경우 장치에 브로드 컴 부품이 있다고 결론을 짓습니다. 완벽하게 작동하는 것 같습니다. – perceptron

+0

예. "지원되는 유일한 ISO15693 태그는 NXP ICODE 태그입니다."라고 말하면 ISO15693 태그에서 NDEF 메시지를 읽거나 쓰는 것이 NXP ICODE 태그에서만 지원된다는 의미입니다. – perceptron

+0

나는 "MifareClassic support check"에 관해 NFC 녀석과 동의한다. 1. NXP는 최신 FW에 ISO 15693 형식 기능을 추가했습니다. 따라서 ISO 15693 형식을 검사하는 것은 더 이상 좋은 옵션이 아닙니다. 2.MifareClassic은 표준 NFC 포럼 유형이 아닌 오래된 NXP 제품이기 때문에 Broadcom은이를 지원하지 않습니다. 따라서 "MifareClassic 지원 확인"이 좋은 옵션입니다. 이 앱은 https://play.google.com/store/apps/details?id=com.inoapp.cardinfo에서 사용할 수 있습니다. 그것은 "MifareClassic 지원"체크를 기반으로합니다. "MifareClassic 지원 확인"을 확인하기 위해이 도구를 사용했습니다. 지금까지 꽤 신뢰성있는 검사였습니다. – Trung

0

여기 추측하지만 당신은 내가 아니라 브로드 컴 칩에서 지원 시도 카드의 대부분을 읽어

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
    <tech-list>  
     <tech>android.nfc.tech.NfcA</tech>  
    </tech-list> 
</resources> 

같은 캐치 모든 기술 필터를 시도 할 수 있습니다 : 모든 하드웨어 정보는 일반적으로 통해 액세스 할 수 있습니다. 그런 다음 NdefMessage가 비어 있거나 null인지 확인할 수 있습니다. 정보가 포함되어 있다면 그것은 NXP 칩입니다. 그렇지 않으면 Broadcom.

매우 좁은 필터를 사용한다는 개념은 깨지 만, 그렇지 않은 경우 어떻게해야 할 지 잘 모르겠습니다.

맞춤형 삼성 펌웨어가 호환되지 않는 태그를 그냥 없애기 때문에 s4에서도이 기능이 작동하지 않을 수 있습니다.

태그를 검색 할 때 정확한 techlist (모든 호환 가능한 것들)가 logcat에 표시되기 때문에 다른 방법이있을 수도 있습니다.