Я хочу помешать Android начать новое действие при обнаружении пустой тег NFC. При использовании API режима считывателя я не могу обнаружить пустые теги NFC или другие технологии, кроме NDEF. Если я использую nfcadapter.flag_reader_skip_ndef_check , я должен проанализировать ndef самостоятельно - ndef ничего не обнаруживает. Без этого флага это так. Я хочу должным образом поддерживать все технологии, которые, кажется, возможны только с API режима считывателя (API переполнения стека - API режима считывателя). Существует ли общее решение для обнаружения всех типов технологий тегов с помощью API режима считывателя в течение определенного периода времени? < /P>
Я хочу помешать Android начать новое действие при обнаружении пустой тег NFC. При использовании API режима считывателя я не могу обнаружить пустые теги NFC или другие технологии, кроме NDEF. Если я использую nfcadapter.flag_reader_skip_ndef_check , я должен проанализировать ndef самостоятельно - ndef ничего не обнаруживает. Без этого флага это так. Я хочу должным образом поддерживать все технологии, которые, кажется, возможны только с API режима считывателя (API переполнения стека - API режима считывателя). Существует ли общее решение для обнаружения всех типов технологий тегов с помощью API режима считывателя в течение определенного периода времени? < /P> [code]class NfcObserver(context: Context) { private val activity = WeakReference(context as? Activity) private val nfcAdapter: NfcAdapter? by lazy { NfcAdapter.getDefaultAdapter(context) }
private fun isNfcSupported(): Boolean = nfcAdapter != null private fun isNfcEnabled(): Boolean = nfcAdapter?.isEnabled == true
val nfcTagContentFlow: Flow = callbackFlow { when { !isNfcSupported() -> { close(UnsupportedOperationException("NFC is not supported on this device")) return@callbackFlow }
!isNfcEnabled() -> { close(IllegalStateException("NFC is not enabled")) return@callbackFlow } }
val readerCallback = NfcAdapter.ReaderCallback { tag -> launch { handleNdefTag(tag) } }
val flags = NfcAdapter.FLAG_READER_NFC_A nfcAdapter?.enableReaderMode(activity.get(), readerCallback, flags, null)