Я работаю над приложением, которое снимает фотографии и сканирует теги 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.