Мой проект требует использования устройства Android для чтения данных истории транзакций из Suica , не только с физической карты, но также с мобильных устройств, которые интегрированы с картой через определенное приложение.Для более позднего примера примером является приложение Suica на iPhone, которое подключается к сервису Apple Pay ссылка .
Мой подход заключается в простом использовании Android NFC API для обоих случаев.Мы считаем, что как физическая карта, так и мобильное устройство с приложением Suica фактически могут рассматриваться как тег NFC-F (Felica).Приложение Suica эффективно работает в режиме эмуляции карт, не так ли?
Проблема в устройствах Android с SDK-версией до Android 6.0 (уровень API 23), при чтении данных изфизическая карта или мобильное устройство, но для устройств Android с версией SDK от Android 7.0 (уровень API 24) оно вряд ли может обнаружить мобильное устройство как тег NFC-F, поэтому мы в основном не можем прочитать данные с него.
Возможно, есть некоторые изменения в Android SDK, вызывающие эту проблему, но я понятия не имею, что это, и как я могу их найти.Может кто-то объяснить это мне ?Я уже отправил вопрос к Teratail, но ответа нет.
------------- Обновлено 2019/05/01 -------------
Взглянув на исходный код Android SDK, выясняется, что из самой версии SDK Android 7.0 добавлен HostNfcFService for CardEmulation.Возможно, это не совпадение, но я пока не смог понять. Ссылка на Github
<!-- Scan activity -->
<activity
android:name="xxxx.ScanActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
<!-- NFC TAG -->
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.NfcF</tech>
</tech-list>
</resources>