SW 배움터/앱인벤터2

앱인벤터2 강좌 20: 운전중 문자금지 앱 만들기

kusson 2017. 7. 3. 18:44
반응형
728x170

 운전중에 스마트폰을 사용하는 것은 대단히 위험한 일이라는 것을 여러분 모두가 아실 것이다. 어떤 보고에 의하면 음주운전보다 위험한 것이 운전중 스마트폰을 사용하는 것이라는 얘기가 있었다. 이제 이러한 위험을 사전에 방지하기 위해 운전중에는 문자나 전화를 사용하지 않고 상대방에게 내가 운전중이라는 메시지와 나의 위치를 보낼 수 있는 앱을 개발해 보도록 하겠다.  

 

 위와같이 앱인벤터2 디자이너 에디터에 화면을 구성한다. 처음에 나오는 "문자가 오면 아래 메시지가 자동 전송됩니다."라는 문구는 이 앱을 설명하는 라벨이다. 그 다음줄에 나오는 "운전중입니다. 곧 연락드리겠습니다."라는 말은 그 아래 텍스트 박스에 입력하는 문자가 표시되는 라벨이다. 여기에 표시되는 문자가 누군가로부터 문자가 왔을때 전송되는 문자다. 전송되는 문자를 바꾸고 싶으면 빈 텍스트 박스에 문구를 입력하고 텍스트 박스 아래의 "응답 바꾸기" 버튼을 누르면 전송되는 문구가 바뀐다. 화면 아래부분의 " Non-visible components"를 보면 Texting엘리먼트와 TinyDB, TextToSpeech, LocationSensor 등의 요소가 있다. Palette 패널로 가서 Social를 클릭해 Texting엘리먼트를 꺼내오고, Media에서 TextToSpeech를 Stroage에서 TinyDB를 그리고 Sensors에서 LocationSensor를 드래그 해서 디자이너 화면에 드랍하면 화면아래에 위치하게 된다.

 Texting엘리먼트는 상대방의 전화번호와 문자를 확인하는데 필요한 요소이고, TextToSpeech는 상대가 보낸 문자를 읽어주는데, 그리고 LocationSensor는 나의 위치를 상대방에게 전달해 주기 위해 필요한 요소들이다.

 

 

 초기화면에서 전송할 문구를 화면에 표시하는 설정부이다. Blcoks 에디터로 가서 좌측 패널의 Screen를 클릭하면 when Screen.Initialize 이벤트 블럭이 나오는데 Block 에디터 화면에 드래그 앤 드랍해서 배치한다.  자동으로 전송할 문구가 표시되는 ResponseLabel에는 TinyDB에 저장되어 있는 문구를 가져와서 표시한다. 문구는 디자이너 에디터에서 ResponseLabel에 미리 입력해 두던지 여기서 위와같이 TinyDB에 설정해 주어도 무방하다. TinyDB에 저장된 문구는 이 앱을 두번째 사용할 때부터 활용이 되는 것이다. 당연한 얘기지만...

 

 

 이제 본격적으로 LocationSensor를 이용하여 나의 위치를 파악하고 상대에게 전달하는 루틴을 설명한다. 먼저 lastKnownLocation이라는 변수를 설정하고 "위치정보없음"이라는 초기값을 입력해 둔다. 이 변수에다 LocationSensor에서 들어오는 위치값을 설정할 것이다. 색깔별 박스로 표시한 부분을 클릭해서 필요한 요소들을 화면에 배치한다.

 

 

 위의 그림은 앱인벤터2 전체에서 쓰이는 팁중에 하나로 이벤트 블럭 두번째 줄에 나오는 number와 messageText등의 get, set 블럭을 쉽게 불러오는 방법을 설명하는 그림이다. 마우스 커스를 number와 messageText등의 글자위에 가져가면 아래에 get, set설정을 나타내는 블럭이 나타난다. 이것들을 드래그해서 필요한 곳에 드랍하면 쉽게 get, set블럭을 설정할 수 있다. 변수나 이벤트 블럭등의 설정에 요긴하게 쓰이는 팁이니 잘 기억해 두고 이용하기 바란다.

 

 

 Texting엘리먼트는 상대로 부터 문자메시지를 받았을때 어떤 처리를 할 것인지 설정하는 블럭이다. Texting엘리먼트를 클릭해서 나오는 드랍박스에서 "when Texting1.MessageReceived" 이벤트 블럭을 끄집어 내서 화면에 배치하고 전화번호와 상대에게 전할 메시지를 설정한다. 화면을 잘 보면 어떤 루틴으로 나의 위치와 메시지가 설정되고 상대에게 전송되는지 어렵지 않게 알 수 있을 것이다. 이벤트 블럭안에 설정된 내용은 초기에 입력한 전송 문구와 나의 위치를 상대에게 전달하고 또 "상대의 전화번호에서 문자가 왔습니다. 내용은 ****입니다" 라는 소리를 들려주라는 내용이다. 이렇게 해서 운전자는 구지 스마트폰을 만지지 않고도 누구로 부터 어떤 메시지가 왔는지를 알 수 있고 또 상대에게도 자동으로 나의 메시지와 나의 위치를 전달할 수 있다.

 

 

 위의 블럭은 상대에게 자동으로 전송할 문구를 수정하기 위한 루틴이다. 디자이너 에디테에 있는 "NewResponseTextbox" 라벨에 새로운 문구를 입력하고 "응답바꾸기" 버튼을 누르면 전송메시지가 바뀌게 되고 TinyDB에도 저장이 된다. 다음에 앱을 실행하게 되면 저장된 문구가 화면에 표시되고 그 문구가 전송되게 된다.

 

 이제 운전을 하기 전에 스마트폰으로 이앱을 실행해서 옆에 두면 손을 쓰지 않고도 누구로 부터 문자가 왔는지 그리고 내가 전하고 싶은 메시지와 위치를 전달 할 수 있으므로 사고의 위험없이 안전하게 운전을 할 수 있을 것이다. 문자를 보낸 사람도 메시지와 상대의 위치가 전송되므로 어디쯤 오는지 시간은 얼마정도 걸릴 것인지 유추할 수 있으므로  여유있게 기다릴 수 있을 것이다.

 

 

반응형
그리드형