2026년 10월 27일 화요일

EO1-Museum v0.3에서 비로소 웹브라우저의 굴레를 벗어나다

 


며칠 동안 붙들고 있던 Electric Objects EO1 되살리기 프로젝트가 어제 상당히 큰 고비를 넘었다. 처음에는 서비스가 종료되어 더 이상 쓸 수 없게 된 전자액자에 웹브라우저를 띄우고, PC에서 웹서버를 돌려 그림을 보내는 정도가 목표였다. 그런데 작업을 계속하다 보니 이제는 EO1 안에서 직접 돌아가는 전용 앱까지 만들게 되었다. 이름은 EO1-Museum이다.

처음 만든 방식은 매우 단순했다. PC에서 뉴욕 메트로폴리탄 미술관의 Open Access 작품을 내려받아 EO1 화면 크기에 맞게 가공하고, 웹페이지로 만든 뒤 HTTP 서버를 실행한다. EO1에서는 Firefox를 띄워 그 페이지를 보여주었다. 기본 웹브라우저에서는 시작 웹페이지를 지정하는 것이 어려웠다. 제조사가 서비스를 종료한 기기를 다시 그림 액자로 쓰는 데에는 이것만으로도 충분했다.

하지만 이 방식에는 분명한 한계가 있었다. PC가 계속 켜져 있어야 하고, 웹서버도 돌아가야 한다. 무엇보다 EO1이라는 기기가 스스로 그림을 보여주는 것이 아니라 사실상 PC가 만들어 주는 웹페이지를 원격 화면처럼 표시하는 셈이었다.

그래서 Android용 native gallery를 만들기 시작했다.

v0.1 — EO1 안에 그림을 넣다

JPEG와 PNG 파일을 EO1 내부 저장공간에 넣고 앱이 직접 읽어서 보여주는 것을 목표로 하였다. 미디어 파일은 다음 위치에 저장한다.

/sdcard/EO1-Museum/images/

앱은 이 디렉터리를 검색하여 그림 목록을 만들고 순서를 섞은 뒤 일정 시간마다 다음 작품으로 넘어간다. 이것이 성공하면서 EO1은 처음으로 PC와 완전히 분리된 상태에서도 다시 전자액자로 기능하게 되었다.

v0.2 — 동영상과 소리

다음 단계에서는 MP4 동영상도 같은 미디어 목록에 넣었다. 이미지가 나오다가 동영상 차례가 되면 전체 동영상을 재생하고, 끝나면 다시 다음 작품으로 넘어간다.

Bluetooth 오디오도 정상적으로 작동했다. 한번 페어링한 Bluetooth 장치는 재부팅 뒤에도 다시 연결되었다. 덕분에 EO1은 단순한 그림 액자를 넘어 이미지와 동영상을 함께 보여주는 미디어 디스플레이가 되었다. 오디오 기능은 겉으로 드러나지 않았던 것을 재확인한 것이라서 새로운 개발이 필요하지는 않았다. 소리가 포함된 동영상 재생에 매우 유용할 것이다.

v0.3 — 하나의 앱으로 합치다

어제 가장 큰 변화가 이루어졌다. 기존의 Local Gallery와 PC 기반 Gallery를 하나의 앱 안에 통합했기 때문이다.

PC Gallery를 선택하면 더 이상 Firefox를 실행하지 않는다. EO1-Museum 자체에 WebView를 넣어 PC에서 제공하는 gallery를 앱 안에서 직접 보여준다. 반대로 Local Gallery를 선택하면 EO1 내부에 저장된 이미지와 동영상을 표시한다.

마우스 오른쪽 버튼을 누르면 제어 메뉴가 열린다. 여기에서는 Local Gallery, PC Gallery, Next, Rescan Media, Clock On/Off를 제어할 수 있다. 현재 어떤 Gallery를 사용하고 있는지도 메뉴에서 확인할 수 있다.

이미지 사이에는 cross-fade 효과를 넣었고 화면에는 시계를 표시할 수 있게 했다. 새 파일을 ADB로 전송한 뒤에는 앱을 다시 시작하지 않고 Rescan Media만 선택하면 된다.

그리고 EO1-Museum을 Android의 HOME application으로 지정했다. 이제 전원을 넣으면 Android 바탕화면이나 원래 Electric Objects 프로그램을 거치지 않고 바로 EO1-Museum의 Local Gallery가 시작된다.

이 변화가 가장 마음에 든다. 전원을 넣고 잠시 기다리면 알아서 그림이나 동영상이 나온다. 전자액자는 원래 그래야 한다.

ADB를 여는 작은 열쇠

여기까지 오는 과정에서 의외로 중요한 역할을 한 것이 ADBApprovalHelper.apk였다.

EO1에 새 프로그램을 넣으려면 ADB를 사용하는 것이 가장 편하지만, 최초 USB 연결에서는 Android의 RSA debugging authorization을 통과해야 한다. EO1에서는 이런 시스템 대화상자를 다루는 것이 꽤 불편하다.

그래서 먼저 EO1의 내장 웹브라우저를 이용하여 ADBApprovalHelper.apk를 설치한다. 이때 PC에서는 APK가 Android application package임을 브라우저가 제대로 알아볼 수 있도록 MIME type을 설정한 server.py를 실행한다. ADBApprovalHelper.apk는 EO1 화면에 나타나는 인증 관련 화면에 자동으로 클릭을 해 준다. 이 화면은 ADB를 통해 PC가 연결된 상태에서만 나온다. PC가 host로 잡히기 때문에 중간에 USB hub를 끼운다 해도 마우스 포인터를 EO1에 나타나게 할 수 없다. 그래서 별도의 앱을 만드는 편법을 이용한 것이다.

Helper가 설치되고 USB ADB 연결이 확보되면 그다음부터는 일이 훨씬 쉬워진다. EO1-Museum APK 설치도, 이미지와 동영상 전송도 모두 ADB로 처리할 수 있다.

무선 ADB도 시험해 보았지만 정식 사용 방법에서는 제외하기로 했다. 연결 상태가 한번 꼬이면 오히려 복구하기가 번거롭다. 케이블을 꽂았다 빼야 하는 불편함이 있더라도 유지보수에는 USB ADB가 훨씬 명확하다.

버려진 기기에서 다시 하나의 제품으로

EO1-Museum v0.3까지 오면서 처음의 구조는 상당히 달라졌다.

예전에는

PC → HTTP server → Firefox → EO1 display

였다면 이제 기본 동작은

EO1-Museum → Local media → EO1 display

이다.

PC는 더 이상 필수가 아니다. 필요할 때만 PC Gallery를 선택해서 사용한다.

물론 아직 할 일이 조금 남아 있다. 현재 PC Gallery의 서버 주소는 프로그램에 들어 있으므로, 다음 버전에서는 화면에서 주소를 수정하고 저장할 수 있게 만들 생각이다. 설치 절차와 GitHub repository도 새 구조에 맞게 정리하고 있다.

그러나 기능적으로는 v0.3에서 이미 중요한 선을 넘었다고 생각한다.

2019년 무렵 우연히 얻었다가 제조사의 서비스 종료와 함께 사실상 쓸모를 잃었던 23인치 화면이 이제는 특정 회사의 서버도, 전용 앱도, 심지어 PC도 필요 없이 스스로 그림과 동영상을 보여준다.

처음에는 그저 고장 아닌 고장이 난 전자액자를 다시 켜 보자는 생각이었다.

그런데 어느새 전자액자에 새 프로그램을 만들어 넣고 있다. 이쯤 되면 '되살렸다'고 해도 되지 않을까.

댓글 없음: