블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법

2017.03.20 17:03

S모전자에서 의뢰한 휴대용 바코드 스캐너와 연동한 내용 공유합니다.

휴대용 바코드 스캐너는 JAR 형태의 안드로이드 라이브러리를 제공합니다.

이 과정을 통해 델파이와 안드로이드 라이브러리 연동하는 내용을 소개합니다.


휴대용 바코드 스캐너 연동



위 영상의 휴대용 바코더 스캐너는 클래식 블루투스 기반으로 연결을 제공합니다.

해당 안드로이드 앱은 델파이로 제작했으며, JAR 파일을 이용해 스캐너와 연동합니다.


JAR 파일 연동과정은 아래와 같습니다.

1, 준비(라이브러리 준비 및 분석)

2, 델파이용 안드로이드 라이브러리 브릿지 파일 생성

3, 델파이 프로젝트에 안드로이드 라이브러리 추가

4, 브릿지 파일을 이용해 안드로이드 라이브러리 연동


기타 안드로이드 라이브러리 연동 시 참고사항

델파이 샘플 프로젝트


준비(라이브러리 준비 및 분석)

대상 장비(Point Mobile BI-07)

Point Mobile: BI-07

링크: http://www.pointmobile.co.kr/item.php?it_id=1381210470&ca_id=401010


라이브러리 준비 및 분석

안드로이드와 iOS 라이브러리를 제공합니다.
안드로이드 라이브러리(jar) : 다운로드
라이브러리 관련 문서 및 샘플 : 다운로드

대부분의 라이브러리 제공 시 연동 문서와 샘플코드를 제공합니다.

문서를 잘 숙지하고, 샘플코드를 분석합니다. 대략적으로 소스코드를 파악하되 해당 라이브러리 호출하는 부분은 정확히 숙지해야 합니다.

델파이용 안드로이드 라이브러리 브릿지 파일 생성

델파이에서 안드로이드 라이브러리를 사용하기위해 브릿지 파일을 생성해야 합니다.

브릿지 파일 생성

Java2OP.exe를 이용 델파이 브릿지 파일을 생성합니다. Java2OP는 JAR 파일(*.jar) 또는 Java 소스파일을 호출할 수 있는 델파이 코드를 생성합니다.(참고: 파이어모키에서 외부 라이브러리 연동하기(jar, so, a))

아래 커맨드를 이용해 브릿지 파일(Androidapi.JNI.PM3SDK_BI07.pas)을 생성합니다.
D:\ProjectExt\SamsungElectronics>set path=%PATH%;"c:\Program Files (x86)\Embarcadero\Studio\18.0\bin\converters\java2op"

D:\ProjectExt\SamsungElectronics>java2op -jar .\SDK\PM3SDK_connectByAddress.jar -unit AndroidapiJNI.PM3SDK_BI07
Warning: error opening ReservedWordsOP.txt
Warning: error opening ReservedWordsC.txt
Parsing xml: c:\Program Files (x86)\Embarcadero\Studio\18.0\bin\converters\java2op\bootclasses.xml
Parsing jar: D:\ProjectExt\SamsungElectronics\SDK\PM3SDK_connectByAddress.jar

D:\ProjectExt\SamsungElectronics>

생성된 결과


델파이 프로젝트에 안드로이드 라이브러리 추가

라이브러리 추가

멀티-디바이스 폼 애플리케이션(파이어몽키) 프로젝트에서 대상 플랫폼(Target Platform)을 안드로이드로 설정 후 Libraries 항목에 JAR 파일(안드로이드 라이브러리)을 추가합니다.


델파이 브릿지 파일 추가

해당 라이브러리를 사용하기 위해 델파이 브릿지 파일(Androidapi.JNI.PM3SDK_BI07.pas)을 프로젝트에 추가합니다.

브릿지 파일 확인을 위해 컴파일 합니다.

만약, 컴파일 시 E2029 오류 발생 시 다음을 참고해 조치합니다.

E2029 오류 조치방법

E2029 오류는 예약어를 용도와 다른 곳에서 사용할 경우 발생합니다.

오류가 발생하는 예약어 키워드 앞에 "&"을 추가해 해결합니다.

(예> type -> &type, in -> &in)

