Android Camera не выводит в image view

124
14 декабря 2018, 23:10

Мое приложение должно фотографировать и выводить на экран. Сделал все как в примере здесь. В итоге у меня создается папка, в нее заносится фотография, но не выводится на экран.

Пробовал получать URI моей фотографии и через URI вставлять в ImageView - все равно не работает.

Ставил логи, по логам понял что ошибка где-то в onActionResult.

public class User extends AppCompatActivity implements View.OnClickListener {
final String LOG_TAG = "myLogs";
File directory;
final int TYPE_PHOTO = 1;
final int REQUEST_CODE_PHOTO = 1;
Uri imgAddress;
ImageView ivPhoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user);
    createDirectory();
    ivPhoto = (ImageView) findViewById(R.id.ivPhoto);
    Log.d(LOG_TAG, "onCreate???");
}
private void createDirectory() {
    directory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Meassure Preassure Pic");
    if (!directory.exists())
        directory.mkdirs();
    Log.d(LOG_TAG, "DIRECTORY");
}
protected void onActivityResult(int requestCode, int resultCode,
                                Intent intent) {
    if (requestCode == REQUEST_CODE_PHOTO) {
        if (resultCode == RESULT_OK) {
            if (intent == null) {
                Log.d(LOG_TAG, "Intent is null");
            } else {
                Log.d(LOG_TAG, "Photo uri: " + intent.getData());
                Bundle bndl = intent.getExtras();
                if (bndl != null) {
                    Object obj = intent.getExtras().get("data");
                    if (obj instanceof Bitmap) {
                        Bitmap bitmap = (Bitmap) obj;
                        Log.d(LOG_TAG, "bitmap " + bitmap.getWidth() + " x " + bitmap.getHeight());
                        ivPhoto.setImageBitmap(bitmap);
                    }
                }
            }
        } else if (resultCode == RESULT_CANCELED) {
            Log.d(LOG_TAG, "Canceled");
        }
    }
}
private Uri generatefileURI(int type) {
    File file = null;
    switch (type) {
        case TYPE_PHOTO:
            file = new File(directory.getPath() + "/" + "photo_" + System.currentTimeMillis() + ".jpg");
            break;
    }
    Log.d(LOG_TAG, "fileName= " + file);
    imgAddress = Uri.fromFile(file);
    Log.d(LOG_TAG, "moi pyt' " + imgAddress.toString());
    return Uri.fromFile(file);
}
public void onClickPhoto(View view) {
    Log.d(LOG_TAG, "ONCLICKSTART");
    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, generatefileURI(TYPE_PHOTO));
    startActivityForResult(i, REQUEST_CODE_PHOTO);
    ivPhoto.setImageURI(imgAddress);
}
@Override
public void onClick(View view) {
  }
}
Answer 1

Такой подход старый и уже не работает. Нельзя передавать Bitmap в intent. У intent есть ограничения по размеру. Сейчас надо делать фото и передавать путь к этой фотографии. В onActivityResult доставать из intent этот путь и по нему загружать фото в ImageView Посмотрите на этот пример.

READ ALSO
Как убрать отступы от краев экрана кустарного UI в зависимости от разрешения?

Как убрать отступы от краев экрана кустарного UI в зависимости от разрешения?

Я пишу игру на Java, (с использованием движка Slick2D и библиотеки MarteEngine, если это важно), и реализуя свой UI столкнулся с появлением отступов слева...

144
Проблема с наследованием и методами

Проблема с наследованием и методами

Есть класс Animal и сабкласс Cat, хочу, чтоб Cat принимал имя и ограничение на максимальное расстояние для бега

172
как включить обычный класс в DI

как включить обычный класс в DI

собственно сабж, как из обычного класса использовать @Inject? как я понимаю для этого класс должен находится контексте или иными словами контекст...

150
Вывод элемента из массива объектов

Вывод элемента из массива объектов

Как выполнить вывод всех элементов из ячейки массива объектов? Допустим, если мне нужно имя, то пишу arr[0]name

158