25th Developer Camp

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

1 シミュレーションとは何か?

25th Developer Camp

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

PowerPoint プレゼンテーション

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

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

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

25th Developer Camp

f5

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

20th Embarcadero Developer Camp

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

Embarcadero Developer Camp

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

Microsoft PowerPoint - visualprogram.ppt

開発者が知りたい実践プログラミングテクニック!

CodeGear Developer Camp

ISMAR2013

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

「C++Builderでモバイル開発にトライ! ベータ評価レポート」

t1

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

開発者が知りたい実践プログラミングテクニック!

Prog2_15th

25th Developer Camp

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

28th Embarcadero Developer Camp

21st Embarcadero Developer Camp T9

事前準備 1. Visual Studio Community 2013 または Professional 以上のエディションのインストール 2. Android スマートフォンへの任意の QR コードリーダーアプリのインストール 3. アプリ素材のダウンロード

24th Developer Camp A4

Delphi/400 テクニック公開 Windows7に最適化した アプリ開発・運用テクニック

21st Embarcadero Developer Camp

テクニカルセミナーベストセレクション

タイトル

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

5th CodeGear Developer Camp [A5]

WebReportCafe

20th Embarcadero Developer Camp

Microsoft PowerPoint - DELPHI�礔.ppt

28th Embarcadero Developer Camp

Release Notes

SEO対策サービスパッケージ

Microsoft PowerPoint - Skype for business の概要.pptx

MP:eMeeting インストールマニュアル Version /06/30 株式会社デジタル ウント メア

ヘルプガイド デジタルペーパー Digital Paper App for mobile Digital Paper App for mobile は Google Play または App Store でダウンロードできます Digital Paper App for mobile で検索してくだ

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

22nd Embarcadero Developer Camp G6

Office365マニュアル_学生向け

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

SDP Generator

MotionBoard Ver. 5.6 パッチ適用手順書

最終更新日 :2019 年 2 月 26 日 Office365 Office 製品のインストール 茨城キリスト教大学 情報センター 目次 1. Office Pro Plusの概要 1-1 サービスの概要 1-2 利用対象者 1-3 利用可能台数 1-4 インストール可能なソフト 1-5 注意事項

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

ルーレットプログラム

Prog2_12th

Embarcadero Technologies

ミガロ.製品 最新情報

PALRO Gift Package 操作説明書

home-unit2_quickguide_ras_v1.1

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 9.0

C#の基本

7th CodeGear Developer Camp

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

3. クラスリンク ( 先生の IP アドレス >:< ポート >) を生徒と共有して生徒がブラウザーから接続できるようにします デフォルトのポート番号は 90 ですが これは [Vision 設定 ] から変更できます Netop Vision Student アプリケーションを使

Microsoft PowerPoint - ã•’Newlineã•‚TRUCAST_ã†fl紹仉è³⁄挎_ pptx

2 ログイン ( パソコン版画面 ) Web サイトのログイン画面が表示されます 通知メールに記載されている ID と仮パスワードを入力して ログイン ボタンをクリックしてください ID パスワードを連続して 5 回間違うと 当 I D はロックアウト ( 一時的に使用不可 ) されるので ご注意く

Delphi/400でFlash動画の実装

Java, Delphi, C++Builderユーザのためのメモリリーク, ボトルネックの検出手順

スライド 1

スターターガイド

28th Embarcadero Developer Camp

ARnexご紹介セミナー スライド資料

CodeGear Developer Camp

25th Developer Camp

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

インテル(R) Visual Fortran コンパイラ 10.0

MMC Unity講座

e3

17th Embarcadero Developer Camp

ixpand Transfer クイックガイド ixpand Transfer は サンディスク ixpand フラッシュドライブ専用の Android アプリケーションです 本アプリケーションは Android スマートフォンやタブレットに接続したサンディスク ixpand フラッシュドライブを使

操作マニュアル

WSD-F10

Windows2000/XPインストール手順

X5-Evo スタートアップガイド


24th Embarcadero Developer Camp

スクールCOBOL2002

21st Embarcadero Developse Camp W5

MoStash WG02_ Apple OTG_TEAMGROUP_ユーザーズ ガイド_ja

Gate_PC0815

