2013-07-02 72 views
2

有沒有辦法找出在Android設備上的NFC堆棧(或芯片組)?我正在爲NfcV類(ISO15693標籤)創建一個具有自定義實現的應用程序。在Nexus S,Galaxy S2,Nexus 7等老設備上,NFC芯片組來自恩智浦,唯一支持的ISO15693標籤是NXP ICODE標籤。我有一個依賴於收發功能的自定義實現。它可與TI和ST Micro標籤完美配合。但問題是,在像Nexus 10,Nexus 4和SGS4這樣的設備上,Google開始使用Broadcom NFC收發器和NFC堆棧,該堆棧原生支持ISO15693標籤。是否有可能以編程方式識別NFC芯片組?如果是這樣如何?如何找出NFC堆棧(芯片)「恩智浦VS博通」在Android設備上

+1

一個顯而易見的方法是看是否有在某種程度上,您可以嘗試使用這種獨特的方法,以便在不可用時優雅地失敗,或者允許您捕獲由此產生的異常/錯誤。或者您可以嘗試查看加載或配置了哪些模塊/驅動程序(如果/proc/config.gz存在,就像往常一樣)。最後的辦法是維護兼容設備/構建的列表,並將其作爲指導。 –

回答

1

基於NFC的恩智浦器件都支持MifareClassic標籤,而基於Broadcom芯片的那些不支持此功能。您可以檢查您的應用是否支持該功能,如https://stackoverflow.com/a/15833191/1202968中所述。

當你寫「所支持的唯一ISO15693標籤是恩智浦ICODE標籤」,我想你的意思是閱讀和ISO15693標籤寫入NDEF消息僅支持恩智浦ICODE標籤爲這樣的設備(因爲通信工作正常在這些基於NXP的NFC設備上使用ISO 15693命令)。如果/當(如果有的話),這些設備得到更新,也支持其他ISO15693標籤NDEF消息存儲,訣竅檢查MifareClassic支持將不再工作,很明顯......

+0

感謝您的建議。到目前爲止,爲了查明它是否是Braodcom芯片,我在techlist中搜索「android.nfc.tech.NdefFormatable」和「android.nfc.tech.Ndef」。如果其中一個類支持ISO15693標籤,我認爲該設備具有廣泛的部分。它似乎對我來說是完美的。 – perceptron

+0

是,當我說,「這是唯一支持的ISO15693標籤是恩智浦ICODE標籤」,我的意思是讀書和ISO15693標籤寫入NDEF消息僅支持恩智浦ICODE標籤。 – perceptron

+0

我同意NFC傢伙關於「MifareClassic支持檢查」。 1.恩智浦爲其新型FW增加了ISO 15693格式功能。因此,檢查ISO 15693可成形性不再是一個好的選擇。 2。由於MifareClassic是舊的恩智浦產品,不是標準的NFC論壇類型,因此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> 

其內容大部分我都試過沒有Broadcom公司的芯片支持的卡。然後你可以檢查一個空的或空的NdefMessage。如果它包含信息,那麼它是一個恩智浦芯片。否則它的Broadcom。

這確實打破:具有非常窄過濾器,但林不知道你會怎麼做,否則的概念。

這也可能不是爲S4工作,因爲定製的三星固件剛剛駁回不兼容的標籤。

還有可能是另一種方式,因爲當你掃描標籤在logcat的確切techlist(全兼容的)節目。