XE5  테스트겸 델파이로 안드로이드 앱 하나 출시 했습니다.

겨울 시즌을 맞아 스키관련 앱을 하나 만들어 봤습니다.

 

다운로드 : https://play.google.com/store/apps/details?id=com.c2design.SKI_Portal

또는 구글 play : 스키1314 검색  (무료)

 

 

마켓_1024x500.png

 

 

 

[시스템구성 및 데이터처리]

대용량 데이터를 다루는것은 아니지만 Datasnap의 성능은 괜찮아보입니다.

기존 스마트폰 앱은 거의 xml 방식으로 데이터를 주고 받았는데

파싱등의 자잘한 작업에 버그도 많이 생기고 시간도 많이 걸리는 불편함이 많았죠.

 

 

Datasnap을 사용하면 클라이언트(단말기)에서 작업할 부분이 상당부분 감소되는 효과가 있습니다.

당연 개발속도도 빨라지고 오류도 적어지겠죠.

모바일 특성상 TCP 방식보다는HTTP 방식이 나아 보입니다만 구성하기 나름입니다.

날씨데이터는 기상청 공공서버에 직접 접속해서 xml로 가져오는데 3일예보 같은 경우는 데이터도 많지만 느린 이유는 공공서버 xml 구성이 불필요한 데이터가 너무 많네요.

Datasnap 서버에 관련 데이터를 미리 모아 놓고 단말기로 내려주면 해결은 됩니다. 일단 놔뒀습니다.

 

 

웹서버에서 TIdHTTP 로 스트림이나 파일 가져오는 방식은 기존윈도우 개발 방식과 똑같은 방식으로 하면 잘 됩니다.

IXMLDocument 사용해서xml 데이터 가져오는것 역시 마찬가지구요.

환경변수등 간단한 데이터는 로컬 단말기에 굳이 SQLite 사용하지않고 파일처리 하면 심플합니다.

과거에 IniFiles 많이들 써보셨을텐데..모바일 환경에서도 요긴하게 쓰입니다.

큰 차이는 없지만 속도도 더 빠르겠죠.

 

 

 

 

[화면]

화면 대부분 ListBox를 동적생성해서 사용했는데 터치시 반전 효과가 안뜨는등 약간의 문제가 좀 있습니다.

제가 방법을 모르는 것일수도 있구요.

화면 전환은 Form이 아닌Panel을 사용해서 visible TRUE/FALSE로 전환 했습니다.

좋은 방법인지는 모르겠지만 일단 잘 돌아 갑니다.

Visible TRUE/FALSE 대신 AnimateFloat 이용해서 요즘 유행하는 슬라이드 방식을 적용해도 될것 같습니다.

 

 

특히 AnimateFloat 함수는 여러모로 쓸모가 많습니다.

아날로그 온도계 바늘 돌아가는것이나 슬로프에서 리프트 오버레이 되는 기법 역시 이것으로 다 됩니다.

다만 Animation 끝나는 시간에 이벤트를 잡지 못해서 이부분은 주의해야 됩니다.

끝나는 이벤트 잡으려면 타이머을 일일이 달아줘야 하는데 불편하죠...관련함수가 추가 되기를 바랍니다.

 

 

슬로프 맵을 보여주는 화면은 2D 화면이지만 3DViewpoint를 사용했습니다.

이미지 이동과 확대 축소가 카메라 좌표와 앵글변환만으로 쉽게 처리 되기 때문입니다.

스크린 사이즈가 제각각인 안드로이드폰에 적합한 방식이 될것 같습니다.

 

 

하지만 제스쳐를 사용하는 멀티터치에 문제가 좀 있습니다.

멀티터치와 마우스 터치 이벤트를 동시에 적용하면 지멋대로 동작합니다.

따라서 Zoom Pan을같이 써야 하는경우 이벤트가 분리가 안되서 제대로 쓸수 없죠..

이부분은 iOS 지원했던 XE2 부터꾸준히 문제제기가 되었는데 해결이 안되고 있네요.

 

 

 

[하드웨어제어]

하드웨어를 콘트롤 하는 부분은 전화걸기와 네트워크 상태 체크하는 정도인데..

전화걸기는 데모소스가 나와있고 네트워크 체크하는것은 아래 게시판에 제가 올려두었던 함수를 그대로 사용했습니다.

GPS를 사용해서 본인위치를 보여주는 기능을 넣었으나 GPS만 사용하면 어플이 불안해지더군요.