(참고: http://tech.devgear.co.kr/delphi_qna/420082)

브릿지 파일을 이용해 안드로이드 라이브러리 연동

라이브러리 연동 문서와 샘플코드를 참고해 기능을 구현했습니다.

그 중 가장 빈번히 사용되는 자바 객체 생성과 처음 구현해본 자바 핸들러 콜백함수 구현, 가장 어렵게 변환했던 자바 오브젝트로 캐스팅된 바이트 배열에서 데이터 가져오기 3가지 내용 소개합니다.

자바 객체 생성

브릿지 파일은 라이브러리에 구현된 클래스 인터페이스가 다음과 같이 구현되어 있습니다.

(BluetoothChatService 클래스)

위와 같이 자바 클래스는 2개의 인터페이스와 1개의 클래스로 정의됩니다.


JBluetoothChatServiceClass 인터페이스는 클래스 함수와 속성, 상수를 제공합니다.(생성하기 전 사용)

JBluetoothChatService 인터페이스는 인스턴스 함수와 속성, 상수를 제공합니다.(생성해서 사용)


델파이에서 자바 객체 생성은 아래와 같이 클래스.JavaClass.Init(파라메터) 형식으로 구현합니다.

var
  FChatService: JBluetoothChatService;
...
  FChatService := TJBluetoothChatService.JavaClass.init(Context, FHandler);

자바 핸들러 콜백함수 구현

바코드 스캐너에서 바코드 데이터 수신은 핸들러의 콜백함수를 통해 받습니다.

그 자바코드는 아래와 같습니다.
private final Handler mHandler = new Handler() {
}

mChatService = new BluetoothChatService(mContext, mHandler);
SendCommand.SendCommandInit(mChatService, mHandler);

델파이에서는 다음과 같이 구현했습니다.

1) 핸들러 콜백함수 정의

type
  THandleMessageEvent = procedure(msg: JMessage) of object;
  TCharServiceHandlerCallback = class(TJavaLocal, JHandler_Callback)
  private
    FOnHandleMessage: THandleMessageEvent;
  public
    function handleMessage(msg: JMessage): Boolean; cdecl;

    property OnHandleMessage: THandleMessageEvent read FOnHandleMessage write FOnHandleMessage;
  end;

주의할 점은, 인터페이스(JHandler_Callback)를 상속받은 메소드(handleMessage)는 public 영역에 구현해야 합니다.

습관적으로 델파이와 같이 private 영역에 선언 시 "Segmentation fault (11)" 오류(잘못된 메모리 영역 참조)로 상당히 고생했습니다.


2) 핸들러, 콜백 객체 생성, 이벤트 연결(OnHandleMessage)

  private
    FHandler: JHandler;
    FCallback: TCharServiceHandler;

  FCallback := TCharServiceHandlerCallback.Create;
  FCallback.OnHandleMessage := ChatServiceHandleMessage;

  Context := TAndroidHelper.Context;
  Looper := TJLooper.JavaClass.getMainLooper;
  FHandler := TJHandler.JavaClass.init(Looper, FCallback);

  FChatService := TJBluetoothChatService.JavaClass.init(Context, FHandler);
  TJSendCommand.JavaClass.SendCommandInit(FChatService, FHandler);

콜백 객체 생성 후 OnHandleMessage 이벤트를 연결해 데이터를 수신합니다.

핸들러 생성 시 콜백 객체를 파라메터로 전달합니다.

핸들러 객체는 BluetoothChatService와 SendCommand 객체 생성 시 파라메터로 전달합니다.


3) 핸들러 콜백과 연결된 이벤트 발생

procedure TPointMobileBluetoothChatService.ChatServiceHandleMessage(
  msg: JMessage);
var
  DeviceName, JData: JString;
begin
  Log.d(msg.what.ToString);
  case msg.what of
  MESSAGE_STATE_CHANGE:
    ProcessHandlerStateChage;
  MESSAGE_BARCODE:
    ProcessHandlerBarcord(msg.obj, msg.arg1);
  MESSAGE_DEVICE_NAME:
    begin
      DeviceName := msg.getData.getString(StringToJString('device_name'));
      Log.d('Device name: ' + JStringToString(DeviceName));
    end;

  // 필요한 이벤트 추가 할 것
  end;
end;

스캐너 라이브러리는 바코드 정보 수신 시 핸들러 콜백과 연결된 이벤트로 데이터를 제공합니다.(이벤트가 발생합니다.)

