본문 바로가기
Android

안드로이드 스튜디오 Intent가 NULL을 리턴하는 문제 해결

by ungyuun 2023. 4. 19.

약봉투를 사진찍어서 서버로 전달하려고 한다. 그러면 사진을 찍어야하는데 생각보다 난관이었다.

 

3일전부터 안드로이드 스튜디오 디벨로퍼를 찾아가면서 카메라 촬영을 구현했지만 해상도가 너무 낮은 문제가 있었다.

디벨로퍼에서 제안한 방식은 사진을 파일로 만들어 그 경로를 가져와 원본의 이미지를 보여주는것인데, 

 

예제를 봐도 해결하지 못했다.

 

 startActivityForResult를 통해 Intent를 보내는데, onActivityResult 측에서는 Intent를 NULL으로 받는것이다.

 

 

putExtra는 딕셔너리구조,, 따라서 getIntent()를 하여 value를 받으라는데 잘 안되서 구글링을 좀 한 결과

스택오버플로우에서 코드를 찾을수 있었다 !!!

 

 

https://stackoverflow.com/questions/9890757/android-camera-data-intent-returns-null

 

Android Camera : data intent returns null

I have an android application which contains multiple activities. In one of them I'm using a button which will call the device camera : public void onClick(View view) { Intent photoIntent = ...

stackoverflow.com

 

 

   private Uri imageUri;
    private ImageView myImageView;
    private Bitmap thumbnail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      ...
      ...    
      ...
      myImageview = (ImageView) findViewById(R.id.pic); 

      values = new ContentValues();
      values.put(MediaStore.Images.Media.TITLE, "MyPicture");
      values.put(MediaStore.Images.Media.DESCRIPTION, "Photo taken on " + System.currentTimeMillis());
      imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
      intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
      startActivityForResult(intent, PICTURE_RESULT);

  }

 

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_CODE_TAKE_PHOTO && resultCode == RESULT_OK) {

            Bitmap bitmap;
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
                myImageView.setImageBitmap(bitmap);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

 

이제 해상도 저하없는 촬영이 가능해졌다!!!

 

 

하지만 정방향으로 찍어도 사진 비율의 문제인지 270도 회전을 하는데 이는 다음에 해결해야겠다.

'Android' 카테고리의 다른 글

처방전 약품명 OCR 과정  (0) 2023.05.12