Мы используем метки NFC в качестве парковочных билетов для входа и выхода. На каждой записи тег записан с некоторыми данными, а на выходе эти данные проверяют выход транспортного средства.
После въезда и выезда некоторых транспортных средств NfcService перестает работать, и смартфон не может обнаружить метки NFC. Устройство нуждается в перезагрузке, чтобы перезапустить NfcService, и устройство снова начинает нормально работать.
Эта ошибка видна случайным образом, и мы не смогли воспроизвести эту ошибку в среде разработки, но мы наблюдали эту проблему несколько раз на устройствах, установленных на входных и выходных воротах парковочных площадок.
![](https://i.stack.imgur.com/pDaXQ.png)
Нам удалось как-то управлять вышеуказанным журналом, когда мы отлаживали эту проблему.
Мы пробовали разные изменения, такие как enableReaderMode
вместо enableForegroundDispatch
, но проблема сохраняется.
public void enableReaderMode() {
try {
Log.d("WTF", "Enabling reader mode");
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
if (nfc != null) {
int flags = NfcAdapter.FLAG_READER_NFC_A ;
nfc.enableReaderMode(this, new NfcAdapter.ReaderCallback() {
@Override
public void onTagDiscovered(Tag tag) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("WTF", "Tag discovered");
String uid = ByteArrayToHexString(tag.getId());
Toast.makeText(MainActivity.this, getString(R.string.message_tag_detected), Toast.LENGTH_SHORT).show();
Ndef ndef = Ndef.get(tag);
if (isNFCDialogDisplayed) {
if (isWrite) {
mNfcWriteFragment = (NFCWriteFragment) getFragmentManager().findFragmentByTag(NFCWriteFragment.TAG);
mNfcWriteFragment.onNfcDetected(ndef, uid);
} else {
mNfcReadFragment = (NFCReadFragment) getFragmentManager().findFragmentByTag(NFCReadFragment.TAG);
mNfcReadFragment.onNfcDetected(ndef, uid);
}
}
}
});
}
}, flags, null);
}
}catch (Exception e){
Crashlytics.logException(e);
}
}
public void disableReaderMode() {
try {
Log.d("WTF", "Disabling reader mode");
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
if (nfc != null) {
nfc.disableReaderMode(this);
}
}catch (Exception e){
Crashlytics.logException(e);
}
}
NFCWriteFragment и NFCReadFragment внутренне считывают и записывают данные NDEF в теги.
Похожие вопросы по StackOverflow:
UPDATE
Переместил код из onResume, поэтому активность всегда активна и видима, когда enableReadeMode()
и disableReaderMode()
называются
Вот новые логи
04-15 01:51:50.328 4987-4987/in.parksmart.operator D/WindowClient: Add to mViews: com.android.internal.policy.PhoneWindow$DecorView{55c53ae V.E...... R.....I. 0,0-0,0}, this = android.view.WindowManagerGlobal@ff3d558
04-15 01:51:50.329 4987-5037/in.parksmart.operator D/OpenGLRenderer: CanvasContext() 0x9cafb800
04-15 01:51:50.330 4987-4987/in.parksmart.operator D/ViewRootImpl: hardware acceleration is enabled, this = ViewRoot{7de1f47 in.parksmart.operator/in.parksmart.operator.MainActivity,ident = 133}
04-15 01:51:50.354 4987-4987/in.parksmart.operator D/Surface: Surface::allocateBuffers(this=0x9de38200)
04-15 01:51:50.360 4987-5037/in.parksmart.operator D/OpenGLRenderer: CanvasContext() 0x9cafb800 initialize window=0x9de38208, title=in.parksmart.operator/in.parksmart.operator.MainActivity
04-15 01:51:50.360 4987-5037/in.parksmart.operator D/Surface: Surface::connect(this=0x9de38200,api=1)
04-15 01:51:50.361 4987-5037/in.parksmart.operator W/libEGL: [ANDROID_RECORDABLE] format: 1
04-15 01:51:50.361 4987-5037/in.parksmart.operator D/Surface: Surface::setBufferCount(this=0x9de38200,bufferCount=4)
04-15 01:51:50.366 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9c9cd8e0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:51.181 4987-4999/in.parksmart.operator D/WTF: Disabling reader mode
04-15 01:51:51.182 4987-4999/in.parksmart.operator D/WTF : NFC: Incompatible Tag
04-15 01:51:51.218 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:51:51.218 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9c9cd8e0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:51.220 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:51:51.220 4987-5037/in.parksmart.operator D/Surface: Surface::connect(this=0x9de38200,api=1)
04-15 01:51:51.221 4987-5037/in.parksmart.operator W/libEGL: [ANDROID_RECORDABLE] format: 1
04-15 01:51:51.221 4987-5037/in.parksmart.operator D/Surface: Surface::setBufferCount(this=0x9de38200,bufferCount=4)
04-15 01:51:51.224 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9c9cd8e0) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:51.432 4987-5077/in.parksmart.operator D/NativeCrypto: ssl=0xaa571900 sslWrite buf=0x9da11aa0 len=7 write_timeout_millis=0
04-15 01:51:51.432 4987-5077/in.parksmart.operator D/NativeCrypto: sslNotify, appData=0xaf928a00 ret=1
04-15 01:51:51.459 4987-5052/in.parksmart.operator D/NativeCrypto: sslSelect, appData=0xaf928a00 woken up by a token
04-15 01:51:51.459 4987-5052/in.parksmart.operator D/NativeCrypto: sslSelect, appData=0xaf928a00 read ret=1
04-15 01:51:51.459 4987-5052/in.parksmart.operator D/NativeCrypto: sslSelect, appData=0xaf928a00 woken up by a token
04-15 01:51:51.459 4987-5052/in.parksmart.operator D/NativeCrypto: sslSelect, appData=0xaf928a00 read ret=1
04-15 01:51:54.335 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d9715a0) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:54.414 4987-4987/in.parksmart.operator D/SettingsInterface: from settings cache , name = sound_effects_enabled , value = 0
04-15 01:51:54.414 4987-4987/in.parksmart.operator D/WTF: Enabling reader mode
04-15 01:51:54.467 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:51:54.467 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9c9cd8e0) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:54.468 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9d9715a0) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:54.471 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:51:54.471 4987-5037/in.parksmart.operator D/Surface: Surface::connect(this=0x9de38200,api=1)
04-15 01:51:54.472 4987-5037/in.parksmart.operator W/libEGL: [ANDROID_RECORDABLE] format: 1
04-15 01:51:54.474 4987-5037/in.parksmart.operator D/Surface: Surface::setBufferCount(this=0x9de38200,bufferCount=4)
04-15 01:51:54.478 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d9715a0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:54.485 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9c9cd8e0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:54.506 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d971610) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:54.542 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d971680) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:54.976 4987-5000/in.parksmart.operator D/WTF: Disabling reader mode
04-15 01:51:54.977 4987-5000/in.parksmart.operator D/WTF : NFC: Incompatible Tag
04-15 01:51:55.003 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:51:55.003 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9d9715a0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:55.004 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9c9cd8e0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:55.005 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9d971610) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:55.005 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9d971680) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:51:55.007 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:51:55.008 4987-5037/in.parksmart.operator D/Surface: Surface::connect(this=0x9de38200,api=1)
04-15 01:51:55.009 4987-5037/in.parksmart.operator W/libEGL: [ANDROID_RECORDABLE] format: 1
04-15 01:51:55.010 4987-5037/in.parksmart.operator D/Surface: Surface::setBufferCount(this=0x9de38200,bufferCount=4)
04-15 01:51:55.012 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d971680) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:56.966 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d971610) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:57.023 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9c9cd8e0) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:51:57.118 4987-4987/in.parksmart.operator D/SettingsInterface: from settings cache , name = sound_effects_enabled , value = 0
04-15 01:51:57.119 4987-4987/in.parksmart.operator D/WTF: Enabling reader mode
04-15 01:52:05.451 4987-4987/in.parksmart.operator E/NFC: NFC service dead - attempting to recover
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:511)
at android.nfc.INfcAdapter$Stub$Proxy.setReaderMode(INfcAdapter.java:614)
at android.nfc.NfcActivityManager.setReaderMode(NfcActivityManager.java:241)
at android.nfc.NfcActivityManager.enableReaderMode(NfcActivityManager.java:217)
at android.nfc.NfcAdapter.enableReaderMode(NfcAdapter.java:1299)
at in.parksmart.operator.NFCReadFragment.enableReaderMode(NFCReadFragment.java:131)
at in.parksmart.operator.NFCReadFragment$1.onClick(NFCReadFragment.java:100)
at android.view.View.performClick(View.java:5265)
at android.view.View$PerformClick.run(View.java:21534)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
04-15 01:52:05.452 4987-4987/in.parksmart.operator E/NFC: could not retrieve NFC service during service recovery
04-15 01:52:05.454 4987-4987/in.parksmart.operator I/Choreographer: Skipped 432 frames! The application may be doing too much work on its main thread.
04-15 01:52:05.473 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:52:05.473 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9d971680) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:52:05.474 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9d971610) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:52:05.475 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9c9cd8e0) (w:584 h:593 s:592 f:0x1 u:0x000f02)
04-15 01:52:05.477 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:52:05.478 4987-5037/in.parksmart.operator D/Surface: Surface::connect(this=0x9de38200,api=1)
04-15 01:52:05.480 4987-5037/in.parksmart.operator W/libEGL: [ANDROID_RECORDABLE] format: 1
04-15 01:52:05.481 4987-5037/in.parksmart.operator D/Surface: Surface::setBufferCount(this=0x9de38200,bufferCount=4)
04-15 01:52:05.485 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9c9cd8e0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:52:05.509 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:52:05.509 4987-5037/in.parksmart.operator D/GraphicBuffer: unregister, handle(0x9c9cd8e0) (w:656 h:497 s:656 f:0x1 u:0x000f02)
04-15 01:52:05.511 4987-5037/in.parksmart.operator D/Surface: Surface::disconnect(this=0x9de38200,api=1)
04-15 01:52:05.516 4987-4987/in.parksmart.operator D/WindowClient: Remove from mViews: com.android.internal.policy.PhoneWindow$DecorView{55c53ae V.E...... R......D 0,0-528,369}, this = android.view.WindowManagerGlobal@ff3d558
04-15 01:52:05.516 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.517 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=-33.087376, y[0]=95.55115, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=6, eventTime=1689826, downTime=1689716, deviceId=2, source=0x1002 }
04-15 01:52:05.517 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.518 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=-33.087376, y[0]=95.55115, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1689842, downTime=1689716, deviceId=2, source=0x1002 }
04-15 01:52:05.518 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.519 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=353.3759, y[0]=527.21387, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1692129, downTime=1692129, deviceId=2, source=0x1002 }
04-15 01:52:05.520 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.520 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=353.3759, y[0]=527.21387, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=6, eventTime=1692243, downTime=1692129, deviceId=2, source=0x1002 }
04-15 01:52:05.520 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.521 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=353.3759, y[0]=527.21387, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1692258, downTime=1692129, deviceId=2, source=0x1002 }
04-15 01:52:05.521 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.521 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.3204, y[0]=526.21466, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1692338, downTime=1692338, deviceId=2, source=0x1002 }
04-15 01:52:05.521 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.522 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=393.3204, y[0]=526.21466, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=4, eventTime=1692416, downTime=1692338, deviceId=2, source=0x1002 }
04-15 01:52:05.522 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:05.522 4987-4987/in.parksmart.operator W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=393.3204, y[0]=526.21466, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1692432, downTime=1692338, deviceId=2, source=0x1002 }
04-15 01:52:05.522 4987-4987/in.parksmart.operator W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
04-15 01:52:06.898 4987-4987/in.parksmart.operator D/SettingsInterface: from settings cache , name = sound_effects_enabled , value = 0
04-15 01:52:06.899 4987-4987/in.parksmart.operator E/NFC: NFC service dead - attempting to recover
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:511)
at android.nfc.INfcAdapter$Stub$Proxy.getState(INfcAdapter.java:365)
at android.nfc.NfcAdapter.isEnabled(NfcAdapter.java:642)
at in.parksmart.operator.MainActivity$PlaceholderFragment.lambda$onCreateView$4(MainActivity.java:2925)
at in.parksmart.operator.-$$Lambda$MainActivity$PlaceholderFragment$rsZBvNO0FFN0PjGCm8QiSvrhIqw.onClick(lambda)
at android.view.View.performClick(View.java:5265)
at android.view.View$PerformClick.run(View.java:21534)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
04-15 01:52:06.941 4987-4987/in.parksmart.operator D/WindowClient: Add to mViews: com.android.internal.policy.PhoneWindow$DecorView{dcd6d0c V.E...... R.....I. 0,0-0,0}, this = android.view.WindowManagerGlobal@ff3d558
04-15 01:52:06.942 4987-5037/in.parksmart.operator D/OpenGLRenderer: CanvasContext() 0x9f734800
04-15 01:52:06.943 4987-4987/in.parksmart.operator D/ViewRootImpl: hardware acceleration is enabled, this = ViewRoot{5eeb4b3 in.parksmart.operator/in.parksmart.operator.MainActivity,ident = 134}
04-15 01:52:06.972 4987-5037/in.parksmart.operator D/OpenGLRenderer: CanvasContext() 0x9f734800 initialize window=0x9de38208, title=in.parksmart.operator/in.parksmart.operator.MainActivity
04-15 01:52:06.972 4987-4987/in.parksmart.operator D/Surface: Surface::allocateBuffers(this=0x9de38200)
04-15 01:52:06.972 4987-5037/in.parksmart.operator D/Surface: Surface::connect(this=0x9de38200,api=1)
04-15 01:52:06.975 4987-5037/in.parksmart.operator W/libEGL: [ANDROID_RECORDABLE] format: 1
04-15 01:52:06.976 4987-5037/in.parksmart.operator D/Surface: Surface::setBufferCount(this=0x9de38200,bufferCount=4)
04-15 01:52:06.980 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9c9cd8e0) (w:812 h:400 s:816 f:0x1 u:0x000f02)
04-15 01:52:07.008 4987-5037/in.parksmart.operator D/OpenGLRenderer: CacheTexture 4 upload: x, y, width height = 0, 0, 1024, 512
04-15 01:52:07.025 4987-5037/in.parksmart.operator D/GraphicBuffer: register, handle(0x9d974780) (w:812 h:400 s:816 f:0x1 u:0x000f02)
04-15 01:52:13.710 4987-5052/in.parksmart.operator D/NativeCrypto: ssl=0xaa571900 sslRead buf=0xaf907641 len=1,timeo=0
04-15 01:52:13.710 4987-5052/in.parksmart.operator D/NativeCrypto: ssl=0xaa571900 sslRead buf=0xaf917800 len=91,timeo=0
04-15 01:52:13.711 4987-5052/in.parksmart.operator D/NativeCrypto: ssl=0xaa571900 sslRead buf=0xaf907640 len=1,timeo=0
04-15 01:52:13.722 4987-4987/in.parksmart.operator D/FBDB: Child Removed
04-15 01:52:13.729 4987-4987/in.parksmart.operator D/FBDB: Child Removed
04-15 01:52:13.729 4987-4987/in.parksmart.operator D/FBDB: Child removed
Кажется, сейчас нет места для активного отдыха.
Каждый раз, когда мы ожидаем, что NFC-тег будет подключен, мы вызываем enableReaderMode
, и мы вызываем disableReaderMode
, как только наша работа с тегом заканчивается.
Устройство, используемое на стороне клиента, - Telpo 900B.