본문 바로가기

FMX

[FMX] RAD 스튜디오 10.3.1에서 FCM 전송 설정하기 이 글은 Marco Cantu가 작성한 Firebase Android Push Notification Support with RAD Studio 10.3.1의 의역입니다. 구글은 다음과 같이 발표했습니다. "GCM 서버와 클라이언트 API는 지원중단하며, 2019년 5월 29일에 삭제될 예정입니다. 안정적이고 확장가능한 GCM 인프라 및 많은 새로운 기능을 계승한 Firebase Cloud Messaging(FCM)으로 GCM 애플리케이션을 전환하십시오." 앞으로 파이어몽키 안드로이드 앱에서 푸시 알림 지원을 사용하려면, 구글의 Firebase를 사용해야 합니다. 이 글에서는 Delphi, C++Builder 및 RAD 스튜디오 10.3.1을 사용해 파이어몽키 안드로이드 앱에서 Firebase 푸시 알림.. 더보기
[FMX] 안드로이드 권한 모델 적용 방법 파이어몽키로 안드로이드 앱 개발 시 장치에 접근하는 기능(예, 카메라 이용, 블루투스 이용 등) 개발 시 권한 설정이 필요합니다. 기존에는 Project > Options > Uses Permissions에서 필요한 권한을 설정하는 방식이었지만, 안드로이드 API 최신버전은 런타임 시 권한을 요청하는 매커니즘으로 변경되었습니다. 기존의 권한 모델은 설치 시 전체 권한을 승인하는 방식이었습니다. 새로운 권한 모델은 기능 사용 시 개별 권한을 묻는 방식으로, 사용자는 기능 별 허용 및 거부가 가능해졌습니다. 기존 권한 요청 방식 새로운 권한 요청 방식 새로운 권한 요청 방식은 RAD 스튜디오 10.3 부터 적용되며, 기존에 작성했던 안드로이드 프로젝트는 권한 요청하는 로직을 추가하도록 업데이트 해야 합니다... 더보기
블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법 S모전자에서 의뢰한 휴대용 바코드 스캐너와 연동한 내용 공유합니다.휴대용 바코드 스캐너는 JAR 형태의 안드로이드 라이브러리를 제공합니다.이 과정을 통해 델파이와 안드로이드 라이브러리 연동하는 내용을 소개합니다. 휴대용 바코드 스캐너 연동 위 영상의 휴대용 바코더 스캐너는 클래식 블루투스 기반으로 연결을 제공합니다.해당 안드로이드 앱은 델파이로 제작했으며, JAR 파일을 이용해 스캐너와 연동합니다. JAR 파일 연동과정은 아래와 같습니다.1, 준비(라이브러리 준비 및 분석)2, 델파이용 안드로이드 라이브러리 브릿지 파일 생성3, 델파이 프로젝트에 안드로이드 라이브러리 추가4, 브릿지 파일을 이용해 안드로이드 라이브러리 연동 기타 안드로이드 라이브러리 연동 시 참고사항델파이 샘플 프로젝트 준비(라이브러리 .. 더보기
앱 완전 구동 후 작업 수행 하기(라이프 사이클 이벤트 / 타이머 이용) 앱에서 초기화 작업을 FormCreate(또는 FormShow)에서 하게되면 구동시간이 길어지고, 오류가 발생하는 경우 앱이 정상구동되지 않을 수(검은화면만 표시) 있습니다. 그렇기 때문에 앱이 완전 구동된 이후에 초기화 작업을 진행하도록 하기 바랍니다.앱 완전 구동 후 동작하기 위해서는 아래와 같은 2가지 방법이 있습니다.모바일 앱 라이프 사이클 이용하기타이머를 이용해 구동 이후 이벤트 받아 처리하기모바일 앱 라이프 사이클 이용하기모바일(안드로이드, iOS)는 라이프 사이클 이벤트를 제공합니다.(http://blog.hjf.pe.kr/114 참고)아래 코드를 참고하기 바랍니다.unit Unit1; interface uses System.SysUtils, System.Types, System.UIType.. 더보기
Instagram Filter 효과와 같은 앱(소스 포함) 인스타그램 앱과 같이 사진에 다양한 필터를 적용하는 앱에 대한 소스코드가 공개되 었습니다.아시다 시피 파이어몽키에는 60여종의 다양한 이펙트(TEffect)가 제공(62개의 파이어몽키 이미지 효과(Effects))됩니다. 이펙트를 이용해 아주 쉽게 위와 같은 동작을 하는 앱을 만들 수 있습니다. 간단한 구현 원리를 추가하면, 첫번째 탭에서 원본이미지에 TSelection 컴포넌트를 올리고 영역을 지정합니다.두번째 탭에서 상단의 이미지에 앞에서 선택한 영역의 이미지를 표시하고, 아래에는 다양한 효과(TEffect)가 적용된 이미지를 놓고, 이미지 선택 시 TFilterEffect.ProcessEffect 메소드를 적용합니다.세번째 탭에서는 이펙트가 적용된 이미지를 ActionList의 ShowShareSh.. 더보기
Sheet Animation 컴포넌트(움직이는 캐릭터 컴포넌트) 소개 안녕하세요. 험프리.김현수입니다. 오늘은 필요할듯 말듯한 캐릭터 애니메이션 컴포넌트 하나 소개합니다. TSprite라는 컴포넌트인데요. 오른쪽처럼 사용됩니다.동작원리는 한장의 이미지에서 영역을 이동하며 화면에 출력하는 방식입니다. 일반적으로 캐릭터 애니메이션이 게임같은 곳에서 많이 사용되는데요. 제가 생각하기론 앱의 기능을 소개하는 부분이나 움직이는 이모티콘 등에 활용한다면 앱의 완성도를 높이고, 풍부한 기능구현이 가능 할 것 같습니다. 오른쪽의 데모는 소스코드에 포함된 데모이구요. 뒤집기, 회전, 반전, 반복등의 기능을 자체 제공하고 있습니다. 아래와 같은 이미지가 순차적으로 표시됩니다. 컴포넌트를 다운로드 받으면 소스가 포함되어 있어 어떤식으로 구현되어 있는지 확인하실 수 있어 도움이 되실 것 같습니.. 더보기
RESTful 웹서비스 연동(Rest Client 소개) 현재 대상 서비스(discogs.com)에 인증 인터페이스가 추가되어 예제를 따라하면 인증오류가 발생합니다. 하지만 이 글을 통해 REST Client의 개념을 잡는데 도움이 될 것입니다. 인증과정은 다음 글을 참고해 직접 구현해 보시기 바랍니다. - OAuth 2.0 연동 - 카카오 API(카카오톡 프로필) 안녕하세요. 험프리.김현수입니다. 모바일 개발 세미나 및 자료들에서 원격 데이터 연결 시 DataSnap을 강조하다 보니 원격지 데이터 연결 시 DataSnap만 써야 되는 것으로 오해가 종종있어, 기존 구성된 사이트에 RESTful(Http 요청)방식으로 연결하는 방법을 소개합니다. 여지껏 원격지 데이터를 받아오기 위해 일반적으로는 IdHttp 컴포넌트를 이용해 Get(또는 Post)하여 Resp.. 더보기
Firemonkey에서 Android Toast Message 사용하기 Android API를 Firemonkey에서 사용하는 방법을 설명하기 위해 Toast Message를 사용하는 방법을 샘플로 만들어 봤습니다. (다음 글에서는 컨버팅하는 방법을 설명하겠습니다.) 아래의 화면과 같이 위치를 지정해서 토스트메시지를 출력하면 Lock걸지 않는 메시지가 나왔다가 사라집니다. (아래의 샘플은 100% Firemonkey(delphi)로 만들어 졌습니다.) 혹시 확인해 보고 싶으신 분은 아래 APK 다운로드 해보세요.^^(당연히 iOS에서는 동작하지 않습니다.) 토스트 메시지는 아래의 문서를 참고해서 컨버팅 했구요. http://developer.android.com/reference/android/widget/Toast.html 토스트 메시지 위치를 지정하기 위해 아래의 문서도.. 더보기
[FMX] 다이나믹한 UI 효과 - Float animation effect 대부분의 분들은 파이어몽키로 멀티플랫폼 지원을 위한 개발을 생각하고 계실텐데요.파이어몽키는 멀티플랫폼 기능외에도 다양한 기능이 포함되어 있습니다. 대표적으로 3D 효과 및 벡터형식의 부드러운 출력, RoateAngle 및 Scale 등의 신규 속성 등이 추가되었습니다. 오늘은 새로운 기능 중 하나인 FloatAnimation에 대해 소개하려 합니다. FloatAnimation은 단어 그대로 Float을 Animation하는 놈입니다. 좀 더 자세히 설명하면, 지정한 Start와 Stop에 해당하는 Float 값사이를 지정된 시간(Duration)에 맞춰 다양한 효과(Interpolation: 보간)로 값을 변경하는 놈입니다. 우선 샘플을 보시면 아래의 영상은 마우스 휠(업/다운) 시 마우스 주변에 효과를.. 더보기
[FM2] XE3.FM2에서 Control을 Bitmap으로 내보내기 및 Bitmap.Pixels 사용하기 Firemonkey2로 버전업 된 후로 참 많은 것이 변했습니다. TControl은 말할 것도 없고 TBitmap도 많은 내용이 변했네요. Unit test에서 특정 Pixel의 색상을 얻어오고자 할때 기존 Bitmap.Pixels이 없어진 것을 확인 후 깜짝 놀랐습니다. 자... 그럼 제가 삽질로 얻어온 내용을 공유하도록 합니다. | Control을 Bitmap(TImage)으로 내보내기 var Bitmap: TBitmap; Map: TBitmapData; begin Bitmap := TBitmap.Create(Round(Panel1.Width), Round(Panel1.Height)); try Bitmap.Canvas.BeginScene; // Bitmap으로 내보내기 Bitmap.Assign(Pan.. 더보기
[FMX] Firemonkey 구조 - 어떻게 하나의 코드로 여러 플랫폼에서 실행 될까? 이번에는 이리저리 파이어몽키 소스 보며 익혔던 간단한 구조에 대해 설명하려 합니다.(딱, 제가 아는 만큼만 소개합니다.^^) 파이어몽키는 멀티 플랫폼을 지원하는 델파이 프레임웤 입니다.어떻게 파이어몽키는 하나의 소스로 여러개의 플랫폼을 지원할까요?여러개의 플랫폼을 지원하는 열쇠는 FMX.Platform.pas의 Platform: TPlatform에 있습니다. (C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\fmx에 소스파일이 있습니다.) FMX.Platform의 TPlatform 클래스를 보시면 대부분(거의 다)이 추상메소드(virtual; abstract;) 입니다. 구현이 안되어 있다는 것이죠.그리고 메소드명이 상당히 플랫폼에 종속적인 냄새를 풍.. 더보기
[FMX,VCL 비교] #1 VCL의 Canvas와 FMX의 Canvas 차이 파이어몽키로 작업하다보면 VCL과의 차이점으로 어려움을 겪는 경우가 많습니다. 그동안 작업하며 습득한 차이점을 한가지한가지 풀어놓으려 합니다.그중 첫번째 Canvas 입니다.일반적으로 TImage에 Drawing을 하는 예제로 구성하였습니다. VCL과 FMX의 동일한 기능을 구현했으니 비교해 보시면 좋을 것 같습니다.FMX 코딩시 주의점1, TImage.Picture.Bitmap => TImage.Bitmap : VCL의 Picture 객체가 빠졌습니다.2, Bitmap.Canvas.BeginScene ~ EndScene, Bitmap.BitmapChange : Canvas에 그리기고 화면에 표시하기 위한 절차입니다.3, Brush => Fill, Pen => Stroke 등으로 속성들이 약간씩 변했습니.. 더보기