본문 바로가기

프로그램/앱인벤터

[문제풀이]앱인벤터2 - "04. 운전 중 문자 금지" 확장하기 P100


앱인벤터2 문제풀이 - 100페이지 "운전 중 문자 금지" 확장하기


1. 맞춤 메시지를 미리 등록된 특정한 사람에게만 보내도록 처리한다. 선택문인 if 블록이 필요한데, if에 대해서는 18장을 참조한다. 


  블록탭에서 when Texting1.MessageReceived 에 set Texting1.Massage to에 if then else 문을 추가하고 if에  Logic에 "=" 구문을 이용해 좌우측에 Texting1.PhoneNumber 와 "000-000-0000"(특정번호)를 삽입한다. 그리고, then에 "특정문자(Text)"를 삽입하고, else예외처리문인 기존에있던 문구를 끼우면 된다.




2. 특정 위도와 경도를 중심으로 일정한 범위 안에 있을 때 그 상황에 딱 맞는 맞춤 메시지를 보낸다. 예를 들어, 222호에 있다면, "지금 222호에 있습니다. 곧 연락 드리겠습니다." 와 같은 응답 메시지를 보낸다. 어떤 범위 안에 있는지 LocationSensor로 확인하는 기능은 23장을 참고한다. 


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


 블록탭에서 set Texting1.Message to 블럭에 if then else 문을 만들어 끼우는데, 예를 들어 위도 경도가 "위도≤50, 경도130" 라면, ifLocationSensor1.Latitude ≤ 50 and LocationSensor1.Longitude ≤ 130 을 넣고, then에 "지금 222호에 있습니다. 곧 연락 드리겠습니다." 를 넣고, else에 예외처리로 "나중에 연락드림"이라고 입력하고 테스트를 해보면 된다. 

만약, 현재의 위치를 위도,경도로 보고 싶다면, 현재위치를 표시하는 LocationSensor1.CurrentAddressLatitude, Longitude를 문자로 전송 시켜보면, 나의 위치를 파악할 수 있다. 





3. 피하고 싶은 사람의 목록이 있고, 그 목록에 속한 사람에게서 문자가 왔을 때 경고음을 울린다. 목록을 처리하는 list 컴포넌트는 19장을 참고하라. 


  디자이너탭에서 사운드를 추가하고, 블록으로 와서 리스트 변수블록은 initialize global name to(Variables) 블록에 make a list(Lists) 블록을 꽂아 만드는데, initialize global name to 이름을 phoneNumber로 정하고 리스트 목록에 몇 개의 특정전화번호(000-0000-0000)를 입력하고, 

when Texting1.MessageReceived do 블록에 if then을 끼워넣고, ifget global phoneNumber, thencall Sound1.Play를 끼워 넣으면 된다.





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

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