diff --git a/README.md b/README.md index 965f228..6f0c818 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,22 @@ External NFC Service API (native style) for Android ================================== -This API is for interacting with the [External NFC Service](https://play.google.com/store/apps/details?id=com.skjolberg.nfc.external) app found in Google Play. +This API is for interaction with the [External NFC Service](https://play.google.com/store/apps/details?id=com.skjolberg.nfc.external) app found in Google Play. -Background +The [External NFC Service](https://play.google.com/store/apps/details?id=com.skjolberg.nfc.external) app provides NFC-functionality along the lines of native Android NFC for external NFC readers connected via USB. + +Overview ======== -The [External NFC Service](https://play.google.com/store/apps/details?id=com.skjolberg.nfc.external) app offers NFC functionality similar to the built-in Android NFC API - for external NFC readers: + +Projects using this library will benefit from: - External NFC reader management and interaction - - NFC Tag access using Andriod built-in (native) types (Ndef, MifareUltralight, IsoDep, etc). + - Parallell use of external and/or internal NFC (i.e. in the same activity) + - Support for both tags and Android devices (Host Card Emulation), simultaneously + - Use of using Andriod built-in (native) types (Ndef, MifareUltralight, IsoDep, etc). -This very much simplifies implementation in use-cases where external NFC readers is required, so it will save a lot of development time. +As this project very much simplifies implementation in use-cases where external NFC readers is required, so it typically save you a lot of development time (2-8 weeks depending on use-case and knowledge). -Overview +Table of contents ================= This repository contains source code for * An Android library project (the actual API), and @@ -22,8 +27,8 @@ This repository contains source code for There is also a [Host Card Emulation client app](https://github.com/skjolber/external-nfc-api/tree/master/ExternalNFCHostCardEmulationClient) for use with the Basic client app. -API -=== +External NFC reader API +======================= The API defines * broadcast actions * service start / stop and status @@ -34,38 +39,43 @@ The API defines * display text * configure NFC tech types (PICC) * enable/disable LEDs - * run custom commands - * abstract activities for interaction with built-in and external NFC (in parallel) + * run custom commands + * and more.. + * abstract activities for interaction with built-in and external NFC (simultaneously) * these currently depend on the [NDEF Tools for Android](https://code.google.com/p/ndef-tools-for-android/) project. * Programmatically start and stop the service (see methods startService() and stopService() in the [NfcExternalDetectorActivity](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/util/activity/NfcExternalDetectorActivity.java) class in for an example). -Note that tag interaction is performed via the native NFC classes and so these are not included in the API itself. +Note that tag interaction is performed via the native NFC classes and so these are not included in the API itself. These native NFC classes are present even on non-NFC devices. Supported readers ================= Currently the ACS readers - * [ACR 122U](http://www.acs.com.hk/index.php?pid=product&id=ACR122U) - * [ACR 1222L](http://www.acs.com.hk/index.php?pid=product&id=ACR1222L) - * [ACR 1251U](http://www.acs.com.hk/en/products/218/acr1251-usb-nfc-reader-ii/) - * [ACR 1281U-C1](http://www.acs.com.hk/en/products/159/acr1281u-c1-dualboost-ii-usb-dual-interface-reader/) - * [ACR 1283L](http://www.acs.com.hk/en/products/226/acr1283l-standalone-contactless-reader/) + * [ACR 122U](http://www.acs.com.hk/index.php?pid=product&id=ACR122U) ([API](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/acs/Acr122UReader.java)) + * [ACR 1222L](http://www.acs.com.hk/index.php?pid=product&id=ACR1222L) ([API](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/acs/Acr1222LReader.java)) + * [ACR 1251U](http://www.acs.com.hk/en/products/218/acr1251-usb-nfc-reader-ii/) ([API](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/acs/Acr1251UReader.java)) + * [ACR 1252U](http://www.acs.com.hk/en/products/342/acr1252u-usb-nfc-reader-iii-nfc-forum-certified-reader/) ([API](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/acs/Acr1252UReader.java)) + * [ACR 1281U-C1](http://www.acs.com.hk/en/products/159/acr1281u-c1-dualboost-ii-usb-dual-interface-reader/) ([API](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/acs/Acr1281UReader.java)) + * [ACR 1283L](http://www.acs.com.hk/en/products/226/acr1283l-standalone-contactless-reader/) ([API](https://github.com/skjolber/external-nfc-api/blob/master/ExternalNFCAPI/src/com/skjolberg/nfc/acs/Acr1283LReader.java)) are supported and must be connected to your Android device via an On-The-Go (OTG) USB cable. Supported tag technology ======================== -Mifare Ultralight and Mifare Classic (including NTAG203, NTAG213) tags are supported. I recommend Mifare Ultralights / NTAG203. Desfire EV1 tags are supported but without NDEF support. Host card emulation (IsoDep) targets are also supported. +Mifare Ultralight and Mifare Classic (including NTAG203, NTAG213) tags are supported. Desfire EV1 tags are supported but without NDEF support. [Host Card Emulation](http://developer.android.com/guide/topics/connectivity/nfc/hce.html) targets are also supported - in other words, interaction with Android devices. Please note: - ACR 122U the Mifare Classic does not work. Troubleshooting =============== -Note that not all Android devices actually have an USB hub. +Note that not all Android devices actually have an USB hub, in which case no USB devices work. + +Does the ACR reader not light up when connected to your device, even after the service asks for USB permissions? The ACR reader shuts down if there is not enough battery, so try charging your battery more, or connect external power. -Does the ACR reader not light up when connected to your device, even after the service asks for USB permissions? The ACR reader shuts down if there is not enough battery, so try charging your battery more. +If you are using external power, be aware that the connection order (device, reader, power) might be important. Known symptom: + - Seeing an USB permissions window that disappears rather quickly. -Please report any issues to skjolber@gmail.com. +Please report any issues to thomas.skjolberg@gmail.com. Related apps ============ @@ -73,25 +83,27 @@ You might be interested in * [ACR 1222L USB NFC Reader Utils](https://play.google.com/store/apps/details?id=com.skjolberg.acr1222) * [ACR 122 USB NFC Reader Utils](https://play.google.com/store/apps/details?id=com.skjolberg.acr122u) * [ACR 1251 USB NFC Reader Utils](https://play.google.com/store/apps/details?id=com.skjolberg.acr1251u) + * [ACR 1252 USB NFC Reader Utils](https://play.google.com/store/apps/details?id=com.skjolberg.acr1252u) * [ACR 1281 USB NFC Reader Utils](https://play.google.com/store/apps/details?id=com.skjolberg.acr1281u) + for configuration of your reader. Approximately the same configuration options are available using this API. Feature requests ================ -Please email feature requests to skjolber@gmail.com. +Please email feature requests to thomas.skjolberg@gmail.com. Distribution ============ -Get in touch for bulk and/or offline distribution. A library jar is also available, simplifying distribution of your own app(s). +Get in touch for bulk and/or offline distribution. A library jar is also available on request, simplifying distribution of your own app(s). -Need help? +Development =========== -If you need professional assistance with an NFC project, get in touch. I also do +If you need professional, cost-efficient assistance with an NFC project, get in touch. I also do * Host Card Emulation (HCE) for Android * Desfire EV1 tech (with encryption) * Smartcard-related workflows and integrations - * Tag emulation + * WebView-based apps -Feel free to connect with me on [LinkedIn](http://lnkd.in/r7PWDz). +Feel free to connect with me on [LinkedIn](http://lnkd.in/r7PWDz), see also my [Github page](https://skjolber.github.io).