내가 원하는 이름으로 모바일 앱의 이름 변경하기

2014.10.21 11:30

배포 전 프로젝트 옵션을 변경해 앱의 정보를 설정할 수 있습니다.

이름을 변경하려하는 경우 아래 정보를 참고하세요.

안드로이드

Project > Option > Version Info > label



iOS

Project > Option > Version Info > CFBundleDisplayName





참고



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, CFBundleDisplayName, Display, ios

연락처(주소록)을 제어하는 방법(안드로이드, iOS)

2014.06.19 15:59

연락처에 접근하는 방법을 문의하셔서 해당 내용 안내해드리고 공유차 기록합니다.


http://www.fmxexpress.com/access-device-contacts-with-delphi-xe5-firemonkey-on-android-and-ios/


http://www.fmxexpress.com/access-android-contacts-manager-with-firemonkey-in-delphi-xe5/


http://www.fmxexpress.com/access-ios-contacts-with-firemonkey-in-delphi-xe5/


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, ios, 기능, 연락처, 주소록

  1. Blog Icon
    이윤희

    소중한 정보 감사드립니다~ ^^
    아직 많은 부분이 어색하네요. 하나씩 알아가는 재미도 있구요...
    김현수님 블로그의 많은 포스팅 자료가 도움이 되고 있습니다.
    감사합니다~

  2. 네 도움이 되신다니 보람이 됩니다.^^
    앞으로도 많은 시도해보시고 궁금하신 점이나 함께 공유하실 만한 내용 있으시면 다양하게 조언 부탁드립니다.
    감사합니다.^^

  3. Blog Icon
    컴퓨터정보공학과

    컴공과 학생입니다. xe7에서 안드로이드로 주소록 제어하기를 해보려고 하는데 여기에 나온 데모버전을 실행해봤더니 오류가 엄청뜨는데 이 오류만 잡으면 돌아갈수있을까요?

  4. XE7 안드로이드의 경우
    ContactsManager의 uses 절에 Androidapi.Helpers를 추가하세요.

당겨서 새로고침(Pull to refresh) - 안드로이드, iOS 구현

2014.06.19 10:00

이전에 iOS용 당겨서 새로고침 글을 소개해 드렸는데요.

안드로이드에서 안된다는 말씀이 있어 찾아보니 Android와 IOS를 동시에 사용할 수 있는 내용이 있어 소개해 드립니다.


첫번째는, 

유튜브를 통해 찾은 내용입니다.

당겨서 새로고침을 구현하는 내용을 동영상을 통해 안내합니다.

UI 구성 뿐 아니라 데이터를 가져오는 부분까지 설명을 해줍니다.

단, 이야기하는 언어가 한국어/영어가 아니므로, 화면만 보시며 따라하셔야 합니다.



두번째는 이전에 소개해 드린 iOS용 당겨서 새로고침을 안드로이드에서도 사용할 수 있도록 수정한 내용입니다.

http://www.fmxexpress.com/swipe-down-to-refresh-listview-with-delphi-xe5-firemonkey-on-android-and-ios/

하단의 안드로이드용 소스코드를 다운받으셔서 기능을 추가하시면 됩니다.




저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, ios, pull to refresh, UI

  1. Blog Icon
    gg..

    안녕하세요. 델파이 xe 5 를 사용하고 있는 유저인데요.
    sdk 를 업데이트하고 usb 디버깅을 사용해도,
    타겟에 핸드폰이 인식이 안되는건 대체 무슨 증상일까요..ㅠㅠㅠ

안드로이드 ARM 에뮬레이터 속도를 올리는 8가지 팁

2014.04.25 13:11

안드로이드 개발 시 많은 안드로이드 장비(device)에서 테스트 하지만 그렇지 못한 경우가 많습니다. 


이 경우 안드로이드 에뮬레이터를 이용할 수 있는데요. 안드로이드 에뮬레이터가 너무 느려서 고생을 합니다. 

이 문제를 다소 완화할 수 있는 내용이 있어 소개합니다. 


delphi.org를 운영하는 Jim McKeeth는 다음과 같이 안드로이드 에뮬레이터 속도를 올리는 8가지 팁을 소개했습니다.


  1. 실제 하드웨어를 사용 
  2. 가상머신에서 에뮬레이터를 실행하지 말 것 
  3. 가상머신에서 돌려야 한다면, Parallels desktop 9을 사용 
  4. 호스트 GPU를 사용 
  5. OpenGLES 라이브러리를 복사 
  6. Mac에서 에뮬레이터를 실행 
  7. 안드로이드 이전 버전으로 실행 
  8. AVD 하드웨어 구성을 조정 할 것

http://delphi.org/2013/11/8-tips-to-speed-up-your-android-arm-emulator-avd/


