Windows開発者のためのFireMonkeyモバイル開発入門

Similar documents
「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

25th Developer Camp

25th Developer Camp

脱Windows XPから一気にマルチデバイス対応を目指す実践テクニック

新バージョンDelphi/400 XE7ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! -

「基礎から学ぶビジュアルAndroidアプリ開発 今日からあなたもAndroidデベロッパー」

PowerPoint プレゼンテーション

25th Developer Camp

マルチデバイス開発を強化するエンバカデロのRADテクノロジー

28th Embarcadero Developer Camp

21st Embarcadero Developer Camp T9

f5

楽2ライブラリ Smart

【別冊】FENICS II ユニバーサルコネクト デバイス証明書認証サービス 接続確認機器

20th Embarcadero Developer Camp

Windowsユーザでも 手軽に作れるiPhoneアプリ

20th Embarcadero Developer Camp

ミガロ.製品 最新情報

PowerPoint プレゼンテーション

「DataSnapユースケース研究」 多層技術の概要と最適化、実践テクニック

Notesアプリが iPadで動くDomino Mobile Apps ご紹介

Release Notes

iOS/Androidネイティブアプリケーション入門―マルチデバイス開発手法から社内配布

Delphi/400 XE5 -こんなに簡単!IBM iスマートデバイスネイティブ開発-

24th Developer Camp A4

Magic Desktop

TeleOffice 3.7

スマートフォンサイトのためのHTML5+CSS3 お試し版

PowerPoint プレゼンテーション

Embarcadero Developer Camp

ステップアップ! モバイルアプリケーション開発

PowerPoint プレゼンテーション

【別冊】FENICS II ユニバーサルコネクト スマートフォン・PC接続サービス 接続確認機器

Cisco Meraki ios Android Web 1 1 BYOD Apple iphone CISCO MERAKI Mac Windows Windows Active Directory GPO Cisco Meraki IT Windows Mac Windows MSI Mac P

7th CodeGear Developer Camp

CodeGear Developer Camp

スライド 1

Bluetooth MIDI 接続ガイド

25th Developer Camp

Microsoft Word - Android_仮想デバイスマネージャーの使い方

この 講 座 で 学 ぶこと Webサイト 制 作 に 関 わるスマートフォ ン/タブレットの 仕 様 2

24th Embarcadero Developer Camp

目次 1 サービス概要 3 あんしんフィルター for auとは 4 動作環境 5 2 利用開始 6 アプリをインストールする 7 サービスを開始する 8,9 あんしんフィルター for au アプリアイコンの移動 10 3 設定変更 11 管理者を登録する 12 管理者画面を表示する 13 管理す

Qlik Sense のシステム要件

Soliton Net’Attest EPS + AT-TQ2400 series WPA/WPA2-Enterprise EAP-PEAP/TLS 設定例

Qlik Sense のシステム要件

Visual Studio with Cordova クロスプラットフォーム開発の全貌

スライド 1

28th Embarcadero Developer Camp

25th Developer Camp

Android アプリを作るための環境設定 Android アプリを作るのに必要なものは Android SDK と Java 開発環境の Eclipse です 環境設定作業の概要はまず Android SDK と Eclipse をそれぞれインストールします その後 Eclipse を起動し An

WSMGR for Web External V7.2 L50 ご紹介

6 接続の使用準備ができました 画面が表示されます 閉じる をクリックします 認証に事前共有キーを使う の キー に リモートアクセス接続用シークレットキー を入力後 OK をクリックします 今すぐ接続します はクリックしません. アダプターの設定 (Window 7) コントロールパネル - ネッ

目次 1 サービス概要 3 安心アクセス for Android とは 4 動作環境 5 2 利用開始 7 サービスを開始する 8 3 設定変更 9 管理者を登録する 10 管理者画面を表示する 11 管理するスマートフォンに名前をつける 11 安心アクセスが正常に動作していない場合にメールで通知す

Delphi/400活用! スマートデバイスアプリケーション開発

ios 12, Android 9 時代の 今からでも始められるモバイル開発入門 第 36 回エンバカデロ デベロッパーキャンプ 株式会社シリアルゲームズ取締役 / AppDiv3 マネージャー細川淳 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

Macintosh

初 めての ios アプリケーション iphone Form TLabel TButton. 図. コントロールの 配 置 Button OnClick Button. 00