메모리 누수가 좀 있는것 같습니다. 그래서 방법을 찾기 전에는 아쉽게도일단은 제외 했습니다.

이는 안드로이드 단말기 특성 일수도 있을 것 같구요…iOS에서는 비교적 잘 되는 것 같습니다.

GPS 기능이 꼭 필요한 경우 세심한 테스트가 필요해 보이네요.

 

 

 

[로딩]

어플 실행 시키면 화면 나올때까지 블랙스크린이 4초 정도 보입니다.

테스트 단말기는 많이 느린 갤럭시노트1 이고 갤럭시 3이후 부터는 크게 신경 안쓰일정도 입니다.

iOS 경우는 로딩중에 이미지를 보여줄수 있었으나 안드로이드는 이게안된다고 합니다.

(DavidI 에게 메일을 보내서 문의 하였더니 친절히 알려 주셨네요.)

스플래쉬 폼을 메인 폼대신 먼저 띄울수는 있으나 그렇다고 시간이 줄어드는 것은 아니구요..

메인폼 띄우기전 OnCreate 에서 많은작업을 할때는 유용할수 있을것 같습니다.

가급적 OnCreate 에서 초기작업을 하지 말고 폼생성 이후에 하는 요령이 필요 하겠습니다.

 

 

또한 어플 종료후에 곧바로 다시 실행시키면 실행이 안되고 튕기는 문제가 있습니다.

그리고 어플 띄워놓은 상태에서 화면 꺼진후에 다시 켜면 역시 블랙스크린이 뜨는 경우가 자주 있습니다.

화면이나 백버튼을 한번 터치 해주면 그제서야 어플이 켜집니다.

위 두가지 문제는 심각한 것은 아니나 사용자가 짜증날수 있으므로 해결되길 바랍니다.

 

 

[배포]

배포는 큰 문제는 없으나 릴리스 버전 생성시 매니페스트 파일에 인터넷사용 옵션을 추가해도 적용이 안되는 버그가있어 매니페스트 파일을 직접 수정해야 됩니다.

버그리스트에 올라와 있던데 이번 업데이트때 반영 되었는지는 모르겠네요.

 

어플 용량이 좀 큽니다. 기본폼 하나 띄워도 20MByte가 넘더군요. 이것저것 넣으면 30M는 후딱 넘어갑니다.

뭐 어쩔수 없다고 하니 감수해야 할 것 같군요. 참고로 구글 Play 앱 용량제한은 4G 로 알고 있습니다.

요즘 보니 뱅킹 같은 앱은 대부분 20M는 쉽게 넘어 가더군요.

 

 

 

[크로스플랫폼 및 개발환경]

iOS 버전은 약간의 화면 작업과 네트워크 체크하는 부분만 별도로작업해주면 바로 릴리스가 가능하나 iOS 버전은 이전에 테스트를 많이 해봐서 굳이 따로 배포하지는 않을 예정입니다.

 

개발작업시 데이터 체크 같은 것은 윈도우용으로 돌려가며 테스트하니 편합니다..컴파일이 워낙 빠르니..

다만 윈도우용으로 배포버전을 만들면 화면작업은 상당부분 별도로 해줘야 할겁니다.

특히 Listbox 같은 경우DetailText는 아예 안보이니 다르게 처리해야 합니다.

폰트크기도 제각각이고

개발 단말기는 빠른 것 보다는 느린 것이 더 나을수 있습니다. 안보이던 버그가 잘 보입니다..^^

다만 단말기에 디버깅 걸면 좀 답답하긴하네요.

단말기 여러대 물려놓고 개발이 가능하니 상황에 맞게 작업하면 되겠죠.

 

 

 

앱 관련 해서 문의 사항있으면 이곳이나 파어어몽키 카페에 언제든지 질문 올려 주세요.

파이어몽키 카페 : http://cafe.naver.com/delphifmx

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 22591
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21024
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23083
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28881
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30052
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25397
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46348
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 182325
1397 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152367
1396 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 112782
1395 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 84739
1394 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71988
1393 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 54176
1392 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 50406
1391 Find the O/S Language Type c2design 2014.07.30 48422
1390 RAD Studio Resource Center 박병일 2012.01.26 46645
1389 CD-ROM 열고 닫기 박병일 2011.12.22 44787
1388 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 38644
1387 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32514
1386 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29499
1385 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23342
1384 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 23197