자바 오브젝트로 캐스팅된 바이트 배열(byte[]) 데이터 가져오기

어디에서도 참고할 내용이 없어 가장 고생했던 내용입니다. 델파이 내부 구조를 분석하고 예측해서 구현했습니다.


자바에서 다음과 같이 오브젝트를 바이트 배열로 치환(캐스팅)하는 코드입니다.

byte[] BarcodeBuff = (byte[]) msg.obj;


델파이에서는 다음과 같이 구현했습니다.

function JObjectToStr(const AJObject: JObject): string;
var
  LObj: ILocalObject;
  ObjID: Pointer;
  JBytes: TJavaArray;
  JData: JString;
begin
  Result := '';

  if JStringToString(AJObject.getClass.getCanonicalName) <> 'byte[]' then
    Exit;

  if AJObject.QueryInterface(ILocalObject, LObj) = 0  then
    ObjID := LObj.GetObjectID
  else
    Exit;

  JBytes := TJavaArray(WrapJNIArray(ObjID, TypeInfo(TJavaArray)));
  JData := TJString.JavaClass.init(JBytes, 0, JBytes.Length);
  Result := JStringToString(JData);
end;

var
  Data: string;
begin
  Data := JObjectToStr(msg.obj);
end;


안드로이드 라이브러리 연동 참고사항

가장 좋은 참고자료는 파이어몽키 소스코드였습니다.


델파이 설치 경로 하위 source 디렉토리에는 파이어몽키 라이브러리 소스코드들이 포함되어 있습니다.(정식 제품의 경우에 한함)


그중 아래 경로의 소스코드들을 참고하시기 바랍니다.(Delphi 10.1 베를린 버전 기준)


안드로이드 SDK 브릿지 파일들

안드로이드 SDK 델파이 브릿지 파일이 포함되어 있습니다. 자바 소스코드의 객체이름을 다음 경로의 소스코드들에서 찾아 필요한 경우 uses 절에 추가 후 사용합니다.

C:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\android

파이어몽키 라이브러리

다음 경로 중 FMX.AddressBook.Android.pas과 같이 Android가 포함된 파일들을 참고하기 바랍니다.

위 안드로이드 SDK 브릿지 파일들을 이용한 코드들로 구현되어 있습니다.

C:\Program Files (x86)\Embarcadero\Studio\18.0\source\fmx



델파이 샘플 프로젝트


기타 궁금한 내용은 댓글 또는 http://blog.hjf.pe.kr/452의 댓글을 참고하거나 등록해주세요.

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

험프리.김현수 험프리.김현수 Firemonkey/기능제어 FMX, JNI, PointMobile, 바코드스캐너, 안드로이드

[XE7] 안드로이드 블루투스 활성화 조회와 설정하기

2015.02.12 09:39

일본인 개발자인 山本隆(야마모토 타카시)의 글을 참고해 안드로이드에서 블루투스 활성여부 조회와 설정하는 내용을 공유합니다.

블루투스 활성여부 조회

uses
  Androidapi.JNI.Bluetooth;

procedure TForm2.Button1Click(Sender: TObject);
var
  Adapter: JBluetoothAdapter;
begin
  Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
  if Adapter.isEnabled then
    ShowMessage('Bluetooth가 활성화 되어있습니다.')
  else
    ShowMessage('Bluetooth가 활성화 되지 않았습니다.');
end;

블루투스 활성화 설정

uses
  Androidapi.JNI.Bluetooth;

procedure TForm2.Button2Click(Sender: TObject);
var
  Adapter: JBluetoothAdapter;
begin
  Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
  if Adapter.enable then
    ShowMessage('Bluetooth를 활성화합니다.')
  else
    ShowMessage('사용할 수 없습니다.');
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Adapter: JBluetoothAdapter;
begin
  Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
  if Adapter.disable then
    ShowMessage('Bluetooth를 비활성화합니다.')
  else
    ShowMessage('사용할 수 없습니다.');
end;

블루투스 권한이 있는지 확인

uses
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText;

procedure TForm2.Button3Click(Sender: TObject);
  function HasPermission(const Permission: string): Boolean;
  begin
    Result := SharedActivityContext.checkCallingOrSelfPermission(StringToJString(Permission)) = TJPackageManager.JavaClass.PERMISSION_GRANTED
  end;

