Можно ли сделать это? От выбора изображения до захвата изображения - PullRequest
0 голосов
/ 05 июля 2018

Можно ли сделать снимок и показать его в режиме просмотра изображений без сохранения на телефоне? Было бы лучше, если бы он работал с API уровня 18. В настоящее время мой код:

private void ImageSelection()
{
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, IMAGE_REQUEST);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == IMAGE_REQUEST && resultCode == RESULT_OK && data != null)
    {
        Uri FilePath = data.getData();
        try {

            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePath);
            mImageView.setImageBitmap(bitmap);
            mImageView.setVisibility(View.VISIBLE);
            mEditText.setVisibility(View.VISIBLE);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
        if (TextUtils.isEmpty(mEditText.getText())){
            mEditText.setError("Must!");
        }

}

1 Ответ

0 голосов
/ 05 июля 2018

Фотосъемка с помощью приложения камеры

Способ делегирования действий в Android другим приложениям состоит в том, чтобы вызвать Intent, описывающий то, что вы хотите сделать. Этот процесс состоит из трех частей:

  1. Само намерение
  2. вызов для запуска внешней активности
  3. некоторый код для обработки данных изображения, когда фокус возвращается к вашей активности

Вот функция, которая вызывает намерение сделать снимок.

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

Обратите внимание, что метод startActivityForResult () защищен условием, которое вызывает resolActivity (), которое возвращает первый компонент действия, который может обработать намерение. Выполнение этой проверки важно, потому что если вы вызываете startActivityForResult () с намерением, которое не может обработать ни одно приложение, ваше приложение аварийно завершится. Поэтому, пока результат не равен нулю, использовать намерение безопасно.

Получить эскиз

Если простое умение фотографировать не является кульминацией амбиций вашего приложения, то вы, вероятно, хотите получить изображение обратно из приложения камеры и что-то с ним сделать.

Приложение Android Camera кодирует фотографию в возвращаемом Намерении, доставленном в onActivityResult (), в виде небольшого растрового изображения в дополнениях под ключом «данные». Следующий код извлекает это изображение и отображает его в ImageView.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}

Проверьте официальную документацию , чтобы лучше понять.

Надеюсь, это поможет.

...