実行か保存の確認が表示されたら 実行 をクリックしてダウンロードを開始します ダウンロード完了後 インストーラが起動してインストールが始まります 保存した後に実行してインストールしても構いません ユーザーアカウント制御による実行の警告が表示されたら はい をクリックしてインストールを続行して くださ

REX-USB56 「FAX送信」編 第6.0版

home-unit2_quickguide_ras_v1.1

目次 1 サービス概要 3 あんしんフィルター for auとは 4 動作環境 5 2 利用開始 6 アプリをインストールする 7 サービスを開始する 8,9 あんしんフィルター for au アプリアイコンの移動 10 3 設定変更 11 管理者を登録する 12 管理者画面を表示する 13 管理す

1. はじめに 1.1. Office365 ProPlus ライセンスについて 九州産業大学に在籍中の学生 教職員の方は Office365 ProPlus のライセンスを 1 つ保持しています 1 つの Office365 ライセンスで Office365 ProPlus( 最新版の Offic

NFC EXPRESS ASUS NFC Express は Windows 8 対応の外付けデバイスです NFC 対応のスマートデバイス または付属の NFC タグをタッチするだけで 簡単に様々なアクションを実行することができます NFC Express をインストールする NFC Experss

クイックセットアップ for モバイル(iOS/Android)

【エニークラッチ】:AnyClutch Remote 製品概要&価格

Delphi/400開発ノウハウお教えします 情報を守ろう!安全性を高めたWebシステムの構築

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

Macintosh

10th Developer Camp - B5

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

2. 生田仮想デスクトップ PC の接続方法 生田仮想デスクトップ PC に接続する方法は 次の 2 通りです 1. HTML アクセス Internet Explorer や Safari などのブラウザを用います PC に特別なソフトウェアをインストールす る必要が無いので 管理者権限をもってい

2. 生田仮想デスクトップ PC の接続方法 生田仮想デスクトップ PC に接続する方法は 次の 2 通りです 1. HTML アクセス Internet Explorer や Safari などのブラウザを用います PC に特別なソフトウェアをインストールす る必要が無いので 管理者権限をもってい

自宅でJava言語の開発環境を作る方法

システムご紹介の背景 会議で使う資料の作成 大量のカラー印刷 資料綴じ込み 機密資料の回収 シュレッダー 時間 と コスト の無駄ばかり ペーパーレス化から省エネを実践しましょう 導入費は安く抑えたい! 維持費も安く抑えたい! 社内のネットワーク環境で使いたい! 余計な機能はいらない! MP:eMe

Release Notes

safetyaccess.pdf

あんしんフィルターfor au(iOS)設定ガイド

ギョロモガイガー Ⅱ 操作ガイド ギョロガイガー Ⅱ 操作ガイド 本書では ギョロガイガー Ⅱ の操作方法についてご説明いたします 目次 1. 概要 コンセプト 主な機能 基本仕様 インストール 使い方...

iSmartDVD_06.indd

Office365マニュアル_学生向け

CodeGear Developer Camp

居場所わかるくん CMX 連携設定 操作ガイド 2019 年 4 月

Kindle Previewer ユーザー ガイド

構成例 システム名 : 単独サーバ業務システムユーザ数 : 1 ユーザ マルチコア CPU のサーバ 1 台で開発 運用します ソート機能を使用します COBOL SE Developer COBOL SE Server Runtime SORTKIT/Enterprise for Windows

はじめての方へ

Microsoft PowerPoint - Skype for business の概要.pptx

757_[iOS版]どこでも写真管理連携(USB)

PowerPoint プレゼンテーション

Microsoft Word - Office365マニュアル_教職員向け.docx

ユーザ システム要件

PowerPoint プレゼンテーション

PALRO Gift Package 操作説明書

Microsoft PowerPoint - visualprogram.ppt

ヘルスアップWeb 簡単操作ガイド

クイックセットアップ for モバイル(iOS/Android)

リリースノート バージョン / /08/08 公開 wivia は 株式会社内 洋 の日本における登録商標です Microsoft Windows は 米国マイクロソフト社の米国及びその他の国における登録商標です Apple Mac Mac OS は 米国 A

スライド 1

LAPLINK ヘルプデスク 導入ガイド

Transcription:

A1 Delphi チュートリアルセッション Windows 開発者のための FireMonkey モバイル開発入門 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏

2 アジェンダ Delphi + FireMonkey の仕組み 各種コンポーネント, スタイル, プロジェクトマネージャ ios アプリの開発 準備するもの 実機に転送 Android アプリの開発 準備するもの 実機に転送 ios/android 共通の話題 ios or Android? 画面サイズと画面密度 タブレット or スマホ? 画面の回転 (Portrait or Landscape?) ロギング OnPaint と TCanvas

1 Delphi + FireMonkey の仕組み 3

従来の VCL の場合 Delphi 統合開発環境 (IDE) ( エディタ デバッガ フォームデザイナ etc.) Intel/AMD x86 用 Delphi コンパイラ Intel/AMD x64 用 Delphi コンパイラ Delphi RTL VCL 各種コンポーネント Win32/Win64 API XP, Vista, 7, 8, 2008, 2012 etc 4

ios の場合 Delphi 統合開発環境 (IDE) ( エディタ デバッガ フォームデザイナ etc.) ios シミュレータ (Intel x86) 用 Delphi コンパイラ ios デバイス (ARMv7) 用 Delphi コンパイラ Delphi RTL FireMonkey 各種コンポーネント ios API / POSIX OpenGL ES ios シミュレータ ios デバイス 5

Android の場合 Delphi 統合開発環境 (IDE) ( エディタ デバッガ フォームデザイナ etc.) Android(ARMv7 + NEON) 用 Delphi コンパイラ Delphi RTL FireMonkey 各種コンポーネント Android SDK Android NDK OpenGL ES Android エミュレータ Android デバイス 6

すぐに試せるデモプロジェクト iphone(ipod touch) 向け Android 7

ios 7 用スタイルも準備済み ios 7 の正式リリース後に提供します 8

Delphi XE5 新しいプロジェクトマネージャ アプリの転送先を選択可能 デバイスを自動認識 Android ターゲット : 全デバイスおよび全エミュレータ ios シミュレータ ターゲット :ipad, iphone, iphone5 ios デバイス ターゲット : 全デバイス Delphi PAServer TCP/IP 接続 USB 接続 USB 接続 9

2 ios アプリの開発 10

準備するもの Mac OS X Lion(10.7) 以降のMacマシン Xcode 4.6.3 または Xcode 5(Beta) ios 6.0 以降が動作している ipad または iphone ios シミュレータまたは ios 実機 Apple ios Developer Program への加入 証明書作成, ios 実機の登録, プロファイルのインストール etc XE5 の RAD PAServer を Mac マシンにインストール & 起動 それと Windows 7(32bit/64bit) などのPCまたは仮想マシン Delphi XE5( モバイル開発機能 ) 11

Macマシンや実機がなくても MacinCloud.comが使えます 無料トライアルまたは有料のMac OS X環境の時間貸し Remote Desktop接続なのでレスポンスは良くない さすがに iosシミュレータのみ http://www.macincloud.com/ 12 Remote Desktop Client

3 Android アプリの開発 13

14 準備するもの Windows 7(32bit/64bit) などの PC または仮想マシン Mac OS X は非サポート Delphi XE5( モバイル開発機能 ) Android 2.3.3 以降が動作している Android 実機 ARMv7 互換 CPU Intel x86 および MIPS は除く NEON 命令をサポートしない NVIDIA Tegra2 は除く なので Android 3.x(Honeycomb) は除く USB ケーブルと Windows 用 USB ドライバ [ 開発者向けオプション ] で [USB デバッグ ] を [ON] にしておくあと 自前で Windows にインストールしても OK のもの JDK7(32bit/64bit) Android SDK(ADT Bundle, 32bit/64bit) Android NDK(32bit/64bit)

Android 実機がなくても エミュレータは遅すぎるので実用的ではありません!! Intel x86エミュレータも使えません SciroccoCloud( シロッコ クラウド ) 等のサービスが使えます 無料トライアルまたは有料のAndroid 端末時間貸し Webブラウザ経由で日本製各種 Android 実機を操作 エンバカデロでも製品テストに使ってます!! http://www.scirocco cloud.com/ja/ Web ブラウザ Android 端末 100 機種以上 15

4 ios/android 共通の話題 16

コンパイル時に決める {$IFDEF ANDROID}... {$ENDIF} {$IFDEF IOS}... {$ENDIF} ios or Android? 17 実行時に判定する var os: TOSVersion; begin if os.platform = pfios then Button1.Text := 'ios' else if os.platform = pfandroid then Button1.Text := 'Android' else Button1.Text := 'Windows 8 Tablet?'; end;

画面サイズと画面密度 論理的 ( デバイス非依存 ) なサイズ (dp) なのでデザインが楽 ただし 画素の細かさには注意が必要 ( 例 : TImage の MultiResBitmap) var ws: IFMXWindowService; begin Label1.Text := ' 幅 :'+IntToStr(Screen.Size.Width) + ', 高 :'+IntToStr(Screen.Size.Height); ws := TPlatformServices.Current.GetPlatformService(IFMXWindowService) as IFMXWindowService; Button1.Text := ' スケール :' + FloatToStr(ws.GetWindowScale(Self)); end; 18 Portrait の状態 機種 幅 (dp) 高さ (dp) スケール 規格 iphone 4, iphone 4S 320 480 2.0 Retina iphone 5 320 568 2.0 Retina ipad 2, ipad mini 768 1024 1.0 Non retina ipad 3, ipad 4 768 1024 2.0 Retina au HTC EVO WiMAX 320 533 1.5 hdpi au HTC EVO 3D 360 640 1.5 hdpi LG Nexus 4 384 592 2.0 xhdpi au HTC J One 360 592 3.0 xxhdpi Dropad A8 480 800 1.0 mdpi ASUS Nexus 7 (2012) 600 905 1.331 tvdpi Kindle Fire HD 533 853 1.5 hdpi SAMSUNG Nexus 10 752 1280 2.0 xhdpi ios Android

ios は判別が簡単!! タブレット or スマホ? var device: IFMXDeviceService; begin device := TPlatformServices.Current.GetPlatformService(IFMXDeviceService) as IFMXDeviceService; if Pos('iPad', device.getmodel) > 0 then Application.CreateForm(TFormForiPad, Form2) // ipad else Application.CreateForm(TFormForiPhone, Form1); // iphone,ipod touch Android には明確な基準が無い?? Tablet > Phablet > Phone 幅または高さが480dp 以上ならタブレットだと想定する 360dp 1280dp 592dp 752dp 19

画面の回転 (Portrait or Landscape?) フォームの OnResize イベントをフックして回転を検知 uses FMX.Platform; procedure TForm1.FormResize(Sender: TObject); var ss: IFMXScreenService; ori: TScreenOrientation; begin ss := TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService; ori := ss.getscreenorientation; if (ori = TScreenOrientation.soPortrait) OR (ori = TScreenOrientation.soInvertedPortrait) then Button1.Text := 'Portrait' else Button1.Text := 'Landscape'; end; フォームのレイアウトは? 同一フォーム内で各 GUI 部品のレイアウトを調整 または 縦横別々のフォームを Form.Show; して 丸ごと切り替え 20

ios ロギング DelphiのUnicodeStringが最終的にはNSString 型として出力 iosシミュレータ : コンソール.appで確認 iosデバイス : Xcode 付属のOrganizerで確認 Android DelphiのUnicodeStringが最終的にはPAnsiCharとして出力 Android SDKのmonitorユーティリティで確認 var i: Integer; f: Single; e: Extended; // Double log: IFMXLoggingService; begin i := Random(100); f := 123.456; e := Random; procedure TForm1.FormCreate(Sender: TObject); begin {$IFDEF ANDROID} System.DefaultSystemCodePage := 65001; // UTF-8: PAnsiChar(Android) {$ENDIF} end; log := TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService; log.log('%s:%d:%f:%f', [' これはログメッセージ!', i, f, e]); // または FMX.Types.Log.d('%s:%d:%f:%f', [' これはログメッセージ!', i, f, e]); end; 21

OnPaint イベントと TCanvas 画面への描画は WindowsOS 向け VCL(GDI,HDC) とは異なる 必ずOnPaintイベントとそのCanvasパラメータを使用すること!! Repaintメソッドの呼び出しも必要 procedure TForm1.FormCreate(Sender: TObject); begin paint_color := TAlphaColorRec.Black; end; procedure TForm1.Button1Click(Sender: TObject); begin if paint_color = TAlphaColorRec.Black then paint_color := TAlphaColorRec.Red else paint_color := TAlphaColorRec.Black; PaintBox1.Repaint; end; 22 procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); begin Canvas.BeginScene(); Canvas.Fill.Color := paint_color; Canvas.FillRect(RectF(0, 0, PaintBox1.Width, PaintBox1.Height), 0, 0, [], 1); Canvas.EndScene; end;

Q&A 23