begin
  if HasPermission('android.permission.BLUETOOTH') then
    ShowMessage('Bluetooth 통신 권한이 있습니다.')
  else
    ShowMessage('Bluetooth 통신 권한이 없습니다');

  if HasPermission('android.permission.BLUETOOTH_ADMIN') then
    ShowMessage('Bluetooth 설정 수정 권한이 있습니다.')
  else
    ShowMessage('Bluetooth 설정 수정 권한이 없습니다.');
end;

  • 블루투스 관련 권한(Project Options > Uses Permissions)이 필요합니다.
    • Bluetooth
    • Bluetooth admin

샘플프로그램 다운로드

ProjectSetBluetooth.zip

참고 글


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

험프리.김현수 험프리.김현수 Firemonkey/기능제어 XE7, 블루투스, 안드로이드

[XE7] 안드로이드 L 스타일팩 다운로드

2015.01.23 11:07

최근 안드로이드 L(롤리팝: 5.0)을 적용한 스마트폰이 나오고 있습니다.


엠바카데로에서도 안드로이드 5.0 지원을 위해 핫픽스를 배포하고 안드로이드 L에 맞는 스타일팩을 배포합니다.


안드로이드 L 스타일팩 활용방법은 Sarina DuPont의 글을 참고하기 바랍니다.

관련 글



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

험프리.김현수 험프리.김현수 Firemonkey/UI / UX / 디자인 XE7, 롤리팝, 스타일, 안드로이드, 안드로이드 L

안드로이드에 설치된 앱 목록(AppList)을 표시하는 앱(소스코드 공개)

2015.01.13 12:05

안드로이드 디바이스에 설치된 앱을 빠르게 찾아 실행할 수 있는 안드로이드 앱의 소스코드를 FMXExpress.com에서 공개하였습니다.


해당 앱은 설치된 앱 목록을 표시하고, 항목 선택 시 앱을 실행합니다. 그리고, 검색창을 통해 키워드로 필터링해 빠르게 앱을 검색할 수 있습니다. 기존에는 안드로이드 디바이스에서 페이지 단위로 넘겨가며(Swipe) 앱을 찾던 수고를 크게 줄일 수 있습니다.


이 앱에서는 다음의 기술을 학습할 수 있습니다.

  • 설치된 앱 목록 조회하기
  • 설치된 앱의 아이콘 가져오기
  • 앱 실행(앱의 패키지명, 앱이름으로)
  • ListView 필터링 하기




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

험프리.김현수 험프리.김현수 Firemonkey/참고소스 oDesk, 안드로이드

[XE7] 안드로이드 4.4 스타일의 대화상자 사용하기

2015.01.07 10:04

델파이를 이용해 안드로이드 앱개발 시 기본 대화상자(Dialog)는 안드로이드 2.3 버전으로 표시됩니다.

이 이슈는 엠바카데로 커뮤니티 3.0 사이트에 등록되었으며 David I가 직접 답변을 달고 해결방안을 소개했습니다.


결과 적으로 FMX.Helper.Android.pas 유닛의 GetNativeTheme 함수를 수정해 해결할 수 있습니다.

(변경된 소스 적용은 프로젝트에 수정한 파일을 추가해서 간단히 해결할 수 있네요.)



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

험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 XE7, 델파이, 안드로이드

[앱 소개] 파생 플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) - Delphi XE7/안드로이드

2015.01.06 16:23


(2015년 첫번째 글입니다. 제가 부끄러움이 많아 블로그에서 정보만 전달했는데요. 은근슬쩍 신년인사드립니다. 블로그에 오시는 분들과 델파이, C++빌더, 앱메소드 개발자 분들 모두모두 새해 복 많이 받으세요.^^)


이번 글에서는 피터주혁(데브기어 테크게시판 별칭)님이 개발하신 파생플러스(KOSPI선물 / 해외선물 모의투자 HTS 시스템) 앱을 소개합니다.


이 앱은 델파이 XE7으로 개발되어 안드로이드 마켓에 공개되었습니다. 아래 링크 방문하셔서 다들 다운로드 한번 받아주세요.(이런말은 본인이하기 어려우니 제가 대신 해드립니다.^^)


