본문 바로가기
앱인벤터/앱인벤터 코딩따라하기

앱인벤터 위치센서 테스트 앱

by flycoding 2022. 12. 17.
반응형

앱인벤터 위치센서 테스트 앱

 

앱인벤터 홈페이지에 나와 있는 튜터리얼을 참고해서 작성한 것이다. 튜터리얼의 목적은 앱인벤터의 많은 블록은 이해하고 활용할 수 있도록 도와주는 프로그램들로 구성되어 있다.

 

이 앱은 훨씬 더 복잡하고 앱인벤터 위치 센서 컴포넌트의 대부분의 기능을 보여준다. 아래 두 이미지는 작동하는 위치 센서 테스트 앱을 보여줍니다. 왼쪽 이미지는 기능 버튼을 누르기 전에 작동 중인 센서 테스트 앱을 보여줍니다. 버튼을 누르면 화면은 오른쪽 이미지와 같아야 합니다. 앱인벤터 위치센서 테스트 앱은 태블릿의 GPS가 필요한 모든 기능을 가지고 있음을 확인한다.

앱인벤터 위치센서 테스트앱 실행 예제화면 (출처 : 앱인벤터 홈페이지)

 

 

자, 이제 시작해보자...

위치센서에서 제공하는 모든 기능을 테스트하기 위한 앱이다.

 

위치센서 테스트 앱 기본 설계

위치센서 테스트 앱의 특징은 다음과 같다.

  • 위치 가져오기 버튼을 누르면 정확도, 위도 및 경도 정보를 제공한다.
  • Capabilities(기능) 버튼을 눌러 테스트 중인 장치에 Latitude/Length(위도/경도), Atlitude(고도) 및 Accuracy(정확도) 기능이 있는지 여부를 표시한다. 모든 스마트폰(기기)이 이러한 기능을 모두 갖춘 것은 아니다.
  • 각 GPS 위성 고정의 정확도를 +/- 미터 단위로 보고한다. Accuracy 값은 센서의 감지된 위치 주변의 반지름(미터)이다. 장치는 이 반경 내에 위치할 확률이 68%이다.
  • 사용 가능한 서비스 공급자를 표시한다. WIFI 태블릿에서는 'gps'만 받을 수 있다. 스마트폰에서는 실제 GPS가 있는 경우 더 많은 옵션이 있다.
  • 현재 선택한 서비스 공급자를 표시한다. 공급자 전환 버튼을 눌러 gps와 네트워크를 변경할 수 있다. 이는 앱 내에서만 GPS와 네트워크 사이에서 전환된다.
  • 장치 GPS에 해당 기능이 있는 경우에만 고도를 보고한다. 건물의 3층까지 걸어갈 때 고도가 바뀔 것이라고 예상하지 마십시오. 그 측정은 그렇게 정확하지 않다.
  • 위치 주소가 사용 가능한 경우에만 현재 주소를 보고한다.
  • 장치가 거리보다 많이 이동한 경우 표시됩된다. 선택한 간격이다. 아래 섹션의 경고를 읽으십시오.
  • 거리 및 시간 간격을 모두 설정할 수 있다. 기본적으로 거리는 0으로 설정되고 시간은 60000ms(1분)로 설정됩니다. 두 값 모두 앱에 표시된다.
  • 일정 기간 동안의 정확도, 위도 및 경도의 데이터 로그를 제공한다. 로그 데이터 상자를 선택하여 이 기능을 설정한다.
  • GPS에 위성 수정 프로그램이 있는지 여부와 위치 정보가 네트워크 기반인지 여부를 보고한다. 아래의 픽스에 대해 읽어보십시오.
  • 앱을 닫고 위치 거리 및 시간 재설정 단추를 사용하여 위치 센서의 시간 및 거리 설정을 기본값으로 재설정할 수 있다.

 

위치센서 테스트 앱 디자인

 

앱인벤터 위치센서 테스트 앱 디자인 화면

 

GPS 정확도 기록 앱 컴포넌트

앱인벤터 구성 요소는 디자이너 창의 왼쪽 팔레트 제목에 있다. 컴포넌트는 안드로이드 폰이나 아이폰에서 앱을 만들 때 사용하는 기본 요소이다. 화면에 버튼과 레이블 컴포넌트를 활용하여 화면을 구성하고 앱을 만들려고 한다. 

대략 6개의 모듈로 설명을 하려고 한다. 

 

위도와 경도 표시 컴포넌트

. LatitudeLabel 레이블 컴포넌트 : '위도' 텍스트 표시

. Latitude 레이블 컴포넌트 : 위도값 표시

. SplitterLabel 레이블 컴포넍트 : '---' 위도, 경도 구분 표시 