第32回_プレゼン資料_菅原(Unityはじめるよ~上半身だけ動かす2~)

(1)IE6 の設定手順 (1)IE6 の設定手順 1) 信頼済みサイトの追加手順 1: ブラウザ (Internet Explorer) を起動します 手順 2: ツール / インターネットオプション / セキュリティ メニューを選択します 手順 3: セキュリティ タブの 信頼済みサイト を選択

[Unifinity]運用マニュアル

PowerPoint プレゼンテーション

Microsoft PowerPoint - FormsUpgrade_Tune.ppt

ザ ゴルフウォッチ A1 データ更新方法 注 : 各種データ更新は必ずザ ゴルフウォッチ A1 本体の充電を行ってから実施してください パソコンでのデータ更新方法 * 対応 OS は Windows 7 / Windows 8 / Windows 8.1 / Windows 10 / MacOS X

開発者が知りたい実践プログラミングテクニック! ~明日から使えるテクニック集~

PowerPoint プレゼンテーション

Transcription:

C2 Delphi/iOS テクニカルセッション 株式会社シリアルゲームズ取締役細川淳

Delphi ios アプリ開発講座

はじめに - 自己紹介 株式会社シリアルゲームズ クライアント サーバー型アプリケーションをワンストップで提供しています サーバサイドアプリケーション エンターテインメント系アプリケーション ちなみに ios / Android の技術者募集中です そこで主にクライアント OS のアプリを開発しています クライアント OS とは Windows / Android / ios です 最近 MacOS X も少し

はじめに - 本日の内容 FM 3 とは FM 3 による ios 開発 カメラデバイス GPS 配置マネージャ StartUp Copy

注意 このセッション資料は RAD Studio XE4 Beta 版で作成されています 製品版とは異なる場合があります 製品版と異なる場合 口頭で説明します

Delphi ios アプリ開発講座

FM 3 とは FireMonkey XE2 で搭載された新しいコンポーネントフレームワーク FireMonkey2 XE3 で搭載された FireMonkey のバージョン 2 FireMonkey3 XE4 で ios に対応 秋頃発売? の XE5? では Android に対応 One Source で両対応アプリが作れる!

FM 3 がとにかくスゴい ネイティブ! だから速い! Intel / ARM のネイティブコードが出力される! 著名なマルチプラットフォーム環境は 全部 VM で動く Unity / Adobe Air など 側 ( がわ ) ネイティブアプリと比べたら段違い! コンテンツが Web で提供されているもの ネイティブ Web コンテンツ ネイティブ部分に WebView が置いてあるだけ!

FM 3 がとにかくスゴい 2D / 3D の両方に対応している! ios / Android では OpenGL で描かれる 3D と 2D を混在できる GUI パーツが豊富! つまり GUI 構築も超楽! Unity は 2D GUI が苦手! ゲームも FM3 で制作できそう Box2D などの物理演算エンジンも組み込める 個人的に研究中

FM 3 がとにかくスゴい 単一の環境! 単一の IDE / 言語 / Framework(FM3) で全プラットフォームのアプリが作れる! MS / Apple / Google が提供している開発環境は IDE も言語も Framework も全部別! 各 OS のネイティブ API も呼べる! いざとなれば OS のネイティブ API を呼べる {$IFDEF MSWINDOWS} や {$IFDEF IOS} で分けられる 他のマルチプラットフォーム環境では 呼べないか 特殊な方法で呼ぶ必要がある

FM 3 がとにかくスゴい OS の GUI デザインからの解放 かと思いきや OS の GUI デザインも表示できる! StyleLookup で OS GUI を表 できる! た はネイティブ GUI と同じ! FM3 が OpenGL を使って描いたコントロールはネイティブの GUI と 分違わぬため これを ピクセル パーフェクトクト と呼んでいる

FM 3 がとにかくスゴい コーディング不要で Retina に対応! つまり コントロールの配置に悩まない! 解像度がメチャクチャたくさんある Android でも安心! ただし Rti Retina 対応の Style が必要 提供されている Style は Retina に対応している 豊富なメディアライブラリ センサーライブラリ! 豊富なアニメーション トランジション エフェクトコンポーネント!

