2013-04-02 26 views
3

我已經構建了一個應用程序,可以從我們學校使用的學生ID卡讀取某些數據。目前它只讀取用戶數據,但將來計劃增加支持以讀取剩餘信用。排除帶有NFC的非恩智浦Android手機(如Nexus 4/10)

問題是我們使用的卡片是Mifare Classic。 Nexus 4和Nexus 10(可能還有更多設備)不支持這些卡,因爲它們具有Broadcom NFC控制器。如果我是對的,應用程序不應該崩潰或在這些設備上發出問題,但它只是沒有做任何事情。

有沒有辦法以某種方式排除這些設備沒有恩智浦控制器?(基本上類似於MifareClassic類所需的功能)。我可以通過Play商店排除Nexus 4和10,但這不是一個好的解決方案 - 甚至更多,因爲其他設備可能會開始使用Broadcom控制器,他們都必須被手動排除。

謝謝! - Ambroos

回答

4

您可以在您的應用程序的MIFARE經典支持檢查如下:

boolean hasMifare(Context ctx) { 
return ctx.getPackageManager().hasSystemFeature("com.nxp.mifare"); 
} 

沒有辦法安裝應用程序之前檢查這一點。但是在安裝之後,由於缺乏MIFARE Classic支持,您可以警告用戶應用程序的功能將受到限制。

+4

非常感謝!結果你可以在安裝前(通過Play商店)檢查這一點,通過添加到你的清單:'<使用功能 android:name =「com.nxp.mifare」 android:required =「true」/> – Ambroos

0

顯然,UID仍然可以被這些電話讀取。

NFC Mifare Classic Tags可以在Nexus 4和10上使用嗎?

是的!和不。雖然Mifare Classic Chips不能寫入或由Nexus 4或10完全讀取,但可以檢測並讀取其UID(唯一標識 代碼)。所以Mifare經典芯片可以與Nexus 4或10一起使用 以及諸如AutomateIt這樣的應用,其中 僅使用標籤的UID來觸發保存在 設備上的事件/設置。 (重新標籤& NFC任務啓動器也可以只使用標籤的UID,但 也有寫入可寫標籤的能力。) 的缺陷這是因爲標籤無法寫入,如果您有更多的 比一個這些類型的NFC應用程序在您的手機上,點擊標籤 會彈出一個框,詢問您要使用的應用程序。但是,如果您只爲所有標記事件/設置/等使用一個NFC應用程序,那麼這個 不是問題,並且允許您爲此使用Mifare Classic 標記。

更多的 http://andytags.com/nfc-tags-nexus-4--10-compatibility.html#47A4kbkkGceGqe3L.99

我建議你嘗試使用了在漸進的網絡使用增強的編程相同的原則,並使用包裹try/catch塊,以防止各內的監護條件小功能/假設,而不是僅基於名稱/品牌進行過濾。

這樣,如果某些製造商創建了錯誤標籤,或者如果用戶嘗試錯誤地同時掃描兩個標籤,或者用戶在掃描完成之前太快地移除了電話,或者發生了其他任何事情未來,您的應用程序將能夠更容易地應對這些類型的錯誤條件。

+0

我用它來處理我的例外情況,但重點是,這個應用程序是特定於一種卡類型,我想要的方式(除了手動排除它們),以使正確的設備顯示爲不兼容。 – Ambroos

+0

然而,你仍然可以通過它獲得他們的學生證。你只是無法驗證他們,或知道他們的平衡。這種功能對於某些用例思想可能仍然有用。 –

+0

我查過了,但是我們的所有卡片的UID都是隨機的。 UID與其上的實際數據沒有任何關係,因此我無法對它做任何事情...... – Ambroos

相關問題