android - NFC 在相机意图后停止在设备上工作
问题描述
我正在开发一个可以拍照和扫描 NFC 标签的应用程序。NFC 标签扫描工作正常,直到我拍照(通过相机意图)。
我所做的:
在 onResume() 中调用 setupForegroundDispatch(),在 onPause() 中调用 stopForegroundDispatch()。
public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter) {
final Intent intent = new Intent(activity, activity.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
final PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, 0);
adapter.enableForegroundDispatch(activity, pendingIntent, null, null);
}
public static void stopForegroundDispatch(final Activity activity, NfcAdapter adapter) {
adapter.disableForegroundDispatch(activity);
}
要启动相机,我调用:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
imageCaptureUri);
intent.putExtra("return-data", true);
startActivityForResult(intent, PICK_FROM_CAMERA);
把它们加起来:
- 活动开始并在 onResume() setupForgroundDispatch() 将被调用。
- NFC 标签的扫描按预期工作
- 我单击一个按钮以通过 Intent 启动相机
- 如果我不拍照并返回我的活动 -> NFC 运行良好
- 如果我拍照并调用 onActivityResult() -> NFC 大约 20-30 秒不工作,然后再次开始工作。我的意思是 NFC 停止在整个设备上工作,而不仅仅是在应用程序中。我可以拍照,然后恢复我的活动,然后从最近的应用程序中删除应用程序,并且 NFC 在上述 20-30 秒内不起作用。然后再次开始工作。
我试过的
- 我检查了 stopForegroundDispatch() 将在相机启动之前被调用,并且 setupForegroundDispatch() 将在相机完成后被调用
- 我从 onActivityResult() 中删除了我的代码,以确保任何进一步的代码都会干扰 NFC。
解决方案
推荐阅读
- python - scikit-learn 中如何进行交叉验证?
- javascript - 渲染中的 Vue.js 错误:“TypeError:无法读取未定义的属性‘长度’”
- handlebars.js - Handlebars - 如何在#if 中使用路径
- python - 在 x 只是变量的困难方程中使用 Python 脚本查找 x
- python - csv 到 pandas.df 到 numpy 为 tensorflow 准备数据
- java - Java 静默安装程序命令
- node.js - 尝试从客户端上传图像时,使用 graphql-upload 上传值无效
- javascript - javascript - 动态验证嵌套属性
- javascript - 在地图功能中推送数据
- node.js - 是否可以使用 Husky + lint 阶段来检查 Console.logs?