Получение UID RFID-метки Mifare Classic на телефоне Android через KotlinAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Получение UID RFID-метки Mifare Classic на телефоне Android через Kotlin

Сообщение Anonymous »

У меня вообще нет опыта создания приложений для Android, но я хотел бы создать простое приложение, которое выполняло бы некоторые функции на основе UID тега Mifare Classic, который я представляю считывателю NFC.
Я потратил последние дни копался в Интернете и в итоге получил следующую реализацию:
AndroidManifest.xml

Код: Выделить всё

...

...

android:launchMode="singleTop"> 










...
/res/xml/nfc_tech_filter.xml

Код: Выделить всё



android.nfc.tech.NfcA
android.nfc.tech.NfcB
android.nfc.tech.NfcF
android.nfc.tech.IsoDep
android.nfc.tech.NfcV
android.nfc.tech.Ndef
android.nfc.tech.NdefFormatable
android.nfc.tech.MifareClassic
android.nfc.tech.MifareUltralight



MainActivity.kt

Код: Выделить всё

...
import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.MifareClassic
import android.nfc.tech.NfcA

class MainActivity : AppCompatActivity() {
private lateinit var nfcAdapter: NfcAdapter

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// Initialize NFC Adapter
nfcAdapter = NfcAdapter.getDefaultAdapter(this)
...
}

...
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)

// Retrieve the NFC tag from the intent
val tagFromIntent: Tag? = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)

if (tagFromIntent != null) {
Log.e("NFC_TAG", "NFC tag found in the intent")
} else {
Log.e("NFC_TAG", "No NFC tag found in the intent")
}
}
Приложение должно работать на старом смартфоне Sony Xperia Compact с Android 9.

Когда я тестирую приложение на этом телефоне и представляю Mifare Classic 1K RFID-карта Я всегда получаю сообщение «Тег NFC не найден».

Однако, когда я использую такие приложения, как TagInfo или MIFARE Classic, отображается UID карт для тестирования. NFC Tools даже показывает NfcA и MifareClassic как доступные технологии.
Чего мне не хватает в моей реализации?
Обновление 16.09.:
Я нашел в Интернете ресурс (NFCReader — mueller-ma github), который представляет собой реализацию приложения Kotlin, которое предоставляет пользователю информацию о RFID-метках. Он делает больше, чем мне нужно, но послужил хорошей основой. Я до сих пор не знаю точных проблем с моим подходом, но эта версия не распознает теги как Mifare Classic. Поскольку он все еще может определять UID по моим «неизвестным» тегам, у меня есть все, что мне нужно для моего небольшого проекта, и я смог заставить эту функцию работать.

Подробнее здесь: https://stackoverflow.com/questions/789 ... via-kotlin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»