FM 3 がとにかくスゴい FormFamily & FormFactor で解像度の問題も解決! 実機の解像度によって 起動する Form を変更するシステム! iphone 実機 ipad Ap pplication n.run 動的に選択して起動する iphone 用 TForm1 TForm1 と TForm2 では FormFactor.Width FormFractor.Height が異なっている FormFamily が同じ Form 群 ipad 用 TForm2

FM 3 がそうでもないところ FormFamily を使って TForm1 と TForm2 が別れてもコードは共通化できない CommonUnit を作って その関数を呼ぶようにする CreateNew / LoadRes を使って自前でやればできる気がするけど サブフォームをアニメーション付きで呼び出せない procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; // 瞬時に切り替わる end; ただし Unity など他の環境でも同じ また Android では それが普通 Form デザイナ上に Panel を複数置いて切り替える方法で代替可能だけど

Style / StyleLookup / FormFamily デモ

Delphi ios アプリ開発講座

簡単なカメラを動かしてみる 要件 デフォルトのカメラを動かす ボタンを押してカメラを起動 撮影したらイメージを取得 取得したイメージを表示する

簡単なカメラを動かしてみる 手順 TToolBar を配置 StyleLookup = bottomtoolbar TButton を配置 align = alcenter StyleLookup = cameratoolbuttonbordered TActionList を配置 TakePhotoFromCameraAction を生成 TButton.Action と結びつける TImageControl を配置 align = alclient TakePhotoFromCameraAction.DidFinishTaking でイメージを表示 この 順に従って 実際に作ってみます

簡単なカメラを動かしてみる procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap); begin ImageControl1.Bitmap.Assign(Image); end;

Delphi ios アプリ開発講座

カメラを操る 要件 カメラデバイスからイメージを得る 得たイメージを表示する

カメラを操る 手順 TToolBar を配置 StyleLookup = bottomtoolbar TButton を配置 align = alcenter StyleLookup = cameratoolbuttonbordered TImageControl を配置 align = alclient TCameraControl を配置 OnSampleBufferReady を実装 この 順に従って 実際に作ってみます