HTS 시스템의 경우 이미 PC 기반에서 델파이의 강세를 나타내는 영역인데요. 모바일에서도 다시 강세를 나타내는 신호탄이 되길 바라겠습니다.(기회가 되신다면 iOS 앱 스토어도 올려주시면 더 좋겠습니다^^)


앱에 대한 소개를 좀 더 해드리면(사실, 제가 주식을 할줄 모릅니다...)

국내 선물 및 해외선물(호주달러, 캐나다달러, 유로FX, 파운드선물, 크루드오일, S&P 500)을 거래할수 있는 무료 모의 투자 서비스입니다. 모의투자에서 연습 매매후 실전 매매에서 성공투자 하세요.

이라고 합니다.^^


그리고, 사용자 의견을 보니 아직 많지는 않지만 전반적으로 편리하고, 좋다는 의견이 다수입니다.(평점 4.8)


마지막으로, 앱을 설치하며 보인 사소한 의견 몇가지 드립니다^^

  • 사용권한은 꼭 필요한 항목만 선택하기 바랍니다. - 통화, 카메라등의 권한을 선택하면 해당 기능이 없는 디바이스는 해당 앱을 다운로드 받을 수 없습니다. 꼭 필요한 권한만 선택하시기 바랍니다.
  • 앱의 아이콘은 PNG-투명이미지으로 사용하면 원형아이콘의 흰바탕 없이 더 깔끔하게 표현할 수 있을 것 같습니다.
PS - 
개발한 앱을 마켓에 등록하시거나, 홍보가 필요하시면 제 블로그 또는 데브기어 테크게시판으로 알려주시면 소개해 드리겠습니다. 많이 올려주세요.

관련 글



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

험프리.김현수 험프리.김현수 기타정보 XE7, 델파이, 안드로이드

커스텀 폰트 배포와 사용하기(Android/iOS)

2014.12.22 10:28

커스텀 폰트를 배포하고 사용하는 방법을 안내하는 글이 있어 소개합니다.

배포기능을 이용해 폰트를 배포하고 플랫폼 별로 배포된 폰트를 사용하도록 설정할 수 있습니다.

(점점 다양한 종류의 아티클들이 나오고 있어 반갑네요^^)




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

험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 Firemonkey, ios, 안드로이드

안드로이드 5.0(Lollipop)에서 실행 시 오류대응 방법

2014.12.03 10:02

안드로이드의 새로운 운영체제인 롤리팝에서 앱 실행 시 스플래쉬 이미지 이후 예외가 발생해 앱이 정상 구동되지 않는 이슈가 발생하고 있습니다.


간단하게 안내해 드리면

안드로이드 5.0(롤리팝)에서 앱 구동 시 EBitmapLoadingFailed 오류가 발생합니다. 해당 오류는 *.fmx에 포함된 TBitmap 데이터를 LoadFromStream으로 읽어 올때 발생하는 것으로 보이며, 해결 방안은 Image등의 컴포넌트에 등록된 이미지를 파일로 배포 후 동적으로 읽어 들이는 방법으로 해결할 수 있습니다.


아래 원문에서는 위 작업을 자동화 할 수 있는 팁과 관련 소스를 제공하며, 더 자세한 내용을 확인할 수 있습니다.

(이탈리아어 이므로 구글 번역기를 통해 번역해서 보시기 바랍니다.)

참고 글

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

험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 EBitmapLoadingFailed, 롤리팝, 안드로이드

[XE7] 자체적으로 원격푸쉬알림(GCM, APN) 전송 구현방법

2014.12.03 09:43

스페인의 델파이 개발자(fgonzalez.visiblogs.com/)가 자체적으로 원격푸쉬 알림 기능을 구현한 동영상을 소개합니다.


RAD Studio에서 원격 푸쉬 알림(Remote Push Notification)을 구현하기 위해서는 XE6 버전에 추가된 BaaS 클라이언트 컴포넌트를 통해 가능했는데요. 

이 동영상에서는 IdHttp(안드로이드), TCPClient(iOS) 컴포넌트 등을 활용해 푸쉬 메시지를 전송하고, System.PushNotification 클래스를 활용해 푸쉬 메시지를 수신하는 내용을 소개합니다.


동영상은 스페인어로 이야기를 합니다. 팁을 드리면 유투브의 자막을 한국어로 설정하고 화면과 코드위주로 보시면 충분히 이해할 수 있습니다.