해당 글을 보시면 Jim McKeeth는 위의 8가지 중 2, 4, 5 항목과 때때로 7번 항목을 사용한다고 합니다.

여러분들도 상황에 맞춰 선택적으로 안드로이드 에뮬레이터에 적용하시면 더 낳은 성능으로 에뮬레이터를 사용하 실 수 있을 것 같습니다.


자세한 설명과 사용법은 해당 링크를 통해서 확인 바랍니다.


그리고 기본으로 제공되는 안드로이드 애뮬레이터 외의 다른 애뮬레이터를 사용할 수 있습니다. 

해당 내용은 다른 블로그 포스팅을 참고하시기 바랍니다.



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, AVD, Emulator

  1. Blog Icon
    초보자

    궁금한점이 있어 이곳에 문의 드립니다.. ^^
    아 처음 하다 보니 뭐 이리 복잡한지.. 쩝...

    첫번째 질문..
    업무용 앱을 만들고 있는데 서버 IP와 Port 등을 앱에서 저장하고 있어야 하는데...
    PDA나 뭐 이런곳에서는 텍스트 파일로 가지고 있으며 저장된걸 불러 주기도 하고 다시 바꿔 저장한 후에
    프로그램이 실행되면 텍스트에서 읽어 전역변수에 넣어서 사용했는데..
    앱에서는 어케해야 할지 잘 모르겠더군요... 좀 알려주세요.. ㅠ.ㅠ

    두번째 질문.
    종료하여면 스맛폰에서 빽을 누르면 바로 종료가 되버리는데 한번더 물어 보고 싶은데...
    showmessage 만 써봐서리.. 네/아니오 버튼이 나오게 하질 못하겠네요..
    다른 방법이 있는지.. ^^

    마지막으로
    스맛폰마다 고유ID 가 있는지요?
    컴퓨터는 Mac어드레스를 이용했는데... 앱도 있을법한데... 음
    혹 있다면 고유ID를 구하는 방법좀 알려주세요..

    언제나 와서 각종 정보 얻어 갑니다.. 정말 감사해요..
    ^^

  2. 1, 설정정보
    - 모바일도 INIFile을 이용하면 됩니다.
    2, 백버튼 제어
    if Key = vkHardwareBack then
    begin
    // 구현코드 입력
    Key := 0;
    end;
    3, 고유ID는 잘모르겠네요^^

  3. Blog Icon
    만주

    안녕하세요.
    위 링트에서 지니모션을 제가 이크립스에서는 태스트 해봤는데 잘 됩니다.
    그런데 xe6에서 태스트 해보니 "this application does not support ...." 애러 메지지가 지니모션
    창에서 뜨고 실행이 되지 않습니다.
    해결 할 수 있는 방법 있으면 좀 알려주세요.
    인터넷 좀 뒤져도 답이 나오지 않습니다.
    xe fmx는 정보가 너무 부족해서 첨 접하는 개발자는 너무 망막하군요.

  4. 제가 실수를 했네요^^
    지니모션의 경우 x86 기반의 안드로이드 애뮬레이터입니다.

    현제 델파이(파이어몽키)의 경우 ARM 기반으로 앱 제작이 가능하기 때문에 지니모션의 경우 현재 사용할 수 없습니다.

    글에 부가설명을 추가해 놓겠습니다.

    참고로 Intel(x86) 기반의 경우 엠바카데로에서 준비중에 있습니다.
    질문 주셔서 감사합니다.

스노우크래프트(Snow Craft) for 안드로이드(소스포함)

2014.04.25 10:48



