본문 바로가기

Project/APP

Flutter의 한계와 kotlin 외부 usb카메라 연동

 

 

 

 

플루터의 한계

 
 이 전 글 이후로 많은 시간이 흘렀는데 가장 중요한 것은 flutter의 한계의 부딪혔다는 점이다.
물론 내가 하려는 앱이 기존 앱과는 달리 태블릿으로 여러 다른 기기들과 통신을 해야한다는 점에서 flutter로는 도저히 구현하지 못하는 부분이 있었다.
 
 
 회사에서 이전 버전이 코틀린으로 제작이 되었었고, 때문에 안드로이드 앱만 나와있었기 때문에 
나에게 새로운 버전이 되는 태블릿 앱과 사용자 앱을 부탁했다.
 
 간단히 얘기하면 태블릿 버전은 usb 외부카메라와 usb와 연결된 메인보드를 통한 외부기기 컨트롤이 가능했어야 했고,
그걸 바탕으로 포인트를 쌓을 수 있어야 했다. (식당이나 카페에서 번호로 포인트 적립 하듯이) 키오스크랑 비슷한 개념이다.
 
 그리고 다른 한가지, 사용자 앱은 포인트를 쌓은 사용자가 회원가입을 진행하고 쌓은 포인트를 현금으로 사용이 가능할 수 있게 해야했다.
 
 
  때문에 나는 리액트와 js만을 배워왔기에 진입장벽이 낮고 크로스플랫폼인 flutter를 배워 모두 해결하려고 했었다.
 여기서 문제는 usb컨트롤을 하기 위한 라이브러리가 flutter에서는 찾기 힘들었다는 점이다.
 

  레이아웃은 금방 만들었지만 usb컨트롤에 있어서 태블릿 앱의 한계를 느껴 더 이상 진척이 나가질 못했다.

 그렇게 문제를 해결하기 위해 여러가지 방법을 세우던 중, 태블릿은 많은 사람들이 사용 중인 레노버 P11 모델이 였고,

 안드로이드 어플만 사용하면 되고 java로 usb카메라 및 usb컨트롤이 가능한 라이브러리를 찾아냈다.

 

 하지만 나는 프론트엔드 기술만 배웠고, 비전공자에다가 java는 완전 반대되는 언어라고 생각되어 도전하기가 쉽지 않았다.

 하지만 문제해결을 위해 도전을 해야만 했고, 앞으로의 커리어에 있어서 java를 배우기보단 java와 호환이 가능한 kotlin으로 시작하게 되었다. 

kotlin

 회사에서 사수가 없어서 혼자서 모든 걸 해결하기란 쉽지 않았다. 때문에 대표님께 기존 앱을 만드신 분에게 자문을 요청드렸고, 다행이도
그 분께서 시간을 내줘서 많은 것들을 물어보고 배울 수 있었다. 그 분도 kotlin으로 usb를 통한 외부기기 컨트롤을 해본 적은 없었지만

그래도 많은 도움을 주셔서 힘이 많이 되었던 좋은 기억이 였다.

 

 결국 돌고 돌아 다시 kotlin을 배우기 시작했는데 기초를 쌓고 활용하기엔 시간이 많이 부족하단 생각이 들었다. 

그때, 내가 기초 강의를 듣는 모습을 보고 하드웨어 개발자님께서 해준 말이 가장 크게 와닿았다. 처음부터 시작하려면 너무 많은 시간이 소요되니 usb 외부 라이브러리를 먼저 찾아 놓은게 있는데 그걸 가지고 놀면서 하나씩 이어가면 된다고 하셔서 (기초는 포기하질 못하겠어서 틈틈히 들어뒀다) 라이브러리를 사용하기위해 고군분투를 했다.

usb 외부 카메라

 처음엔 정말 이해도 안가고 뭘 어떻게 만져야 할지 모르겠었지만, 하나씩 보고 검색하고 이해하고 일주일이 지난 어느 날,

정말 성공할 것 같지 않았는데

꽤나 투박하지만 그래도 나와서 덩실덩실

 

 진짜 세상 기뻤다. 하지만 내가 있는 곳은 회사, 나만의 대나무 숲이 필요해 이렇게 올려본당 헿

 

사용 라이브러리는 아래 링크를 타고 들어가면 된다.

https://github.com/jiangdongguo/AndroidUSBCamera

 

GitHub - jiangdongguo/AndroidUSBCamera: 🔥🔥🔥Flexible and useful UVC camera engine on Android platform, supporting multi-

🔥🔥🔥Flexible and useful UVC camera engine on Android platform, supporting multi-road cameras! - GitHub - jiangdongguo/AndroidUSBCamera: 🔥🔥🔥Flexible and useful UVC camera engine on Android platform, ...

github.com

 

 

사용 방법은 깃허브에 자세하게 나와있다.

 

나는 당시에 fragment / activity의 차이도 모르고 무식하게 만지고 xml로 레이아웃도 어떻게 해야하는지도 몰랐지만

조금이라도 kotlin에 익숙하신 분이라면 금방 하실거라 생각한다.

 

 

현재는 촬영을 통한 갤러리 저장 / 서버 전송 / S3 버킷 업로드/ AI서버에서 분석 /S3 버킷 다운로드 / 이미지 보여주기를 통해

 

 

 

이렇게 태블릿 앱에서 보여줄 수 있게 됐다.

 

 사실 완성한지는 좀 됐는데 블로그에 올리질 않아서 그때의 기억을 다시금 떠올리며 하나씩 어떻게 진행했고 어떤 문제에 직면했고 
어떻게 해결했는지에 대해 쓰려고 한다.