참고 글


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

험프리.김현수 험프리.김현수 Firemonkey/기능제어 APN, Firemonkey, gcm, ios, push, Remote Push Notification, 안드로이드

  1. Blog Icon
    석만근

    와우 감사합니다.
    전 서버를 웹페이지로 구현하고 Post방식으로 날렸는데 바로 날리네요;; 구글로 ㅎㅎ
    그리고 왠지 될것 같은데.... 당채 말을 알아들을수가 없네요
    감사합니다. 도움이 많이 될듯합니다.

  2. 그래도 개발자들에게는 코드가 있어 위안이 됩니다^^
    시도해 보시고 팁될만한 것 있으면 공유해주세요.
    감사합니다.^^

  3. Blog Icon
    오진성

    감사합니다 ^^
    잘되네요 근데 궁금증이있는데요
    message를 한글로 보내면 한글이 깨져서 나오든데 ... 어떻게 해결해야하나요 ?

  4. Blog Icon
    정상언

    한글 깨지는 분 저도 고생 좀 했는데
    AData := TStringStream.Create(AJson.ToString) 이부분을

    다음 처럼 하면 되네요
    AData := TStringStream.Create(AJson.ToJSON);

  5. Blog Icon
    키위

    영상을 통해 푸쉬 메세지 전송에 성공 했습니다.
    그런데 푸쉬를 여러개 받으면 받은만큼 아이콘과 알림이 생기는데
    이걸 어떻게 아이콘 하나에 "x개 메세지"로 만들수 있을까요?...
    여기저기 검색을 해봐도 통.. 찾을 수가 없네요.
    보내는놈, 받는놈, manifest file, 서비스.. 어디를 건드려야 하는지도 감이 안잡히네요.ㅡㅡ

  6. Blog Icon
    난다요

    푸시연구 중인데 도저히 모르겠어서 질문올립니다.

    여기 홈페이지에서 동영상 보면서 만들고 있는데요

    다른건 다 이해가 가는데

    DeviceToKen := '';

    이 디바이스토큰값을 어디서 가져오는지 모르겠습니다.

    혹시 아시는분은 자세히 설명좀 부탁드립니다. ㅜㅜ

  7. Blog Icon
    하이요

    종료시에 push를 받고싶은데
    그럴려면 안드로이드 스튜디오의 경우 gradle 파일을 수정하던데...
    델파이에서는 어떻게 해야하나요?

  8. 다음글을 참고해 종료 이벤트를 감지해보세요.
    WillTerminate 이벤트에 푸쉬를 발생하세요.
    http://blog.hjf.pe.kr/114

    푸쉬를 발생하는 내용은 아래 링크를 참고하세요.
    http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mobile_Tutorial:_Using_Notifications_(iOS_and_Android)

파이어몽키 안드로이드 네이티브 컴포넌트(오픈소스) - DPF

2014.12.01 10:42

파이어몽키 멀티-디바이스 앱 개발의 장점은 하나의 소스코드로 여러개의 플랫폼을 개발할 수 있다는 것입니다.

그리고, 또다른 장점은 필요한 경우 네이티브 API와 SDK를 사용할 수 있다는 장점도 있습니다.


위 장점을 최대한 활용한 오픈소스 프로젝트를 소개합니다.

이 오픈소스 프로젝트에서는 안드로이드 네이트브 기능(SDK, API)를 이용해 네이티브 UI와 기능을 갖는 컴포넌트를 제공합니다.

만약, 안드로이드 전용 앱을 만드는 경우 해당 오픈소스를 활용한다면, 기본 컴포넌트 외에도 더 풍부한 컴포넌트를 이용해 앱을 만들 수 있습니다.


Some components:
+ Added TDPFJAlertDialog
+ TDPFJAnalogClock
+ TDPFJButton
+ TDPFJCheckBox
+ TDPFJChronometer
+ TDPFJDatePicker
+ TDPFJDatePickerDialog
+ TDPFJEditText
+ TDPFJImageView
+ TDPFJListView (not completed)
+ TDPFJProgressBar
+ TDPFJProgressDialog
+ TDPFJTextView
+ TDPFJTimePickerDialog
+ TDPFJToast
+ TDPFJView
+ TDPFJRadioButton
+ TDPFJNumberPicker
+ TDPFJSeekBar
+ TDPFJTabHost Component (Tabbed view)
+ TDPFJSpinner Component (Dropdown list)
+ TDPFJTextSwitcher Component (Fade/Slide Texts)
+ TDPFJTextClock
+ TDPFJWebView


