Поместить растровое изображение из ActivityResult в ImageView не работает - PullRequest
0 голосов
/ 04 января 2019

У меня есть несколько ImageViews внутри Activity. На onCreate() они пусты, поэтому пользователь может разместить свои фотографии внутри него. Когда пользователь нажимает на ImageView, он может выбирать между выбором картинок из своей галереи (что я смог реализовать) и получением живого снимка.

Я становлюсь действительно отчаянным. Я пытался реализовать new Intent(MediaStore.ACTION_IMAGE_CAPTURE), но качество изображения было ужасным. Теперь я создал пользовательский CameraActivity с SurfaceView, но ActivityResult Bundle b всегда равен нулю!

 private void CameraOpen() {


    Intent intent = new Intent(ActivityA.this, CameraActivity.class);
    startActivityForResult(intent, CAMERA_INTENT_REQUEST_CODE);
    return;



    }

и внутри CameraActivity

 jpegCallback = new Camera.PictureCallback(){


            @Override
            public void onPictureTaken(byte[] data, Camera camera) {

                mCapture.setVisibility(View.GONE);
                Bitmap b = BitmapFactory.decodeByteArray(data, 0, data.length);
                b = rotate(b);

                IMAGE = data;

                mShowCapture.setImageBitmap(b);
                mShowCapture.setVisibility(View.VISIBLE);
                mFab.show();




            /*    Intent intent = new Intent(CameraActivity.this, ShowCaptureActivity.class);
                //  intent.putExtra("capture", data);
                Globals.img = BitmapFactory.decodeByteArray(data, 0, data.length);

                startActivity(intent);
                finish();
                return;

                */
            }
        };

, то:

 mFab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if(IMAGE != null) {
                Intent intent = new Intent(CameraActivity.this, CreateEventActivity.class);
                intent.putExtra("photo", IMAGE);
                setResult(RESULT_OK, intent);
                finish();
            }

        }
    });

внутри ActivityA в onActivityResult:

else if(requestCode == CAMERA_INTENT_REQUEST_CODE){
        if(data != null) {
            Bundle b = getIntent().getExtras();
            if(b != null) {

                byte[] photo = b.getByteArray("photo");
                Bitmap bitmap = BitmapFactory.decodeByteArray(photo, 0, photo.length);

                placeImage(bitmap);


            } else{
                Toast.makeText(this, "b = null", Toast.LENGTH_SHORT).show();
            }
            } else{
            Toast.makeText(this, "data = null", Toast.LENGTH_SHORT).show();
        }

но b всегда равно нулю

...