我们使用 NFC 标签作为进出的停车票。在每个入口处,标签上都会写入一些数据,而在出口处,该数据会验证车辆的出口。
\n\n部分车辆进出后,NfcService失效,智能手机无法检测到NFC标签。设备需要重新启动才能重新启动 NfcService,然后设备再次开始正常工作。
\n\n此错误是随机出现的,我们无法在开发环境中重现此错误,但我们在停车场出入口安装的设备上多次观察到此问题。
\n\n\n\n当我们调试这个问题时,我们能够以某种方式管理上述日志。
\n\n我们尝试了不同的更改,例如使用enableReaderMode
而不是enableForegroundDispatch
,但问题仍然存在。
public void enableReaderMode() {\n try {\n Log.d("WTF", "Enabling reader mode");\n NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);\n\n if (nfc != null) {\n int flags = NfcAdapter.FLAG_READER_NFC_A ;\n\n nfc.enableReaderMode(this, new NfcAdapter.ReaderCallback() {\n @Override\n public void onTagDiscovered(Tag tag) {\n runOnUiThread(new Runnable() {\n @Override\n public void run() {\n Log.d("WTF", "Tag discovered");\n String uid = ByteArrayToHexString(tag.getId());\n Toast.makeText(MainActivity.this, getString(R.string.message_tag_detected), Toast.LENGTH_SHORT).show();\n Ndef ndef = Ndef.get(tag);\n\n if (isNFCDialogDisplayed) {\n\n if (isWrite) {\n\n …
Run Code Online (Sandbox Code Playgroud) 我正在为一个项目测试MQTT。当客户端连接时,我还能够接收有关我的客户端订阅的主题的消息。我已将 QoS 设置为 1,并将 cleanSession 设置为 false。但是当我的客户端再次连接时,我无法接收发送到订阅主题的消息。在我的应用程序中,几乎所有工作都是由辅助服务完成的。
这是我的代码
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".MqttHelperService"
android:enabled="true"
android:exported="true" />
<!-- MqttService -->
<service android:name="org.eclipse.paho.android.service.MqttService" />
</application>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
package com.prateek.mqtttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); …
Run Code Online (Sandbox Code Playgroud)