그리고, XE5 부터 꾸준히 업그레이드를 제공하고 있는 것도 큰 장점으로 꼽을 수 있습니다.


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

험프리.김현수 험프리.김현수 Firemonkey/컴포넌트 dpf, 네이티브, 안드로이드, 컴포넌트

안드로이드 SMS 목록 얻어오기(샘플)

2014.07.14 09:20

러시아의 델파이 개발자가 안드로이드의 SMS 목록을 얻어오는 샘플을 공개했습니다.

해당 블로그를 보니 안드로이드 관련된 아주 다양한 정보들이 있네요. 한번 살펴보시면 많은 도움이 되실 듯 합니다.

단, 러시아어로 되어 있어 구글 자동번역기를 이용하면 될 것 같습니다.



참고



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

험프리.김현수 험프리.김현수 Firemonkey/기능제어 Firemonkey, SMS, 샘플코드, 안드로이드

안드로이드에서 ShowModal 사용하기

2014.07.07 09:41

안드로이드에서는 모달폼 개념이 없어 기존에 사용하던 VCL 코드를 그대로 사용할 경우

예상과는 다르게 모달폼이 동작하지 않습니다.


안드로이드에서는 다르게 모달폼을 구현해야 하는데 그 내용을 안내해 드립니다.

주요한 핵심은

  • ShowModal과 익명 메소드(Anonymous Mehtod)를 이용할 것
  • 모달폼의 해제(Free)는 반드시 폼의 FormClose 이벤트에서 CloseAction을 사용해서 해제할 것

다른 내용은 아래의 링크를 통해서 자세히 알아보세요.





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

험프리.김현수 험프리.김현수 Firemonkey/팁과 정보 showmodal, 안드로이드

파이어몽키 안드로이드 SDK Full Wrapper 파일

2014.05.21 11:32

RAD Studio XE7 에서는 Java2OP라는 이름으로 자바라이브러리를 델파이 브릿지 파일로 컨버젼하는 툴을 기본 제공합니다.

 - http://blog.hjf.pe.kr/268


아래 글은 XE6 이전 버전 사용자들이 참고할 수 있습니다.


파이어몽키 자료가 상당히 풍부한 FMXExpress(http://www.fmxexpress.com)에서 안드로이드 SDK 전체를 Object Pascal(Delphi)로 변환한 소스코드를 공개했습니다.

파이어몽키로 개발할 경우 제공되는 컴포넌트와 라이브러리 외에도 네이티브 SDK를 직접 제어할 수 있는데요. 그러기 위해서는 안드로이드 SDK를 오브젝트 파스칼에서 사용할 수 있도록 변환(Wrapping)하는 작업이 선행되어야 합니다.

FMXExpress에서는 Java2Pas(http://www.softwareunion.lu/en/downloads/)툴로 안드로이드 소스코드를 Object Pascal로 컨버팅 진행했습니다.



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

험프리.김현수 험프리.김현수 Firemonkey/기능제어 SDK, 안드로이드, 파이어몽키

  1. Blog Icon
    에우로카엘

    참고들 하세요.

    uses 구문 때문에 circle error많이나서 하나하나 다 손봐줘야하고,

    xe6에선 androidapi.helpers에 jstring 변환함수 들어가있는데 xe5에 맞춰져있는 것 같네요.

C++빌더 안드로이드 지원 월페이퍼

2014.04.17 10:32


C++ 빌더에서 안드로이드 지원을 축하하는 월페이퍼입니다.




이건 XE5에서 델파이가 안드로이드 지원을 기념한 월페이퍼

참고링크



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

험프리.김현수 험프리.김현수 RAD Studio 정보 C++Builder, 안드로이드

모바일개발 심화

2014.02.06 01:07



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


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

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


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


공통기능

    Android 특화기능

    ▶ Android API 접근

    iOS 특화기능

    ▶ 외부 서비스 연동

    참고정보

    ▶ 공개 소스

    추가자료


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

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

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

    2. Blog Icon
      반벽이

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

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