Приложение камеры Android по умолчанию открывается дважды - PullRequest
1 голос
/ 06 августа 2011

Я запускаю приложение камеры по умолчанию на Android, чтобы получить изображение в моем приложении, используя следующий код:

//create parameters for Intent with filename
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");

        //imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
        imageUri = getContentResolver().insert(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

        //create new Intent
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

        startActivityForResult(intent, actionCode);

и поймать картинку в методе onActivityResult.

Часто это будет работать просто отлично, и устройство сделает снимок и вернет его в приложение, но иногда после завершения работы с приложением камеры (сохраняя изображение или нажимая кнопку отмены) оно запускает приложение камеры во второй раз , Как я могу предотвратить повторное открытие приложения?

РЕДАКТИРОВАТЬ: Благодаря комментариям Krylez я смог найти решение.

Я уже использовал статический класс для хранения изображения с камеры, чтобы я мог получить к нему доступ с помощью вкладки «Активность», поэтому я также добавил туда логическое значение. Теперь, прежде чем запустить Activity для обработки камеры, я установил для этого логического значения значение true, а после проверки установил для него значение false, чтобы при повторном вызове метода onCreate камера не загружалась во второй раз.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Благодаря комментариям Крайлэза я смог найти решение.

Я уже использовал статический класс для хранения изображения с камеры, чтобы я мог получить к нему доступ во вкладке Активность, поэтому я такжеположить логическое значение там.Теперь, прежде чем запустить Activity для обработки камеры, я установил для этого логического значения значение true, а после проверки установил для него значение false, чтобы при повторном вызове метода onCreate камера не загружалась второй раз.

0 голосов
/ 04 октября 2011

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

              String val=sharedPref.getString(...);
              if(val.equals("true"))
                { launch new intent
                  sharedPrefEditor.putstring("..","false");
                  sharedPrefEditor.commit();
                 }

это решило проблему, и камера не будет работать дважды. Спасибо.

...