カメラを操る procedure TForm1.Button1Click(Sender: TObject); begin CameraComponent1.Active := not CameraComponent1.Active; end; procedure TForm1.CameraComponent1SampleBufferReady( Sender: TObject; const ATime: Int64); begin TThread.Synchronize( e( TThread.CurrentThread, procedure begin CameraComponent1.SampleBufferToBitmap(ImageControl1.Bitmap, True); ); end; end

Delphi ios アプリ開発講座

LocationSensor を操る 要件 LocationSensor.OnLocationChanged で座標を得る 得た座標を表示する

LocationSensor を操る 手順 TToolBar を配置 StyleLookup = bottomtoolbar TButton を配置 align = alcenter StyleLookup = cameratoolbuttonbordered TMemo を配置 align = alclient TLocationSensor を配置 OnLocationChanged を実装 この 順に従って 実際に作ってみます

LocationSensor を操る procedure TForm1.Button1Click(Sender: TObject); begin LocationSensor1.Active := not LocationSensor1.Active; if (LocationSensor1.Active) then begin Memo1.Lines.Add('Start'); Button1.Text := 'Stop'; end else begin Memo1.Lines.Add('Stop'); Button1.Text := 'Start'; end; end; procedure TForm1.LocationSensor1LocationChanged( Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); var Pos: String; begin Pos := Format('%.8f,%.8f', [NewLocation.Latitude, NewLocation.Longitude]); Form1.Memo1.Lines.Add(Pos); end;

Delphi ios アプリ開発講座

MotionSensor を操る 要件 Timer を使って一定時間毎に座標を取得する MotionSensor には OnLocationChanged のようなイベントは存在しない 値の揺らぎが大きいため

MotionSensor を操る 手順 TToolBar を配置 StyleLookup = bottomtoolbar TButton を配置 align = alcenter StyleLookup = cameratoolbuttonbordered TMemo を配置 align = alclient TMotionSensor を配置 TTimer を配置 OnInterval イベントを実装 この 順に従って 実際に作ってみます

MotionSensor を操る procedure TForm1.Button1Click(Sender: TObject); begin MotionSensor1.Active := not MotionSensor1.Active; if (MotionSensor1.Active) then begin Button1.Text := 'Stop'; Timer1.Enabled := True; end else begin Button1.Text := 'Start'; Timer1.Enabled := False; end; end;

MotionSensor を操る procedure TForm1.Timer1Timer(Sender: TObject); var Data: String; begin // 加速度が使えれば 表示する使える Property の集合 if ( [ TCustomMotionSensor.TProperty.AccelerationX, slinebreak は TCustomMotionSensor.TProperty.AccelerationY, プラットフォーム毎の TCustomMotionSensor.TProperty.AccelerationZ ] 改 字列 * MotionSensor1.Sensor.AvailableProperties <> [] ) then Data := Data + Format('Accele X: %.8f',[MotionSensor1.Sensor.AccelerationX]) + slinebreak + Format('Accele Y: %.8f',[MotionSensor1.Sensor.AccelerationY]) + slinebreak + Format('Accele Z: %.8f',[MotionSensor1.Sensor.AccelerationZ]) + slinebreak + slinebreak;

MotionSensor を操る // 角加速度が使えれば 表示する if ( [ TCustomMotionSensor.TProperty.AngleAccelX, TCustomMotionSensor.TProperty.AngleAccelY, TCustomMotionSensor.TProperty.AngleAccelZ ] * MotionSensor1.Sensor.AvailableProperties <> [] ) then Data := Data + Format('Angle X: %.8f',[MotionSensor1.Sensor.AngleAccelX]) + slinebreak + Format('Angle Y: %.8f 8f',[MotionSensor1.Sensor.AngleAccelY]) + slinebreak + Format('Angle Z: %.8f',[MotionSensor1.Sensor.AngleAccelZ]) + slinebreak + slinebreak;

MotionSensor を操る // Motion があれば 表示する if ( [TCustomMotionSensor.TProperty.Motion] TProperty Motion] * MotionSensor1.Sensor.AvailableProperties <> [] ) then Data := Data + Format('Motion %.8f',[MotionSensor1.Sensor.Motion]) + slinebreak; // 速度があれば 表示する if ( [TCustomMotionSensor.TProperty.Speed] * MotionSensor1.Sensor.AvailableProperties <> [] ) then Data := Data + Format('Speed %.8f',[MotionSensor1.Sensor.Speed]); Memo1.Lines.Text := Data; end;

Delphi ios アプリ開発講座

配置マネージャ 配置マネージャ IPA にパッケージングするファイルを管理している 配置マネージャにファイルを追加すると一緒にパックし配置マネジャにファイルを追加すると緒にパックしてくれる

配置マネージャ 実際に追加してみる 左上のファイルの追加ボタンを押す ファイルを追加する ここでは AirShip.mp3 を追加する リモートパスを ". StartUp Documents" にする 先頭の "." ピリオドを忘れずに!

配置マネージャ プログラムからユーザーリソースにアクセスする方法 procedure TForm1.FormCreate(Sender: TObject); begin MediaPlayer1.FileName := GetHomePath + PathDelim + 'Documents' + PathDelim + 'AirShip.mp3'; end; GetHomePath はアプリのワーキングフォルダを指す PathDelim はパスの区切り 字 ios は "/"

配置マネージャ - System.StartUpCopyStartUpCopy. StartUp Documents とは何か? StartUp System.StartUpCopy py が起動時にコピーするマーク Documents コピー先 program Project1; uses System.StartUpCopy, StartUpCopy FMX.Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} アプリが自由に使えるフォルダ begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.

TMediaPlayer TMediaPlayer を使うと簡単に音を鳴らせる procedure TForm1.Button1Click(Sender: TObject); begin if (MediaPlayer1.State = TMediaState.Playing) then begin MediaPlayer1.Stop; Button1.StyleLookup := 'arrowrighttoolbuttonbordered'; end else begin MediaPlayer1.Play; y; Button1.StyleLookup := 'pausetoolbuttonbordered'; end; end; MediaPlayer.Play / Stop で再 停 ができる簡単! 実際に鳴らしてみます

TMediaPlayer 注意点 OnNotify が廃止されている そのため Repeat 処理が非常に難しい Timer などで MediaPlayer1.State が Playing かどうかを見て Playing じゃなくなったときに 再度 Play を呼ぶなどで代替できるが どうしても一瞬の空隙がうまどうしてもれる