. LongitudeLabel 레이블 컴포넌트 : '경도' 텍스트 표시

. Longitude 레이블 컴포넌트 : 경도값 표시

 

현재위치는 표시 컴포넌트

. GetLocationButton 버튼 컴포넌트 : 위치센서로부터 위치관련 값을 수신하기 위해 사용한다.

. LocationStatus 레이블 컴포넌트: 'WAIT', 'GPS has a fix', 'WIFI has a fix', 상태값을 표시한다.

. image1 이미지 컴포넌트 : 안드로이드 이미지를 표시한다.

 

위치센서 가용성 표시 컴포넌트

. CapabilitiesButton 버튼 컴포넌트 : 현재 위치에서 위치센서의 경도, 위도, 고도, 정확도 등의 값을 확인한다.

. LatLonLabel 레이블 컴포넌트 : 위치센서로부터 위도경도확인가능한지 여부를 표시한다.(yes, no)

. AltitudeAvailableLabel 레이블 컴포넌트 : 위치센서로부터 고도 측정이 가능한지 여부를 표시한다.(yes, no)

 

. AccuracyAvailableLabel 레이블 컴포넌트 : 위치센서로부터 정확도 측정이 가능한지 여부를 표시한다.(yes, no)

. TimeIntervalLabel 레이블 컴포넌트 : GPS를 수신하는 시간 간격을 표시한다.

. AvailableProvidersLabel 레이블 컴포넌트 : 위치센서로부터 수신하는 사용가능한서비스제공자를 표시한다.

. ProviderLable 레이블 컴포넌트 : 현재 수신하고 있는 서비스제공자를 표시한다.

. AltitudeLabel 레이블 컴포넌트 : 현재 고도값을 표시한다.

. AddressLabel 레이블 컴포넌트 : 현재 주소값을 표시한다.

  - 구글데이터베이스로부터 물리적 주소를 가져와서 표시한다.

 

리셋과 설정 모듈

. WaitToMoveLabel 레이블 컴포넌트 : 정확도값을 표시한다.

. DistanceToMoveLabel 레이블 컴포넌트 : 

. SetDistanceButton 버튼 컴포넌트 : 텍스트박스에 입력한 거리 값을 위치센서 컴포넌트에 설정하기 위해 사용한다.

. DistanceTextBox 텍스트박스 컴포넌트 : 위치센서 거리간격 값을 입력한다.

. ResetButton 버튼 컴포넌트 : 위치센서 값들을 모두 초기화하는 버튼이다.

. SetGPSUpdateButton 버튼 컴포넌트 : 위치센서의 시간간격값을 변경하기 위해 사용한다.

. MSTextBox 텍스트박스 컴포넌트 : 위치센서의 시간간격 값을 입력하는 텍스트박스이다.

. MetersLabel 레이블 컴포넌트 : 설정된 시간간격값을 표시한다.

. CheckBox1 체크박스 컴포넌트 : DataLabel에 시간별 위도경도 값등을 기록 유무를 설정하는 체크박스이다.

  - 체크되어 있으면 시계 컴포넌트의 타이머간격과 타이머활성화여부를 참으로 하여 1초마다 위치값 등을 수신한다.

. ToggleProviderButton 버튼 컴포넌트 : 위치서비스제공자를 변경하기 위한 버튼이다.

  - gps이면 network으로, network이면 gps로 설정한다.

. CloseAppButton 버튼 컴포넌트 : 위치센서테스트 앱을 종료한다.

. DataLabel 레이블 컴포넌트 : 위도, 경도, 정확도 등을 시간별로 기록한다.

 

아래 그림은 앱이벤터로 작성한 위치센서 테스트 앱의 디자인과 사용된 컴포넌트이다

앱인벤터 위치센서 테스트 앱 컴포넌트들

 

 

위치센서 컴포넌트 설정값 설정하기

스마트폰의 현재 위도, 경도, 정확도값을 측정한다.

거리간격 : 0

활성화 : 참값

시간간격 : 60,000

 

더 자세한 사항은 위치센서 컴포넌트 글을 참조바란다.

 

 

앱인벤터 위치센서 컴포넌트

앱인벤터 위치센서 컴포넌트 앱인벤터의 컴포넌트들을 이해와 실제 예제를 통해 실습을 통해 모바일 앱 개발에 활용도를 높이고자 한다. 이번 시간에는 앱인벤터의 위치센서 컴포넌트를 활용

flycoding.tistory.com

 

 

시계 컴포넌트 설정값 설정하기

타이머를 동작시켜 주기적으로 위치센서로부터 위도, 경도, 정확도값을 측정하기 위해 사용한다.

초기값

타이머항상작동 : 참값

타이머활성화여부 : 참값

