2013-03-18 2 views
5

오늘 어려운 일을 처리해야합니다.안드로이드는 카메라를 로컬 스토리지에 저장합니다.

카메라를 시작한 후 찍은 이미지를 이동하지 않고 내 내부 저장 장치에 직접 저장하려고합니다.

File targetDir = new File(getApplicationContext().getFilesDir()+File.separator+"PROJECTMAIN"+File.separator+"SUBFORDER"); 
    targetDir.mkdirs(); //create the folder if they don't exist 

    File externalFile = new File(targetDir, "picturename.jpg"); 
    Uri imageURI = Uri.fromFile(externalFile); 

    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageURI); 
    startActivityForResult(takePictureIntent, actionCode); 

내가 내부 저장 장치에 직접 저장하려고하면 내가 사진을 촬영 한 후, 카메라가 "확인"- 버튼에 내 클릭을 무시 것으로 보인다. "내부"URI가 잘못된 것 같아요. 왜냐하면 getApplicationContext().getFilesDir() 대신 extra_output을 사용하면 모든 것이 잘 작동하지만 이후에는 내부 저장소에 파일을 옮겨야하기 때문입니다 (이동 프로세스가 "getApplicationContext() .getFilesDir() ")

사진을 찍고 내부 URI를 계속 사용하기 위해 ok 버튼을 누르면 카메라가 아무 것도하지 않습니다 ... 저장 기능으로는 그렇게 어렵지 않습니다. Android에서

아이디어가 있으십니까? 어쩌면 카메라가 외부 저장 장치에 사진을 저장할 수 있습니까?

+0

답변이 도움이된다면 게시물 http://stackoverflow.com/questions/12193607/how-to-save-capture-image-in-sdcard –

답변

3

보십시오 다음 안드로이드 7.0 사용이 코드의 상위 버전에 대한 코드

File dir= context.getDir("dirname", Context.MODE_PRIVATE); //Creates Dir inside internal memory 
File file= new File(dir, "filename"); //It has directory details and file name 
FileOutputStream fos = new FileOutputStream(file); 
+0

을 참조하십시오.이 대답을 수락하십시오. – Aju

0

, 지금

<application 
    ...> 
    <activity> 
    .... 
    </activity> 
    <provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.your.package.fileProvider" 
     android:grantUriPermissions="true" 
     android:exported="false"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/file_paths" /> 
    </provider> 
    </application> 

XML 리소스 폴더에 파일을 생성,

<?xml version="1.0" encoding="utf-8"?> 
<paths> 
    <external-path path="Android/data/com.your.package/" name="files_root" /> 
    <external-path path="." name="external_storage_root" /> 
</paths> 
다음

때마다 사용 이 카메라를 사용하려는 경우

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
      Uri contentUri = FileProvider.getUriForFile(getContext(), "com.your.package.fileProvider", newFile); 
      intent.setDataAndType(contentUri, type); 
     } else { 
      intent.setDataAndType(Uri.fromFile(newFile), type); 
     } 
관련 문제