마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

기본 카메라를 활용해서 사진을 찍고 공용폴더(DCIM)에 저장하는 법 좀 가르쳐주십시오...

0 추천

현재는 아래경로로 해서 앱 내부에만 저장이 되는데요.

<external-path
    name="my_images"
    path="Android/data/패키지명/files/Pictures"/>
 //사진 촬영 후 썸네일만 띄어줌. 이미지를 파일로 저장
    private File createImageFile() throws IOException{
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";


        File storageDir = getExternalFilesDir(DIRECTORY_PICTURES);

        File image = File.createTempFile(
                imageFileName,
                ".jpg",
                storageDir
        );

        mCurrentPhotoPath = image.getAbsolutePath();
        return image;
    }

 

    //카메라 인텐트를 실행하는 부분
    private void dispatchTakePictureIntent(){
        Intent takePictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        if(takePictureIntent.resolveActivity(getPackageManager()) != null) {
            File photoFile = null;

            try { photoFile = createImageFile();}
            catch (IOException ex){}
            if(photoFile != null){
                Uri photoUri = FileProvider.getUriForFile(this,"com.example.atthatcustomerwithcal.fileprovider",photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        }
    }

단순히 인자를 DIRECTORY_DCIM으로 바꾸면 카메라 실행되지 않습니다..

제발... 부탁드립니다...
알려주시면 3대가 복받으실 겁니다...ㅠㅠㅠㅠㅠ

안드로이드촙오자 (340 포인트) 님이 2020년 11월 4일 질문

1개의 답변

0 추천
 
채택된 답변

file provider에 정의된 디렉토리가 Pictures 밖에 없는데, DIRECTORY_DCIM을 접근하시려고 해서 그런 같네요. DIRECTORY_DCIM도 추가해 보세요.

그리고 참고로, 안드로이드11에서는 퍼미션 관련해서 많은 변화가 있습니다. 

https://developer.android.com/about/versions/11/privacy

안드로이드 11을 지원하신다면 필히 읽어보셔야 할거예요. 아마도 안드로이드11 부터는  더이상 공용스토리지에 이전처럼 자유롭게 접근할 수 없게 되었을 겁니다. 애뮬레이터에서조차 접근이 안된다고 하던데 기억나네요.

spark (227,470 포인트) 님이 2020년 11월 5일 답변
안드로이드촙오자님이 2020년 11월 5일 채택됨
감사합니다 말씀주신대로 해보겠습니다!
...