앱인벤터는 매우 편하고 강력하지만 가끔 제공하지 않는 기능이 있습니다. 예를 들어 스마트폰에서 플래시를 켜고 끄는 기능은 제공하지 않습니다.
다행히 앱인벤터에는 확장기능(Extension)이 있습니다. 이 기능을 사용하면 누구나 Java로 앱인벤터에서 사용할 수 있는 컴포넌트를 만들 수 있고 이 컴포넌트를 마치 라이브러리처럼 다운받아 설치하면 앱인벤터에서 사용할 수 있습니다. 컴포넌트를 만드는 것은 Github에 있는 앱인벤터 소스코드를 분석하고 Java로 프로그램을 해야하기 때문에 쉽지는 않겠지요? 저도 직접 Extension을 만들어 본 적은 없습니다.
오늘은 플래시를 켜고 끄는 확장기능을 사용해서 플래시를 깜빡이는 앱을 만들어 보겠습니다. 이 기능은 예를 들어 등산을 하다가 깜깜한 밤에 길을 잃었을 때 내 위치를 알리는 용도로 사용할 수 있겠지요?
Flashlight Extension을 검색하여 앱사이트에 접속합니다. https://puravidaapps.com/flashlight.php
이 사이트에서 컴포넌트에 대한 내용을 확인하고 확장 컴포넌트를 다운로드합니다. 확장 컴포넌트의 확장자는 AIX 파일입니다.
디자이너 창에서 왼쪽의 빨레트를 보면 맨 아래 Extension이 있습니다. Import Extension을 클릭하면 팝업창이 뜨고 여기서 다운받아 둔 Extension 파일을 선택합니다.
이렇게 하면 Extension 빨레트에서 TaifunFlashlight가 보입니다, 이것을 디자인 창에 끌어다 놓으면 Nonvisible components 에서 삽입된 것을 확인할 수 있습니다. Components 창에도 보이게 됩니다. 참고로 Extension 컴포넌트는 Non-visible 만 가능합니다.
위 그림처럼 디자인 창에는 버튼 하나, Clock 하나, 그리고 TaifunFlashlight가 하나 있습니다. 버튼을 누르면 플래시가 1초에 한번씩 깜박거리게 만들겠습니다.
이제 블록코딩을 하겠습니다.
TaifunFlashlight를 클릭하면 4개의 블록이 보입니다. 플래시를 끄고 켤 수 있고, 플래시를 가지고 있는지 확인할 수 있는 블록들이 있네요. 이것들을 사용해서 1초에 한번씩 플래시가 켜졌다 꺼졌다 하게 만들어 보겠습니다.
flag 라는 부울 변수를 하나 사용합니다. 처음에 flag는 false이고 Clock이 타이머 이벤트를 1초에 한번씩 만들때마다 flag == false 이면 플래시를 켜고나서 true로 만들어주고, flag == true 이면 플래시를 끄고 false로 만들어주면 됩니다.
필요한 컴포넌트가 제공되지 않을 때 누군가 만들어 두었을지도 모르는 Extension를 찾아보는 것도 좋겠습니다. 의외로 많은 extension이 제공되고 있습니다. 이들을 사용하면 앱인벤터의 한계를 넘어설 수 있습니다.