我想在智能手機上使用libnfc(我可以同時使用Android或Windows手機)。我需要對NFC設備進行低級訪問,因爲標準API不允許我執行所需的所有操作。在使用libnfc的智能手機中對nfc的低級訪問
這可能嗎?有沒有辦法處理libnfc以外的其他方法? 有人能幫助我嗎?
我想在智能手機上使用libnfc(我可以同時使用Android或Windows手機)。我需要對NFC設備進行低級訪問,因爲標準API不允許我執行所需的所有操作。在使用libnfc的智能手機中對nfc的低級訪問
這可能嗎?有沒有辦法處理libnfc以外的其他方法? 有人能幫助我嗎?
的Windows Phone
在Windows手機,我不認爲這將是您輕鬆繞過Windows API和直接用自己的軟件棧訪問NFC控制器的驅動程序層。
的Android
在Android上,這取決於什麼libnfc你所談論的和你想有多深進入設備的Android系統。
This libnfc僅支持恩智浦的PN532 NFC控制器,因此無法與安裝在Android設備中的當前NFC控制器(恩智浦的PN544/PN547,Broadcom的BCM2079x)配合使用。但是,如果您在談論libnfc-nxp(恩智浦的PN54x)或libnfc-nci(對於Broadcom的BCM2079x以及其他可能符合NCI標準的芯片),這是另一回事。您可能能夠使用它們或使其適應您的需求。
所以現在的問題是如何繞過標準的Android API,並直接使用現有的NFC堆棧(libnfc-nci/nxp或Android NFC服務)。
我建議您首先查看現有Android NFC服務提供的功能,而不是通過Android API提供的功能。如果該功能已經足夠,您可以嘗試直接與NFC服務接口並簡單地使用該功能。
如果您需要更多功能,它會變得複雜:NFC控制器通過內核驅動程序集成到Android系統中,並可作爲Linux設備文件訪問(位於/dev/
下)。 Android NFC服務使用libnfc-nxp/nci來訪問該設備文件。因此,在正常情況下,設備文件已被Android NFC服務使用,因此其他libnfc- *實例無法訪問/不可用。而且,只有NFC服務(或者其Linux用戶)才能訪問設備文件。
所以有兩種選擇:
您可以修改整個Android系統(即你創建一個定製的Android系統固件)。在這種情況下,最簡單的選擇是使用現有的libnfc- *和Android NFC服務源代碼並使用您的功能進行擴展。您甚至可以根據自己的需求調整自定義固件的Android API。
你想改變一個實時系統(即你不想將自定義固件刷到設備上)。在這種情況下,您需要用您自己的NFC服務替換現有的Android NFC服務,該服務包含您需要的擴展功能。 YOu肯定需要root訪問才能實現這一點(因爲您必須強制關閉現有的NFC服務,並且您的替代NFC服務需要訪問NFC控制器的設備文件)。
謝謝, 我會嘗試,但 http://open-nfc.org/? – Ariakan
*開放式NFC *現在在實踐中似乎沒有多大關聯(至少不適用於Android或Windows)。雖然它被稱爲「開放」和「硬件無關」,但它實際上是專門爲Inside Secure的MicroRead NFC芯片組設計的NFC堆棧。所以它不適用於任何其他芯片硬件(除非您爲其創建適當的HAL)。除此之外,和libnfc-nxp/-nci一樣適用於它。 –
BusyBox方法呢?這會工作嗎? –