Android

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

ungyuun 2023. 4. 19. 20:29

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

 

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도 회전을 하는데 이는 다음에 해결해야겠다.