본문 바로가기

프로그램/앱인벤터

[입문] 앱인벤터 시작시 - 컴포넌트와 웹주소

  앱인벤터2 는 프로그래밍을 간편하게 할 수 있게 도와주는 프로그램으로, 개발자에게 프로그램언어에 대한 많은 지식을 필요로 하지 않으며, 앱인벤터2의 구조는 크게 디자인탭과 블럭탭이 있고, 이 것으로 모든 앱을 만들 수 있게 설계되어 있다.


  사용 방법은 디자이너탭에서 좌측에 팔렛트에 아이콘형태 필터를 끌어다 앱에서 눈에 보이는 부분을 담당하는 레이아웃 디자인을 제작하고, 블럭탭에서 디자인별로 컴포넌트를 이용한 프로그래밍을 작업을 하여 앱이 실행될 수 있게 완성하는 형태를 띤다. 한마디로 디자이너는 "생김새", 블럭은 "기능"장착을 의미한다.


  앱인벤터2 를 시작하려면 구글크롬에 아래와 같이 주소를 입력하면 된다.

  http://ai2.appinventor.mit.edu/


  앱인벤터2 예제이미지 다운 : www.appinventor.org/bookFiles



-> Start new project -> 프로젝트명 -> ok

* 프로젝트명은 공백없이 입력한다.




다음은 실행된 화면이다.



위 화면에서 컴포넌트와 블럭을 가지고 앱을 만들어 볼 수 있다. 


* 라이브 테스팅

앱인벤터 프로그램을 개발하는과정에서 조금씩 기능을 추가하고, 스마트폰에 바로바로 테스트 실행하는 과정을 말하는 것으로 점진적 프로그래밍을 말한다. 이 테스트는 안드로이드 폰에서 앱인벤터로 접속하면 바로 실행해 볼 수 있다.

방법은, 스마트폰과 컴퓨터를 같은 와이파이에 놓고 스마트폰 "플레이스토어"에서 "MIT AI2 Companion" 앱설치 및 실행 한다.


-> 컴퓨터 화면에서 아래 처럼 실행한다.

    PC 화면에서 Connect -> AI Companion -> 바코드 나오면 

    



스마트폰 앱실행 : 

스마트폰 화면에서 <MIT AI2 Companion> 실행 -> scan QR code -> QR 코드스캔


그러면 내가 개발중인 앱이 스마트폰 화면에도 나온다.


그런데, 위와 같은 방식은 인터넷 클라우드 방식이라 컴퓨터나 폰에서 접속이 끈어지면, 내 폰에서 앱을 찾아 실행 할 수 없다. 


와이파이가 끈어진 상태에서도 설치할 수 있는 방법은 폰에 아래와 같이 설정한다. 


스마트폰 :

설정 -> 잠금화면 및 보안 -> 출처를 알 수 없는 앱 "허용" 

PC : 디자이너항목

Properties -> Screen1 항목에서 아이콘을 설정하고 -> Build -> App(provide QR code for.apk)


위 처럼 하면 QR코드로 apk 설치파일을 설치하여 폰과 PC접속이 끈긴 후에도 계속해서 스마트폰에서 앱을 사용할 수 있다. 


