brunch

You can make anything
by writing

C.S.Lewis

by 오준석 Mar 14. 2020

Flutter에서 카메라 다룰 때 LG폰 이슈

플러터로 외주 하면서 삽질한 것 기록


요구사항

1. 사진을 찍되 앱 내에서만 보여야 함. 갤러리 앱에서 보이면 안 됨


해야할 일

1. 내부 저장소에 저장하면 됨


한 일

1. image_picker 라이브러리가 flutter 팀에서 관리하고 있는 공식 라이브러리라서 선택 함

https://pub.dev/packages/image_picker

이 라이브러리를 사용하여 기기의 카메라 앱을 통해 사진을 찍으면 외부 저장소에 파일을 저장하고 플러터 측에 그 File 객체를 돌려 줌

2. 우리는 갤러리에 앱이 보이면 안 되기 때문에 저장된 파일을 앱 내부 저장소로 복사하고 기존 저장된 사진은 삭제함

3. 픽셀, 픽셀 XL 에서 잘 되는 것 확인


현상

1. LG V50 ThinQ 폰에서는 갤러리에 사진이 남는 현상이 발생

2. 라이브러리로 넘겨 받은 파일을 복사 후 지우고 있는데 안 지워짐. 이상하다

3. 위 라이브러리를 뜯어 고치기 시작함. 애초에 내부저장소에 사진이 저장되도록 수정함.

4. 그래도 이 엘지폰은 사진을 남김. 왜 찍은 사진이 안 지워지는거냐~

5. 안 지워지는게 아니라 이 엘지폰 카메라 앱은 셔터를 누르는 순간 /storage/emulated/0/DCIM/Camera/ 에 맘대로 저장을 해 버림

4. 암시적 인텐트를 통한 방법은 이 엘지폰에서 대응할 방법이 없다고 판단됨

5. 자체적으로 사진을 찍기 위해 카메라를 내장한 다른 라이브러리를 찾음

https://pub.dev/packages/adv_image_picker

자기만 쓰려고 만든 느낌이 있음.

암시적 인텐트가 아닌 카메라 API를 조작해서 사진을 찍음.


해결

1. 위 라이브러리를 플러터 프로젝트로 끌고 들어와서 필요한 부분의 코드와 UI 수정 후에 내부 저장소로 저장되도록 수정해서 써서 해결함


얻은 교훈

플러터 프로젝트에서 카메라를 쓰면서 보안 관련된 요구사항이 있는 경우 도망가자

매거진의 이전글 CloudFlare, 도메인 소유권 인증
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari