앱인벤터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" 라면, if에 LocationSensor1.Latitude ≤ 50 and LocationSensor1.Longitude ≤ 130 을 넣고, then에 "지금 222호에 있습니다. 곧 연락 드리겠습니다." 를 넣고, else에 예외처리로 "나중에 연락드림"이라고 입력하고 테스트를 해보면 된다.
만약, 현재의 위치를 위도,경도로 보고 싶다면, 현재위치를 표시하는 LocationSensor1.CurrentAddress와 Latitude, 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을 끼워넣고, if에 get global phoneNumber, then에 call Sound1.Play를 끼워 넣으면 된다.