(QR코드 만드는도구 : http://qrcode.kaywa.com/)


* 다른개발자와 .aia소스파일공유(앱 인벤터2)  : 

  [My projects] -> 공유할 프로젝트명 선택 -> Projects 

  -> Export selected project (.aia) to my computer 클릭하면 

  파일이 생성되면서 내 PC에 저장이 된다. 


* AccelerometerSensor (폰의 흔들림) 컴포넌트


* Sound - Play(소리), Vibrate(진동), 


* 복잡한 레이아웃 작업시 수평(HorizontalArrangement), 수직(VerticalArrangement), 표(TableArrangement) 등의 정렬방식을 사용하면 편리하다.


* 터치하면 알아차리고, 이곳저곳 옮겨 다닐 수 있는 ImageSprite


* ImagaeSprite가 옮겨 다니는 공간을 제공하는 Canvas


* ImagaeSprite interval(ex.10밀리초)을 설정해두면 그 주기에 따라 스스로 움직인다.


* 스프라이트가 이동하는 시간 간격을 재는 Clock


* 목표물을 클릭하면 폰을 진동시키거나 소리를 내는 Sound


* 누르면 새로운 게임이 시작되는 Button (리셋)


* 두더지 위치 이동과 같이 반복되는 일을 지원(일정한 행동)하는 프로시저


* 난수생성 ramdom integer from to (캔버스내에 오프젝트 랜덤으로 이동)


* 덧셈과 뺄셈을 계산하는 블록


* 프로시저 추상화 - 명령어집합을 묶어서 이름붙이고, 나중에 필요할 때 호출해 사용하는 방식 -  예를 들어 두더지 이동처럼 난수를 생성해 좌표를 구한다는 동작과정을 모르더라도 두더지를 옮겨 준다는 프로시저의 기능만 알고 있어도 된다.


* 받은 문자를 처리하거나 문자를 보낼 때 쓰는 Texting 컴포넌트


* 앱을 종료한 후에도 맞춤 메시지가 계속 남아있도록 메시지를 저장하는 데 쓸 TinyDB 컴포넌트


* TinyDB는 휴대폰내부에 저장(개인적사용) / TinyWebDB는 클라우드 방식으로 웹서버에 데이터 저장(남들과 공유할 때) - 기본 학습용으로 제공되는 웹서버 : http://appinvtinywebdb.appspot.com


* 저장해 둔 메시지를 앱 실행이 시작될 때 읽어오는(로드) 데 쓸 Screen.Initialize 이벤트


* 문자를 소리로 들려TextToSpeech 컴포넌트


* 운전자의 현재 위치를 알아내는 데 쓸 LocationSensor 컴포넌트


* GPS - LocationSensor로 위치정보를 가져올 수 있는데, LocationSensor.CurrentAddress주소정보를 얻어 올 수 있고, 위도와 경도Latitude, Longitude, 고도는 Altitude 로 표시할 수 있다. 여기에서, 위도란 적도를 중심으로 북(+),남(-) 90부터-90, 경도는 본초자오선(영국 왕립천문대가 있는 런던 근교의 그리니치 경도가 0.0)을 기점으로 동(+), 서(-) 180부터-180 으로 표현된다.


* 목적지까지 도착시켜주는 사이트 : (출발지에서 목적지까지 방향을 표시하는 네비사이트)

https://www.google.com/maps/dir/37.82557,-122.47898/37.81079,-122.4771/@37.8150066,-122.4849634,15z/data=!3m1!4b1 

"http://maps.google.com/maps?saddr="은 출발지, &daddr=은 도착지를 의미하므로 , 이를 이용하여 차의 위치를 찾을 수 있다. 아래그림은 현재위치와 기억된 위치의 위도와 경도를 각각 표시한 것이다.



* OrientationSensor (Sensors)  폰의 기울음을 감지해 준다.


* Clock (Sensors) 스프라이트의 방향을 바꿀 주기를 재는 데 쓰는 시계 - 하나의 시계에서 여러 이벤트를 처리하는데, 이들 이벤트는 같은 주기를 따르지만, random fraction 블록을 추가하면 서로 다른 확률로 이벤트를 발생시킬 수 있다. 예를 들어, 어떤 이벤트가 타이머 네번에 한번 꼴 (25%확률)로 일어나게 하고 싶으면, if문을 이용하여 random fraction이 0.25보다 작을 때만 코드를 수행하게 하면 된다.


* 에너지바Canvas에 색을 입히는 것으로 사용


* 매개변수를 가진 프로시저 (ex. DrawEnergyLine 프로시저의 colorlength (톱니바퀴이용))




* Canvas (Drawing and Animation) 무당벌레의 에너지를 표시하는 곳 (에너지범위 0~200)


* 앱 안에서 다른 안드로이드 앱을 구동할 때 사용하는 ActivityStarter 컴포넌트 - 구글지도앱이나 자신이 만든 앱을 비롯해 어떠한 안드로이드 앱이라도 구동시킬 수 있다.


* 구글 지도앱 구동 위한 ActivityStarter 속성

   - Action : android.intent.action.VIEW

   - ActivityClass : com.google.android.maps.MapsActivity

   - ActivityPackage : com.google.android.apps.maps


* 앱 안에서 웹 페이지를 보여주는 데 사용하는 Webviewer 컴포넌트


* 여러 개의 데이터를 저장할 때 사용하는 list 변수


* ListPicker 여러 개의 데이터를 인덱스와 항목으로 만들어 준다. 

  버튼을 클릭하면 발생하는 BeforePicking / 항목을 선택하면 발생하는 AfterPicking 

  Elements (선택할 항목을 가진 리스트 : 기본값)

  Selection (사용자가 선택한 항목)

  SelectionIndex (사용자가 선택한 항목의 색인)


* 원하는 지도를 보여주는 데 필요한 URL을 동적으로 생성하기


* 아마존 api http://aiamazonapi2.appspot.com/




<출처 :  David Wolber, Hal Abelson, Ellen Spertus, Liz Looney(2015), 

앱인벤터2(초판)(오일석, 이진선 번역, 서울:한빛아카데미. (원서는 2014년에 출판)>