Android: при запуске приложения камеры с намерением сфотографировать камеру, пользователь должен сделать фотографию дважды - PullRequest
0 голосов
/ 03 марта 2020

Я вижу странное поведение на двух телефонах, когда я просто пытаюсь программно запустить приложение камеры с намерением.

Это работает как и на других телефонах (Samsung, Motorola ...), но на двух моих тестовых телефонах - Nexus 5x (Android 8) и Pixel (1) - Android (10) при запуске приложения камеры, пользователь должен сделать фотографию дважды, прежде чем вернуться в мое приложение с помощью onActivityResult.

Стартовый вызов очень прост, просто для теста:

val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, IntentConstants.REQ_LAUNCH_CAMERA)

Запущено приложение камеры, показывает экран камеры кнопкой «стрелок», кнопка нажата, она показывает захваченное изображение с кнопкой проверки для подтверждения, и когда оно нажимается, подтверждается, оно не выходит. Вместо этого он снова показывает экран камеры с помощью кнопки стрелка, подождите, пока пользователь сделает еще одну фотографию и подтвердит ее, и только после этого приложение камеры завершает работу и перезванивает onActivityResult

Намерение отправлено только один раз. Это не происходит на других телефонах (Samsung, Motorola и др. c)

Я предполагаю, что это может быть связано с настройками приложения камеры на указанном телефоне c, вероятно (но я не вижу что-то особенное) или мне нужно что-то добавить в намерение (но я ничего не вижу)

Я пытался добавить также

intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)

Это не меняет ничего на пикселе , но это вызывает внутренний взлом sh на Nexus 5X:

Process: com.google.android.GoogleCamera
java.lang.NullPointerException at 
com.google.android.apps.camera.shutterbutton.ShutterButton.performClick
com.google.android.GoogleCamera java.lang.NullPointerException at 
com.google.android.apps.camera.shutterbutton.ShutterButton.performClick(PG:160)

Я бы не стал сильно беспокоиться о Nexus 5X, но проблема в том, что это происходит и на Pixel 1, что означает, что он может быть проблематично c на пикселях 2,3,4 (еще не тестировал).

Если у вас есть похожая проблема (и потенциальное решение), пожалуйста, сообщите мне.

1 Ответ

0 голосов
/ 04 марта 2020

Марк (CommonsWare) правильный, похоже на дефект в телефонах Google.

Я нашел обходной путь, вместо этого

startActivityForResult(intent, IntentConstants.REQ_LAUNCH_CAMERA)

используйте средство выбора:

val chooser = Intent.createChooser(intent, getString(R.string.camera_action_selection_title))

startActivityForResult(chooser, IntentConstants.REQ_LAUNCH_CAMERA)

Это решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...