델마당(http://www.delmadang.com)을 통해 양병규님이 Snow Craft 라는 게임을 Delphi XE5로 만드시고(Clone) 공개하셔서 소개합니다. 아마 예전에 윈도우 버전으로 작업했던 부분을 안드로이드로 포팅하신 듯 합니다.


제가 가지고 있는 넥서스7 1세대에서도 아주 잘 돌아가고 무엇보다 게임이 재밌네요^^

소스를 열어보시면 배울 만한 것들이 많이 있습니다.

(아주 좋은 소스코드를 공개해 주신 양병규님에게 다시한번 감사드립니다.)


소스코드

아이콘 경로가 절대경로로 잡혀 있어 델마당 자료실의 첨부파일에서 절대경로만 수정하여 올립니다.

▶ 클래스 상속

클래스 상속을 통해 TBoy와 TSnow, TBunker의 공통된 기능을 TCharacter에서 구현되었습니다.

왜 클래스를 사용해야 하는지와 사용하는 방법에 대해 이해하실 수 있을 것 같네요.

▶ 캔버스의 사용

Canvas에 캐릭터 들을 직접 그리는 방식으로 작성하셨습니다.

캔버스 사용법 과 마우스 이벤트를 어떻게 각 케릭터와 연결했는지를 보시면 아이디어를 얻으 실 수 있습니다.

▶ 리소스를 통한 효과음 사용

Sound.pas 파일을 보시면 효과음 파일을 배포관리자를 통해 배포하지 않고 사용할 수 있는 좋은 팁이 있습니다.

Sound.pas 파일의 PlaySound 메소드에는 ResourceID를 통해 등록된 Resource에서 스트림을 가져와 재생하는 코드는 아주 유용한 팁인 것 같습니다.


procedure PlaySound(const ResourceID: String);
var
  ResStream: TResourceStream;
  TempFile, FileName: String;
begin
  if MediaPlayer.State = TMediaState.Playing then Exit;

  FileName := ResourceID + '_tmp.mp3';
  TempFile := TPath.Combine( TPath.GetTempPath, FileName );

  if not FileExists( TempFile ) then
   begin
     ResStream := TResourceStream.Create(HInstance, ResourceID, RT_RCDATA);
     try
       ResStream.SaveToFile( TempFile );
     finally
       ResStream.Free;
     end;
   end;
  MediaPlayer.FileName := TempFile;
  MediaPlayer.Play;
end;


Project > Resources and images.. 메뉴를 통해 위의 화면을 이용 할 수 있습니다.


참고 링크




저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, Firemonkey, Snow craft, 양병규

  1. Blog Icon

    비밀댓글입니다

  2. 네 의견 감사합니다^^ 정지화면을 하나 더 올렸습니다.
    모바일에서 gif애니메이션이 안돌아가는 것을 몰랐네요.

무선으로 안드로이드 앱 디버깅 하기(RAD Studio XE5)

2014.03.10 09:52


안드로이드 앱 개발 시 매번 USB 케이블을 꽂고 디버깅하는 것이 아니라 WIFI환경의 무선인터넷으로 안드로이드 앱을 테스트, 디버깅하는 방법을 소개합니다.

두개의 블로그 포스팅에서 내용을 확인할 수 있습니다.


http://delphi.org/2013/10/wireless-android-debugging-with-delphi-xe5/


http://blog.devart.com/remote-debug-of-android-application-in-rad-studio-xe5-via-wifi.html

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, Firemonkey, Wifi ADB, XE5

안드로이드와 iOS 연락처 목록을 얻어오는 방법

2014.02.27 10:19

모바일 기기의 연락처 정보가 필요한 경우 유용한 팁이 될 것 같습니다.

각 플랫폼의 네이티브 API를 이용해 연락처의 이름, 전화번호, 이메일등의 정보를 얻어올 수 있습니다.

연락처 목록 조회

▶ 안드로이드

▶ iOS



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, contacts, Firemonkey, ios, 연락처조회

  1. Blog Icon
    김근배

    안녕하세요.
    너무 죄송하지만 혼자 하려다 보니 막막하기만 하네요
    스마트폰의 contact2.db 화일을 얻었습니다. 스마트폰의 연락처 이지요.
    이 db화일을 다시 다른 스마트폰으로 contacts 방으로 옴기려는데 permission denied 문제네요.쓰기 변경을 하고 옴기는 게 맞죠. 그런데 변경 하려면 방법을 모르네요
    그리고 옴기는 명령을 (pull,push, cp)여러가지 찾아 보앗지만 혼자 해결하기가 어려워서요 도움을 청해봅니다.
    도와 주실수 있으시죠.
    부탁 드리겠습니다.
    e-mail : gracekgb@naver.com
    수고하세요

  2. 다음 글을 참고해보세요. 저도 구체적인 연락처DB를 다루는 방법은 잘모르겠습니다.^^
    http://cranix.net/351

Tap-Tap 안드로이드 게임(소스공개)

2014.02.25 12:02

Delphi XE5로 개발된 Tap-Tap이라는 게임을 소개합니다. 손을 흔드는 귀여운 안드로이드 캐릭터(드로이드?)가 인상적인데요^^

이 게임은 러시아에서 개최된 2013년도 델파이 안드로이드 경연대회 우승하신 분의 작품입니다.


아래 보시는 것 처럼 대회용 작품이어서 약간은 급조한 태가 나지만, 초기 인트로 영상효과 및 드로이드의 애니메이션 효과가 너무나 멋지네요.


저도 간단하게 소스코드를 확인해 봤는데요. 드로이드의 애니메이션 효과는 대부분 TRectangle에 FloatAnimation 효과를 줘서 처리한것이 참 인상적이네요.

소스코드가 공개되어 있어 다운로드하셔서 테스트 가능합니다.(관련링크 참조)


여러모로 소스를 분석해 보시면 많은 아이디어와 도움이 될 것 같습니다.


구글플레이에서도 설치하셔서 테스트 해볼 수 있습니다.


관련링크



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, Firemonkey, taptap, 소스공개

[XE5] 안드로이드 배포 시 인터넷 사용 권한 미적용 이슈(android.permission.INTERNET)

2014.02.20 01:48

안녕하세요. 험프리.김현수입니다.

오늘 안드로이드 앱 배포 시 인터넷 연결이 되지 않는다는 내용을 전달받아 확인 후 정보 공유차 글을 남깁니다.


이슈

  • 안드로이드 앱 배포 시 인터넷 사용 권한이 환경파일(AndroidManifest.xml)에 기록되지 않아 앱에서 인터넷 사용 시 오류가 발생
  • 해당 이슈는 현재 기준 XE5 Update2 - 19.0.14356.6604(Build no)에서 발생되고 있습니다.


안드로이드 앱 배포를 위해서는 Target platform을 Android로 선택 후 Configuration을 Application Store로 선택 해야 합니다.(Build Configurations도 Release로 선택해야 디버깅에 관련된 코드가 포함되지 않아 앱의 용량이 줄어듭니다.)


위와 같이 Application Store로 선택 후 apk를 배포 후 인터넷 연결 관련 작업(IdHttp 또는 DataSnap 이용)을 시도하면 아래와 같은 오류가 발생합니다.

Socket Error +13 

Access Denied. 

eIDSocketError.

▶ Uses Permissions 확인

원인 파악을 위해 테스트를 진행해 봤습니다. 우선 아래와 같이 Uses Permissions에 Internet 항목을 확인했습니다.(정상적으로 선택이 되어 있습니다.)

* Uses Permissions는 안드로이드 앱에서 사용할 권한을 설정하는 창입니다.

▶ AndroidManifest.xml 파일 확인

소스를 컴파일 하면 (프로젝트 경로)\Android\Reelase\ 경로에 AndroidManifest.xml 파일이 생성됩니다.

해당 XML 파일에 위에서 설정한 권한이 포함되어야 하는데 Application Store 설정에 한해 포함되지 않는 이슈를 발견했습니다.





    
    
    
    
    
    
    
    
    
    
    
    

    
        
        
            
            
              
                
                
             
        
        
    
   

위의 XML 코드 중 <uses-permission> 태그를 유심히 보시면 인터넷(android.permission.INTERNET) 항목이 빠져있는걸 확인하실 수 있습니다. 분명히 디버그에서는 인터넷 항목이 포함되는데 Application Store 항목에서는 빠져있네요.

▶ 해결방안

다른 개발툴들도 마찬가지지만 RAD Studio도 초기여서 그런지 잔잔한 버그가 있네요. 하지만 최근 Hotfix에서 볼수 있듯이 빠르게 버그들이 수정되고 고쳐지고 있으니 엠바카데로 아니 델파이를 믿어봅니다.^^


버그레포팅된 내역을 확인해 보니 이미 발빠른 개발자들이 해당 버그를 레포팅했고 이미 내부적으로는 처리된 것으로 확인됩니다.(하지만, 아직 Hotfix등으로 제품에 적용은 되지 않은 것 같습니다.)


http://qc.embarcadero.com/wc/qcmain.aspx?d=119585


해결하는 방법을 보니

RAD Studio(델파이)에서는 AndroidManifest.xml 파일을 만들기 위해 AndroidManifest.template.xml을 입시파일로 이용하는데 임시파일을 수정해서 해결할 수 있습니다. AndroidManifest.template.xml파일은 프로젝트 소스의 루트에 포함됩니다. 


아래는 임시파일을 수정한 내용입니다.





    
    
<%uses-permission%>
    

    
        
        
            
            
              
                
                
             
        
        
    
   

기존 : <%uses-permission%>

변경 : <%uses-permission%>

    <uses-permission android:name="android.permission.INTERNET" />


위와 같이 AndroidManifest.template.xml 파일에 인터넷을 사용하겠다는 권한을 추가해서 배포하게 되면 해당 이슈를 해결할 수 있습니다.


큰 내용이 아닌데 너무 길게 썼네요^^

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, uses-permission, 안드로이드 Internet, 안드로이드 권한

안드로이드에서 ComPort에 접근할 수 있는 파이어몽키 컴포넌트

2014.02.12 13:19


WinSoft에서 안드로이드로 ComPort를 이용할 수 있는 파이어몽키 컴포넌트를 제공합니다.

물론 안드로이드 라이브러리를 Import해서 구현할 수도 있지만, 델파이로 만든 컴포넌트가 활용성이 좋을 것 같네요.

아래의 코드는 해당 컴포넌트를 사용하는 샘플코드입니다.

아래의 링크를 타고 가시면 트라이얼 버전을 다운로드 할 수 있으니, 테스트해보시고 원하시는 앱을 만드셨으면 합니다.

procedure TFormMain.MemoKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  AComPort.WriteByte(Ord(KeyChar));
end;

procedure TFormMain.TimerTimer(Sender: TObject);
var Text: string;
begin
  Text := AComPort.ReadUtf8;
  if Text <> ” then
    Memo.Text := Memo.Text + Text;
end;


자세한 내용은 아래에서

http://www.fmxexpress.com/access-the-com-port-on-android-with-delphi-xe5-firemonkey-component/


컴포넌트는 아래이 링크에서

http://www.winsoft.sk/acomport.htm


확인하실 수 있습니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

험프리.김현수 험프리.김현수 파이어몽키 android, ComPort, Delphi, Firemonkey, WinSoft

  1. Blog Icon
    영원한초보

    데모 프로그램을 보면 Devices에서 하나를 골라야 하는데 어떤 디바이스를 골라야 하나요? OPEN 버튼을 클릭하면 대부분 권한이 없거나 그런 파일이나 디렉토리가 없다고 메시지가 나오네요. 다른 설정할 곳이 필요한가요?

  2. 저도 소개차원에서 남긴 글이어서 자세한 테스트를 진행해 보지 못했습니다. 해당 제공사 사이트에서 질문하시면 답변 얻으실 수 있겠습니다.

모바일개발 심화

2014.02.06 01:07



안녕하세요. 험프리 김현수입니다.


이글에는 안드로이드와 iOS 개발 시 참고 할만한 글들을 모으려 합니다.

따라가기 형태가 아니며, 내용을 훑어 보시고 필요한 정보는 방문해서 지식을 얻으셨으면 좋겠습니다.


(계속 작성 중입니다. 좋은 정보 있으면 댓글로 알려주세요.)


공통기능

    Android 특화기능

    ▶ Android API 접근

    iOS 특화기능

    ▶ 외부 서비스 연동

    참고정보

    ▶ 공개 소스

    추가자료


    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 android, Firemonkey, ios, Rad Studio, 네이티브개발, 델파이, 멀티플랫폼, 안드로이드, 파이어몽키

    1. 필요한 정보 남겨주시면 찾아서 추가하겠습니다. 조회 수는 많은데 의견이 너무 없네요^^ 많이 남겨 주세요.

    2. Blog Icon
      반벽이

      델파이로 안드로이드 어플개발에 필요한 정보가 많이 있어서 감사한 마음으로 보고 있습니다
      선리플 후 의견 더 달아볼께요~^^ 감사합니다.

    3. 도움이 되셨다니 너무 좋습니다. 앞으로도 꾸준한 정보 기대하세요^^

    안드로이드 테마를 이용한 Splash Window 구현

    2014.02.05 09:53

    RAD Studio XE7부터는 프로젝트 옵션에서 스플래쉬 이미지를 쉽게 변경할 수 있습니다.

    RAD Studio XE6 이전 버전에서 아래 내용을 참고하기 바랍니다.


    안녕하세요. 험프리 김현수입니다.


    델파이 모바일로 앱을 만들면, iOS에서는 스플래쉬 윈도우가 표시된 후 앱이 구동되지만 안드로이드의 경우 스플래쉬 윈도우가 없이 검은색 화면이 표시된 후 앱이 구동됩니다.

    델파이 모바일 개발의 경우 엔터프라이즈 개발에 주요 초점이 맞쳐져 있어, 쉬운개발과 빠른개발에 더 강점을 갖고 있어 큰 이슈가 되지는 않지만 B2C등의 개인 사용자에게 배포할 경우 때때로 눈에 거슬리기도 합니다.


    위의 이슈(검은 화면 이후 앱 구동)를 해결하기 위한 방법은 3가지 정도가 될 것 같습니다.


    1. 앱을 최대한 빨리 띄우고 시간이 걸리는 부분은 앱이 구동된 이후에 수행
    2. 안드로이드 테마를 이용해서 스플래쉬 윈도우 출력
    3. 자바코드로 스플래쉬 윈도우용 Activity(화면)을 구성


    위의 3가지 방법 중 제일 좋은 방법은 3번 항목입니다. 별도의 스플래쉬 윈도우를 자바코드로 작성하고, 구동 시점에 스플래쉬 윈도우 출력 후 앱을 구동하는 방법입니다.

    하지만, 3번 항목으로 구현하게 되면 자바코드를 작성 후 컴파일하고, 패키징하는 작업이 델파이만을 사용하시는 분들에게는 꽤 번거롭고 어려운 작업입니다. 

    (그리고, 스플래쉬 윈도우를 초기에 구동하게되면 델파이에서 앱의 진입점을 찾지 못해 디버깅 작업을 진행 할 수 없습니다.)


    위의 이유로 제일 간단하고 디버깅도 가능한 2번째 항목으로 스플래쉬 윈도우 구성하는 방법을 설명합니다.

    안드로이드 테마를 이용한다는 것은 기본 테마를 변경하는 것이므로, 구현 후 전체적인 구성을 반드시 확인해야 합니다. 

    파이어몽키의 경우 기본적으로 테마위에 컨트롤들이 올라가는 것이므로, 큰영향을 주지 않을 것으로 생각됩니다.


    혹시 테마를 이용할 경우 이슈가 있으면 댓글 부탁드립니다


    안드로이드 테마를 이용해 스플래쉬 윈도우를 구성하려면 아래의 순서를 진행하면 됩니다.


    1. 프로젝트 생성 및 디렉토리 구조
    2. 스플래쉬 이미지 준비
    3. Styles.xml 파일 준비 - 스플래쉬 윈도우를 xml로 구성합니다.
    4. AndroidManifast.template.xml 파일 수정
    5. 배포파일 등록


    프로젝트 생성 및 디렉토리 구조

    Firemonkey Mobile Application으로 새로운 프로젝트를 생성하고, 프로젝트를 지정된 경로에 저장합니다.(e.g. D:\Projects\SplashWindow)

    지정된 경로 하위에 res 디렉토리를 생성하고 아래의 단계를 거처 스플래쉬 이미지 파일과 styles.xml 파일을 생성합니다.

    • SplashWindowTheme
      • res
        • splash.png
        • styles.xml
      • 프로젝트 소스파일

    스플래쉬 이미지 준비

    스플래쉬 윈도우를 추가할 프로젝트를 생성하고 스플래쉬 윈도우에 표시할 이미지를 준비합니다. 확장자는 이미지 포맷인 경우 무관합니다.

    저는 아래와 같은 이미지(splash.png, 768 * 1024)로 준비했습니다.

    styles.xml 파일 준비

    splash.png, splash.jpg등으로 스플래쉬 이미지를 이용하실 경우 아래 파일을 그대로 사용해도 됩니다.

    
    
    • <style name="MyTheme.NoTitleBar.SplashWindow" parent="@android:Theme.Holo">
      • name은 아래의 AndroidManifast에서 android:theme에서 사용 할 style 명
      • parent는 상속받을 안드로이드의 테마를 입력합니다.
    • <item name="android:windowBackground">@drawable/splash</item>
      • 스플래쉬로 등록할 파일을 지정합니다.
      • 배포 시 [res/drawable] 경로에 splash.png 이미지 파일이 함께 배포되어야 합니다.

    AndroidManifast.template.xml 파일 수정


    프로젝트 파일을 저장한 경로를 보시면 AndroidManifast.template.xml 파일이 자동 생성됩니다.(만약, 파일이 없을 경우 Platform Target을 Android로 설정 후 컴파일 하면 생성됩니다.)

    해당파일을 RAD Studio에 추가하거나 텍스트 에디터 등으로 열고, 아래와 같이 android:theme를 수정합니다.

    (아래의 문구는 styles.xml의 style.name과 반드시 같아야 합니다.)

    기존 : android:theme="%theme%">

    변경 : android:theme="@style/MyTheme.NoTitleBar.SplashWindow">

    배포파일 등록


    준비한 스플래쉬 이미지와 styles.xml 파일을 앱과 함께 배포 합니다.


    Project > Deployment 메뉴를 통해 [] 화면을 표시하고 Add file 버튼을 이용해 res\ 경로에 있는 2개의 파일을 업로드 하고 아래와 같이 내용을 변경합니다.

    splash.png

    • Platform : Android
    • Remote Path : res\drawable\

    styles.xml

    • Platform : Android
    • Remote Path : res\values\


    컴파일을 하고 실행하면 아래와 같이 스플래쉬 윈도우가 실행되고, 메인화면이 표시되는 것을 확인 할 수 있습니다.


    http://www.youtube.com/watch?v=J2kXdGzzMzY


    참고



    소스파일



    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 android, Firemonkey, RAD Studiio Mobile

    1. Blog Icon
      오실장

      스타일 이용하는것 정말 간편하고 좋은 방법이군요..!!
      엠바카데로에서 델파이 컴파일러에 기본으로 제공해도 전혀 무리가 없어 보이는데 왜 이런 방법들을 개발자들이 찾아내야 하는지 하는 아쉬움이 있군요..
      이제라도 좋은 방법을 찾아 냈으니 다행입니다..수고 하셨습니다..ㅎㅎ

      참고로 샘플에서 알려주신 styles.xml 안의 <item name="android:windowFullscreen">true</item> 속성을
      TRUE로 하게 되면 실행되는 앱의 속성도 풀스크린으로 나오게 되므로
      상단 상태바가 사라지게 되는데 앱의 기본설정대로 상태바가 보여야 한다면
      false 로 해서 지정하고 스플래시 이미지를 띄워도 괜찮을것 같군요.
      (이부분은 개발되는 앱의 특성이니 보시는분들 참고하시라고 제가 댓글로 알려 드립니다..^^)

      안드로이드 테마도 parent="@android:Theme" 으로 지정하면
      테마 변경없이 적용 가능 합니다. (단말기에 따라 차이는 있을수 있습니다.)

      그리고 본문 내용중
      [변경 : android:theme="@style/MyThem.NoTitleBar.SplashWindow"]
      의 문구에 MyThem 'e' 가 빠졌네요...^^ 입력하기 구찮아서 복사해서 쓰니 에러나서 한참 들여다 봤습니다..ㅋㅋ

    2. 오실장님 의견 주셔서 감사합니다^^
      원래 안드로이드의 경우 기본으로 스플래쉬를 지원하지 않기때문에 엠바카데로에서 뺀것 같은데요. 앱의 덩치가 커지면서 구동이 늦어지는 이슈까지 고려하지 않은 것은 분명히 엠바의 실수 같아요. 다음 버전에 성능적인 향상도 기대해보고 있습니다^^

      e가 빠진건 수정했습니다.

    3. Blog Icon
      조봉기

      res를 프로젝트 생성폴더 밑에 두고 해당 이미지와 xml을 놓고 실행하면 해당 리소스 파일이 없다고 합니다. 도움을 좀 주실수 있나요?

    4. 배포파일 등록 시 이미지와 xml파일을 선택하시고 remote path를 설정하시면 됩니다. 리소스 파일이 없다는 것은 실행시 나오는 메시지 인가요?

    5. Blog Icon
      조봉기

      먼저 운영자님의 답변에 감사드립니다.
      제가 운영자님의 블로그에 있는데로 프로젝트 폴더에 res생성해서 해당 splash.png, styles.xml 을 가져다 놓고
      AndroidManifast.template.xml 수정해서 디버깅 하면

      [PAClient Error] Error:E2312 G:\project\splashtest\Android\Debug\splashtest\AndroidManifest.xml:21:error:Error:No resource found that matches the given name(at 'theme' with value '@style/MyTheme.NoTileBar.SplashWindow')

    6. 우선 원인은 @style/MyTheme.NoTitleBar.SplashWindow을 찾지 못하는 것 같습니다.
      위의 오류 메시지를 보면 TileBar로 "t"가 빠져있는데요. 그게 원인이 아닐까 예상합니다.^^

    7. Blog Icon
      조봉기

      해결했습니다. 재가 배포등록 전단계까지하고 디버깅을 해서 그랬습니다. 친절한 답변감사드립니다.

    8. 도움이 되셨다니 너무 기분이 좋습니다^^

    9. Blog Icon
      김영환

      좋은 정보 감사드립니다!!
      제가 만든 앱은 메인이 뜨는데 약 3초정도의 시간이 걸립니다. 그래서 스플래쉬가 뭔지 확인하기도 전에 지나가 버리면서 약 2초정도를 블랙화면에서 기다려야합니다. 스플래쉬 대기시간을 약2초정도로 조정할 수는 없는건가요? 감사^^

    10. 만약 안내해 주실 내용이 있다면, 메인화면 전에 안내화면을 2초 정도 띄우고 사라지는 방법이 좋을 것 같습니다.
      XX팡 등의 게임도 스플래쉬 이후에 업데이트 체크 등의 안내화면이 지나서 메인화면이 뜨는 방식을 참고하시면 좋겠네요^^

    11. Blog Icon
      아가머하노

      안녕하세요. 글을 보고 적용하다 보니 잘 안되어 글을 남깁니다.

      AndroidManifast.template.xml 파일에서 해당 styles.xml파일에 있는 name을 수정하고

      F9를 누르니 자꾸 AndroidManifast.template.xml파일을 다시 생성하여 넣어놓은 내용이 초기화가 됩니다.

      이 경우 어떻게 해야할까요? 조언 부탁드리겠습니다.

    12. 안드로이드 매니페스트 파일은 2종류가 있습니다.

      AndroidManifast.template.xml 파일과 AndroidManifast.xml 파일
      전자는 파일이 없을 경우 최초 생성이되고, 후자는 매번 컴파일시마다 생성됩니다.
      아마 두개의 파일을 혼돈하셨을 것 같은데요.
      프로젝트 파일이 저장된 경로를 다시 확인해보시기 바랍니다^^

    13. Blog Icon
      아가머하노

      아 제가 파일명을 잘못썼는데
      AndroidManifest.xml 파일이 계속 다시 생성됩니다.
      Deploy에서 있는 경로에 있는 파일에다가 썼는데도
      자꾸 초기화가 되네요..

    14. Blog Icon
      아가머하노

      하나 더 궁금한건

      XE5사용중인데...IndyFTP를 Android에 올리면 파일을 업로드 및 다운로드가 정상적으로 이뤄지지않고
      에러가 발생합니다. 동일한 소스를 Windows에서 할때는 잘되구요.
      구글링해보니 저와 비슷한경우의 사람을 발견했는데...아쉽게도 답변이 없네요..
      제가 잘못사용하고 있는건지...아니면 IndyFTP 컴포넌트에 버그가 있는건지...

      조언 좀 부탁드리겠습니다.

    15. Blog Icon
      아가머하노

      아 제가 착각했습니다. 감사합니다.^^

    16. Blog Icon
      삽질맨

      스플래시가 잠깐 나왔다가 사라져서..로딩시간이 좀 오래인경우,
      스플래시보여지는 화면의 시간을 길게 늘려서 조정할 수 있는 방법이 있을까요?

    17. 스플래쉬가 나왔다 사라진 것은 이미 앱이 로딩되었다는 의미입니다.
      이런 경우는 앱 실행시(Create, Show) 어떤한 작업을 하기 때문인 것으로 보이는데요.
      FormCreate나 FormShow에는 데이터를 불러오는 등의 오래걸리는 작업을 넣지 않는 것이 좋습니다.
      아래 링크를 참고해서 앱이 완전히 구동된 이후에 오래걸리는 작업을 처리하시면 해결되실것으로 보입니다.
      http://blog.hjf.pe.kr/207

    18. Blog Icon
      옹아

      위 소스로 돌려본 결화 스플래쉬는 잘 작동 됩니다. 스플래쉬가 나왔다 사라지면 앱이 로딩이 되었다고 하셨는데
      기존 앱에 버튼화면만 해서 돌리면 스플래쉬가 나왔다 사라지고 버튼 화면이 나오기 전 검은 화면이 1~2초 남아 있습니다.. 스플래쉬를 사용한 이유가 앱이 구동되기전 검은 화면을 안보이게 하는건데 1~2초 검은 화면은 안드로이드 테마로 스플래쉬 시간은 컨트롤 할수 없는건가요??

    19. Blog Icon
      dskim

      수고 많으십니다.

      스마트폰 델파이 책 1 권, 2 권 감사히 공부하고 있는 델파이 코딩 초보자입니다.

      메인 페이지 띄우기 전에 로고 화면 하나 또는 둘 연달아 띄우고 메인 화면으로 이동 했으면 하는데요

      상기와 같이 안드로이드 구현 한다고 하면,,

      해당 기능을 아이폰에는 동일하게 어떻게 구현 하면 될까요 ?.

      또한 상기 기능을

      "메인폼을 얼리지 않고(Idle 상태) 대기하기.(TStopWatch 활용)" 게시판 부분을 이용하여 구현하는 것도

      가능한 부분인지요 ??

      현재 델파이 코딩 생 초보자입니다.

      자세히 예를들어 설명해 주시면 대단히 감사 하겠습니다.

      오늘도 좋은 하루 되세요.....

    Firemonkey에서 Android Toast Message 사용하기

    2013.12.15 23:54

    Android API를 Firemonkey에서 사용하는 방법을 설명하기 위해 

    Toast Message를 사용하는 방법을 샘플로 만들어 봤습니다.

    (다음 글에서는 컨버팅하는 방법을 설명하겠습니다.)


    아래의 화면과 같이 위치를 지정해서 토스트메시지를 출력하면 Lock걸지 않는 메시지가 나왔다가 사라집니다.

    (아래의 샘플은 100% Firemonkey(delphi)로 만들어 졌습니다.)



    혹시 확인해 보고 싶으신 분은 아래 APK 다운로드 해보세요.^^(당연히 iOS에서는 동작하지 않습니다.)



    토스트 메시지는 아래의 문서를 참고해서 컨버팅 했구요.

    http://developer.android.com/reference/android/widget/Toast.html


    토스트 메시지 위치를 지정하기 위해 아래의 문서도 컨버팅 했습니다.(그냥 상수처리해도 될걸 그랬는데요. 내주말 ㅠㅜ)

    http://developer.android.com/reference/android/view/Gravity.html


    관련된 소스는 아래의 Github사이트를 참고해주세요.(Follow 해주시면 감사하구요^^)

    https://github.com/hjfactory/FMX.Devgear/tree/master/Samples/Android_Toast


    대략 소스는 아래와 같습니다.



    다음 글에서는 안드로이 API를 파이어콩키에서 사용하는 자세한 방법을 설명해 보겠습니다.

    감사합니다.

    저작자 표시 비영리 동일 조건 변경 허락
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    험프리.김현수 험프리.김현수 파이어몽키 android, Converte android to firemonkey, Firemonkey, FMX, toast, Toast Message