Исключаете компания NXP Android телефонов с NFC (например, Nexus 4/10)


Я создал приложение, которое считывает определенные данные из студенческих удостоверений, используемых нашей школой. Сейчас он читает только данные пользователя, но в будущем планируется добавить поддержку для чтения оставшегося кредита.

Проблема в том, что карты, которые мы используем, являются классическими Mifare. Nexus 4 и Nexus 10 (и, возможно, больше устройств) не поддерживают эти карты, так как у них есть контроллер Broadcom NFC. Если я прав, приложение не должно аварийно завершать работу или давать проблемы на этих устройствах, но это просто не так что-нибудь.

Есть ли способ каким-то образом исключить эти устройства без контроллера NXP? (в основном как uses-функция, необходимая для класса MifareClassic.) Я могу исключить Nexus 4 и 10 через Play Store, но это вряд ли хорошее решение - даже больше, потому что другие устройства могут начать использовать контроллеры Broadcom, и все они должны быть исключены вручную.

Спасибо! - Амбруз

2   3   2013-04-03 02:49:38

2 ответа:

Вы можете проверить в своем приложении поддержку Mifare Classic следующим образом:

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

Нет способа проверить это перед установкой приложения. Но после установки вы можете предупредить пользователя, что функциональность вашего приложения будет ограничена из-за отсутствия поддержки Mifare Classic.

По-видимому, UID все еще может быть прочитан этими телефонами.

Можно ли вообще использовать классические метки NFC Mifare с Nexus 4 и 10?

Да! И нет. В то время как классические чипы Mifare не могут быть записаны в или полностью считывается Nexus 4 или 10, их UID (уникальная идентификация код) можно обнаружить и прочитать. Так что классические чипы Mifare можно использовать с Nexus 4 или 10 вместе с приложением, таким как AutomateIt, которое просто использует UID тега для запуска события / настройки, сохраненные на устройство. (ReTag & NFC Task Launcher также может просто использовать UID тега, но также есть возможность записи в доступные для записи теги.) Обратная сторона к это потому, что тег не может быть записан, если у вас больше чем один из этих типов приложений NFC на вашем телефоне, нажав на тег появится окно, чтобы спросить вас, какое приложение вы хотите использовать. Но если вы ... используйте только одно приложение NFC для всех ваших событий тегов / настроек / и т. д., то это это не проблема и позволит вам используйте Mifare Classic метки для этой цели.

Подробнее на http://andytags.com/nfc-tags-nexus-4--10-compatibility.html#47A4kbkkGceGqe3L.99

Я бы предложил вам попробовать использовать те же принципы, которые используются в программировании прогрессивных веб-улучшений, и использовать условия защиты, обернутые внутри блоков try / catch, чтобы защитить от каждой небольшой функции / предположения вместо фильтрации только на основе имени / бренда.

Таким образом, если какой-то производитель создает неисправные теги, или если пользователь пытается сканировать два тега одновременно по ошибке, или если пользователь удаляет телефон слишком быстро до завершения сканирования, или что-то еще произойдет в будущем, ваше приложение сможет более легко справиться с этими типами ошибок.