-
Android 카메라 사진 캐시영역(Cache-path) 저장하기Android 2019. 4. 5. 16:38
앱에 카메라 기능을 넣다보면 File영역에 저장하여 갤러리에 보이게끔 하는 경우도 있지만 카톡의 프로필 사진을 위해 사진을 찍을때는 사진을 찍고 편집하고 업로드 하면나면 찍고 작업한 사진파일은 따로 갤러리에 보이지 않고 처리되는 경우들이 많다. 이럴 경우 내부 저장소중 캐시영역에 파일을 저장하는 형식으로 하면 유용할 듯하여 작성하게 되었다.
캐시영역에는 임시 파일들이 저장되며 Context.getCacheDir()을 통해 내부 저장소의 캐시 디렉토리를 리턴한다.
경로 : /data/data/패키지이름/cache
1. file_paths.xml
cache영역에 생성된 임시파일을 나중에 FileProvider.getUriForFile() 을 통해 Uri을 생성할때 사용된다. 이번 게시글의 맨 아래에 링크로 연결된 글을 함께 참고하여 작성하면 된다.
123456<?xml version="1.0" encoding="utf-8"?><cache-path name="images" path="."/></paths>Colored by Color Scripter2. Activity.java ( createImageFile() )
임시파일을 생성할때 File.createTempFile()을 사용해준다.
public static File createTempFile(String prefix, String suffix, File directory)
* prefix - 파일명. 그 뒤에 임의의 숫자가 더 붙는다. ex) prerix : test -> test1234578
* suffix - 확장자. ".jpg" , ".txt" 등을 넣어주면 된다 null을 넣을시 디폴트로 ".tmp"가 된다.
* directory - 경로. 파일이 생성될 위치이다. getCacheDir()을 넣어주게 되면 data/data/패키지명/cache 경로 아래에 파일이 생성된다.
아래 코드와 같이 호출하면 data/data/패키지명/cache 경로 아래에 JPEG_123456789.jpg 파일이 생성된다.
1234567private File createImageFile() throws IOException {File imageFile = File.createTempFile( "JPEG_" , ".jpg" , context.getCacheDir() );return imageFile;}Colored by Color Scripter3. File.deleteOnExit()
파일 처리를 다 끝낸 후 필요없어진 임시파일은 file.deleteOnExit()을 통해 삭제 해주면된다.
deleteOnExit() 함수의 특징은 삭제처리 한다고 즉시 삭제 되는 것이 아니라. JVM이 종료 될때 자동으로 지정된 파일을 삭제하게 된다.
12345if ( imageFile.exists() ){imageFile.deleteOnExit();}아래 해당 게시글을 함께 참고하여 개발해주시면 이해하는데 도움이 될꺼 같다.
Android 7.0 (Nougat) 카메라(ACTION_IMAGE_CAPTURE) 및 사진 자르기(Crop) 구현
'Android' 카테고리의 다른 글
Android 64비트 대응하기 - ARM , X86, MIPS (1) 2019.04.08 Android 64비트 지원 대응하기 (0) 2019.04.08 Android FCM 구현하기(GCM에서 전환) - 1/2 FCM콘솔 (0) 2019.04.01 Android FCM 구현하기(GCM에서 전환) - 2/2 소스구현 (0) 2019.04.01 Android 7.0 (Nougat) 카메라(ACTION_IMAGE_CAPTURE) 및 사진 자르기(Crop) 구현 (0) 2019.04.01 댓글