타이머간격 : 1000

시계 컴포넌트에 대해 자세히 알고 싶으면 아래 글을 참조바란다.

 

 

앱인벤터 시계 컴포넌트

앱인벤터 시계 컴포넌트 앱인벤터의 컴포넌트들을 이해와 실제 예제를 통해 실습을 통해 모바일 앱 개발에 활용도를 높이고자 한다. 시계 컴포넌트는 스마트폰의 내부 시계를 사용하여 시간을

flycoding.tistory.com

 

설계 아이디어

위치센서 테스트 앱은 위치센서가 측정한 위도, 경도, 정확도, 고도, 주소 및 측정시간간격, 거리간격 등을 설정하고 테스트할 수 있는 앱이다. 위치센서의 모든 속성값 등을 표시하거나 설정하며 테스트하는 앱이다.

 

코딩블럭

블록 코딩은 내가 하고자 하는 내용을 문장으로 만들어 보라. 그것을 그대로 코딩하면 된다.

 

우리가 무엇을 할 것인지 생각해보라.

 

 

전역변수 : 

LS_Accuracy : 정확도값을 저장한다.(위치센서로부터 측정한 값을 저장한다.)

LS_Distance : 위치센서의 거리간격 값을 저장한다.

LS_Time : 위치센서의 시간간격 값을 저장한다.

앱인벤터 위치센서 테스트 앱 전역변수

 

 

* 위치센서 테스트앱이 초기화되었을때

위치센서 테스트앱이 처음에 시작될 때 호출되는 블럭이다.

앱에서는 위치센서 컴포넌트의 값 등을 설정한다.

위치센서 서비스제공자이름 : gps 지정하기
LS_Distance <- 위치센서 거리간격 지정하기
LS_Time <- 위치센서 시간간격 지정하기
DistanceTextBox < - LS_Distance
MsTextBox <- LS_Time
위도, 경도 값 텍스트 초기화
고도레이블 텍스트 초기화
정확도 레이블 텍스트 초기화
DataLabel 초기화

 

앱인벤터 위치센서 테스트 앱 초기화되었을때

 

* 타이머가작동할때

시계 컴포넌트는 주기적으로 호출되는 타이머 서비스를 제공한다. 현재는 1초마다 타이머가 작동한다.

1초마다 위도, 경도값을 측정하여 위치센서 테스트 앱에 표시한다.

만약 AccuracyLabel의 텍스트가 위치센서의 정확도가 다르다면
    DataLabel의 텍스트에 위도, 경도, 정확도 값을 지정한다.

AccuracyLabel 텍스트에 위치센서 정확도값을 지정한다.

앱인벤터 위치센서 테스트 앱 타이머가작동일때

 

* GetLocationButton 클릭했을때

GetLocationButton을 클릭했을 때, 위치센서 활성화시킨다.

위치센서를 활성화시켜 GPS로부터 위치값 등을 수신할 때까지 기다린다.

위치센서 활성화 <- 참값
LocationStatus의 텍스트색상 <- 빨강색
LocationStatus 텍스트 <- WAIT 지정

 

앱인벤터 위치센서 테스트 앱 GetLocationButton 클릭했을때 블록

 

* 위치센서에 위치가변경되었을때

위치센서의 위치가 변경되면 호출이 되는 블럭이다. 

사용자가 스마트폰을 들고 설정된 거리를 움직이면 위치가 변경됨을 인지하고 호출되는 블럭이다.

만약 위치센서의 위도>= and 위치센서의 위도경도확인가능 = 참 이면
  . LocationStatus 레이블의 텍스트색상 <- 검정색
  . 만약 위치센서의 서비스제공자이름=gps 이라면
    - LocationStatus텍스트 <- 'GPS has a fix'
  . gps가 아니라면
    -LocationStatus텍스트 <- 'WIFI has a fix'
아니라면
  - LocationStatus 텍스트색상 <- 빨강색
  - LocationStatus 텍스트 <- 'WAIT'


 

 

 

지금까지 '위치센서 테스트' 앱을 작성하였다. 위치센서 컴포넌트의 각종 속성값을 측정하고 확인하는 앱을 작성하였다. 위치센서의 위도, 경도, 현재위치 가용성 및 위치센서정확도 등을 측정하여 테스트하는 앱이다. 앱인벤터 튜터리얼인 것을 기억하고, 간단하지만 하나씩 실습을 할때마다 실력이 향상되는 것을 느낄 것이다.

 

눈으로 보는 것과 직접 실행하며 하는 것은 완전히 달라요.

간단하지만 직접 해보면 이해하고 자신감이 생길거에요...

 

Just Do It!!!

Just Drag&Drop It!!!

 

 

감사합니다.

 

반응형

댓글