Visual Studio を用いたクロスプラットフォーム開発入門 Android 編

Similar documents
Xamarin Studioを用いたクロスプラットフォーム開発入門iOS編

Windows 10 IoT Core MVA 2015 August Windows 10 IoT Core ハンズオントレーニング Building and running Github MS IoT Samples on Windows 10 IoT Core 3 章 UWP アプリの開発 L

C#の基本

Prog2_5th

Prog2_2nd

Prog2_12th

Prog2_6th

Prog2_2nd

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

Prog2_10th

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

Microsoft Word - VB.doc

Prog2_15th

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

Prog2_10th

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

ArcGIS Runtime SDK for WPF インストールガイド (v10.2.5)

Prog2_6th

AzureとXamarinでスマホアプリを作ってみる_

Prog2_6th

1: Android 2 Android 2.1 Android 4 Activity Android Service ContentProvider BroadcastReceiver Activity ( ): Android 1 Android Service ( ): ContentProv

2 / 26 平成 26 年 4 月 11 日 ( 金 ) 午後 1 時 9 分 Visual C Express の使用法 ( 東海大学理学部物理学科 ) 無償で利用できる開発環境 (Windows XP 以降 ) Visual Studio 2010 Express

図 1:[ バージョン情報 ] ウィンドウ 図 1 からわかるとおり 本稿は Visual Studio Community 2017 Ver をもとに執筆していま す 3. 本書相当のテンプレートの作成 Ver.15.7では 本書で利 しているテンプレートはなくなってしまいましたが

Hello, Android

TestDesign for Web

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

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

発環境を準備しよう2 章開Eclipseをインストールしようそれでは Eclipseをセットアップしましょう Eclipseは Eclipse Foundationのサイトからダウンロードできます ダウンロードのページを開くと いく

Visual Studio 2017 RC インストール & ファーストステップガイド 2016 年 11 月 16 日 (V1.0)

Prog2_4th

IME( 日本語入力システム ) の確認 変更方法 / プロパティ確認の手順 ************************************************************************************ ドキュメント目次 IME( 日本語入力システム )

Microsoft Word - バーチャルクラス(Blackboard)ログイン方法ガイド.docx

Microsoft Word -

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

実習を行う上での心構えについて

Microsoft PowerPoint - Tutorial_6.ppt

Xamarinインストール手順書_

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows 日本語版 : インストール・ガイド

カルテダウンロード 操作マニュアル

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

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

WPF アプリケーションの 多言語切替

内容 1 はじめに インストールの手順 起動の手順 Enterprise Architect のプロジェクトファイルを開く 内容を参照する プロジェクトブラウザを利用する ダイアグラムを開く 便利な機能.

プロジェクト毎に名前を指定する ( ここでは AndroidTest) 動作可能な最低バージョン メインターゲットのバージョン すべて設定してクリック チェックを外す クリック

Android Layout SDK プログラミング マニュアル

PowerPoint プレゼンテーション

BizBrowser SmartDevice Android開発用スタートアップガイド

カルテダウンロード 操作マニュアル

ch2_android_2pri.indd

Biz/Designer Vインストールガイド

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

Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以

ダウンロードした JDK の exe ファイルをダブルクリックしてインストールします 以下の画面が表示されますので [ 次 ] ボタンをクリックします 次の画面が表示されますので [ 次 ] ボタンをクリックします

Visual Studio 2013 によるコードマップを使用した 特定のコード内での依存関係の対応付け 2014 Microsoft Corporation. All rights reserved. 1

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

1.WebClass( ウェブクラス ) とは WebClass を利用される前に 学生の立場で WebClass を利用してみましょう... 4 開始方法... 4 資料を閲覧する 先生の立場で WebClass を利用してみましょう... 8 資料を

1. Office365 ProPlus アプリケーションから利用する方法 (Windows / Mac) この方法では Office365 ProPlus アプリケーションで ファイルの保管先として OneDrive を指定することができます Office365 ProPlus アプリケーションで

Microsoft Word - Android開発環境構築.doc

目次 第一章インストールと製品登録 1.1 インストール & ライセンス認証 3 第二章製品活用 - Leawo itransfer 3.1 コンピュータのファイルを iphone に転送 iphone のファイルをコンピュータにバックアップ ファイルを itunes から

Prog2_9th

Web GIS Template Uploader 利用ガイド

SketchUp2017 以上のバージョンからプラグインのインストールや管理を行うための 拡張機能マネージャー が追加され Ruby ファイル (*.rbz) の管理が簡単に行えるようになりました SketchUp2016 以下のバージョンは環境設定の 拡張機能 (Extensions) メニューよ

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

BPMNモデリング マニュアル

(Microsoft Word - VisionPro\203C\203\223\203X\203g\203\214\201[\203V\203\207\203\223\203}\203j\203\205\203A\203\ doc)

Maser - User Operation Manual

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

DrugstarPrime アップデート手順書 DrugstarPrime アップデート手順書 DrugstarPrime のアップデート手順をご案内いたします 本書は DrugstarPrime2 DrugstarPrime に共通の手順書です 手順内の画面は Prime2 を使用しています [

作業環境カスタマイズ 機能ガイド(応用編)

Microsoft Word - Android_SQLite講座_画面800×1280

X-lite User Guide

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

図 3 システムのプロパティ 詳細設定 タブ システム環境変数の 新規 ボタンをクリックする. 図 4 システム環境変数の 新規 ボタン 2

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

PowerPoint プレゼンテーション

C1Live

年調・法定調書の達人from弥生給与 運用ガイド

Windows 10 IoT Core MVA 2015 August Windows 10 IoT Core ハンズオントレーニング Building and running Github MS IoT Samples on Windows 10 IoT Core 5 章センサーデータをクラウドへ

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

サイボウズ ツールバー βマニュアル

NSS利用者マニュアル

1. Java Development Kit ORACLE のサイトから JAVA の開発キットをダウンロードします バージョンは JDK の最新版 ( 現在 8u45) が必要です また定期的に更新されますが そのたびに入れ替えることをお勧めします JDK のダウンロード ORACLE サイト

Chart3D for WPF/Silverlight

MAPインストーラー起動時のエラーメッセージへの対処方法

MAC の Horizon Auton インストール方法 Page 1 of 25

Java言語 第1回

1.WebClass( ウェブクラス ) とは WebClass を利用される前に 学生の立場で WebClass を利用してみましょう... 4 レポートを提出する 先生の立場で WebClass を利用してみましょう... 9 提出状況を確認する..

ArcGIS for Server での Web マップの作成方法

LINE WORKS セットアップガイド目次 管理者画面へのログイン... 2 ドメイン所有権の確認... 3 操作手順... 3 組織の登録 / 編集 / 削除... 7 組織を個別に追加 ( マニュアル操作による登録 )... 7 組織を一括追加 (XLS ファイルによる一括登録 )... 9

Infragistics Ultimate  インストール手順書

ArcGIS Runtime SDK for .NET インストール ガイド (v10.2.6)

スライド 1

やってみようINFINITY-写真管理 編-

Microsoft Word - Android_実習環境

FileExplorer for ASP.NET Web Forms

SMB送信機能

Works Mobile セットアップガイド 目次 管理者画面へのログイン... 1 ドメイン所有権の確認... 2 操作手順... 2 組織の登録 / 編集 / 削除... 6 組織を個別に追加 ( マニュアル操作による登録 )... 6 組織を一括追加 (XLS ファイルによる一括登録 )...

TREND CA Ver.3 手順書

Transcription:

Visual Studio を用いたクロスプラ ットフォーム開発入門 Android 編 Japan Xamarin User Group

演習の目標 Xamarin と Visual Studio を使用して Android アプリケーションを Xamarin ネイティブの手法 Xamarin.Forms の手法を用いて開発する方法について学習します 演習の概要 開発に必要な Android SDK Java Xamarin の設定を確認 Xamarin.Android プロジェクトの作成 開発 Android Emulator または実機へのビルド デプロイ Android Emulator または実機でのデバッグ Xamarin.Forms (Portable) プロジェクトの作成 開発 Android Windows 10 Mobile へのビルド デプロイ デバッグ 予想所要時間 Xamarin ネイティブの手法 Xamarin.Forms の手法合わせて 120 分 2

本ガイドでは Visual Studio を使用した Xamarin.Android アプリケーションの開発の基本的な部分を紹介します Xamarin.Android アプリケーションのビルドと配布に必要なツール コンセプト ステップも紹介します 本ガイドでは ユーザーが入力した英数字の電話番号を数字の電話番号に変換し その番号に電話するアプリケーションを作成します 完成したアプリケーションは 以下のような画面になります 3

1 開発に必要な Visual Studio Android SDK Java Xamarin の 設定を確認 1.1 Visual Studio 本ガイドでは Visual Studio 2015 Community を使用します Professional 以上のエディションをお持ちの 方はそちらをご利用ください <<Visual Studio バージョン情報 >> 1.2 Android SDK [ ツール > オプション > Xamarin > Android Setting] を選択し [Java Development Kit Location] と [Android SDK Location] のパスを確認します 4

<<Xamarin.Android オプション >> なお Xamarin は Visual Studio 2015 インストール時に [ カスタム > モバイル開発 ] をチェックすることで自動的に インストールされます <<Visual Studio 2015 インストーラー >> 5

<<Visual Studio 2015 インストーラー >> Visual Studio インストーラーからインストールした Xamarin for Visual Studio は最新版ではないため [ ツー ル > オプション ] で [ オプション ] ダイアログを開き [Xamarin > Other] の [Check Now] リンクをクリックして Xamarin を最新版にアップデートしてください 6

1.3 エミュレーターの準備 Android のエミュレーターには いくつかオプションがあります スタンダードな Android ARM エミュレーターは シンプルな設定ですが 起動が遅くパフォーマンスが低いため 本ガイドでは Visual Studio Emulator for Android Xamarin Android Player 実機の使用をお勧めします これらをお持ちでない場合は Android SDK に付属するハードウェアアクセラレーション (Intel HAXM) を使用した x86 ベースのエミュレーターを使用してください ハードウェアアクセラレーションの設定方法に関しては Accelerating Android Emulators ガイド ( 英語 ) ( http://developer.xamarin.com/guides/android/getting_started/installation/accelerating_android_emulat ors ) をご参照ください 2 Xamarin.Android プロジェクトの作成 2.1 Visual Studio を起動し [ スタートページ > 新しいプロジェクト ] をクリックして 新しいソリューションを作成します <<Visual Studio メイン画面 >> 7

2.2 [ 新しいプロジェクト ] 画面で [Visual C# > Android] をクリックします [Blank App (Android)] テンプレートを選択します 新しいソリューションには 名前を Phoneword_Droid と付けます << ソリューション追加 >> 2.3 次に ソリューションエクスプローラーから [Phoneword_Droid] プロジェクト内の [Resources] フォルダを開き [layout] 以下の [Main.axml] をダブルクリックで開きま す Android Designer が起動します <<Android Designer>> 8

2.4 デザイン画面に標準で配置されている [HELLO WORLD, CLICK ME!] と書いてある [Button] を選択し キーボードの [Delete] キーで削除します 画面左側の [ ツールボックス ] の上部にある検索欄に text と入力し [Text (Large)] を選択し デザイン画面にドラッグ & ドロップして配置します <<Text (Large) をドラッグ >> 9

2.5 デザイン画面に配置した [Text (Large)] コントロールを選択し 右下の [ プロパティ ] ウ ィンドウを使用して [Text (Large)] の [Text] プロパティを Enter a Phoneword に変 更します << プロパティ変更 >> 2.6 次に [ ツールボックス ] から同様に [Text Field] 内の [Plain Text] をドラッグして デザ イン画面の [Text (Large)] コントロールの下に配置します << Plain Text 配置 >> 10

2.7 デザイン画面で配置した [Text Field] を選択し [Text Field] コントロールの [Id] プロパ ティを @+id/phonenumbertext に [Text] を 1-855-XAMARIN にそれぞれ変 更します << プロパティ変更 >> 2.8 ツールボックスで先ほど検索した [text] を削除し [button] で再度検索します [Button] コントロールをデザイン画面にドラッグして [Text Field] コントロールの下に配置 します << Button 配置 >> 11

2.9 デザイン画面で [Button] を選択し [ プロパティ ] ウィンドウを使用して [Button] の [Id] プロパティを @+id/translatebutton に [Text] プロパティを Translate にそれ ぞれ変更します << プロパティ変更 >> 2.10 次に [ ツールボックス ] から 2 つ目の [Button] コントロールをドラッグして デザイ ン画面の [TranslateButton] コントロールの下に配置します << Button 配置 >> 12

2.11 デザイン画面の [Button] を選択し [ プロパティ ] ウィンドウを使用して [Button] の [Id] プロパティを @+id/callbutton に [Text] プロパティを Call にそれぞれ変 更します 変更したら [Ctrl+S] を押して保存します << プロパティ変更 >> 2.12 ここで 英数字から数字に電話番号を変換するコードを追加します ソリューショ ンエクスプローラーから [Phoneword_Droid] プロジェクトを右クリックし [ 追加 > 新しい項目 ] を選択します << 新しい項目を追加 >> 13

2.13 [ 新しい項目の追加 ] ダイアログで [Visual C# > Class] を選択し 新しいクラスの名 前を PhoneTranslator.cs と付けます << クラスを追加 >> 2.14 すべてのテンプレートのコードを削除し 以下のコードに置き換えます using System.Text; using System; namespace Core public static class PhonewordTranslator public static string ToNumber(string raw) if (string.isnullorwhitespace(raw)) return ""; else raw = raw.toupperinvariant(); var newnumber = new StringBuilder(); foreach (var c in raw) if (" -0123456789".Contains(c)) newnumber.append(c); else var result = TranslateToNumber(c); if (result!= null) newnumber.append(result); // 数字以外の文字はスキップします return newnumber.tostring(); static bool Contains (this string keystring, char c) 14

return keystring.indexof(c) >= 0; static int? TranslateToNumber(char c) if ("ABC".Contains(c)) return 2; else if ("DEF".Contains(c)) return 3; else if ("GHI".Contains(c)) return 4; else if ("JKL".Contains(c)) return 5; else if ("MNO".Contains(c)) return 6; else if ("PQRS".Contains(c)) return 7; else if ("TUV".Contains(c)) return 8; else if ("WXYZ".Contains(c)) return 9; return null; [ ファイル > 保存 ] を選択するか または [Ctrl+S] を押して [PhoneTranslator.cs] ファイルを保存して 閉 じます 15

2.15 次に ユーザーインターフェースを操作する [MainActivity] クラスにコードを追加し ます ソリューションエクスプローラーから [MainActivity.cs] をダブルクリックして 開きます << MainActivity >> 2.16 [TranslateButton] を操作するコードを追加します 追加する場所は [MainActivity] クラスの [OnCreate] メソッドの中にある [base.oncreate(bundle)] と [SetContentView (Resource.Layout.Main)] の下です 必要なものだけを残してテンプレートのコードを削除しておきましょう [MainActivity] クラスは以下のコードのようになります この時点で一度プロジェクトをビルドしておきます using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace Phoneword_Droid [Activity (Label = "Phoneword_Droid", MainLauncher = true)] public class MainActivity : Activity protected override void OnCreate (Bundle bundle) base.oncreate (bundle); // Set our view from the "main" layout resource 16

SetContentView (Resource.Layout.Main); 2.17 次に 先ほど [Android Designer] で作成したコントロールを参照します 下記のコー ドを [OnCreate] メソッドの最後に追加します // ロードされたレイアウトから UI コントロールを取得します EditText phonenumbertext = FindViewById<EditText>(Resource.Id.PhoneNumberText); Button translatebutton = FindViewById<Button>(Resource.Id.TranslateButton); Button callbutton = FindViewById<Button>(Resource.Id.CallButton); 2.18 [TranslateButton] と名付けた最初のボタンをユーザーが押した際に応答するコードを 追加します 下記のコードを OnCreate メソッドの中のコントロールの定義の下に 追加します // "Call" を Disable にします callbutton.enabled = false; // 番号を変換するコードを追加します string translatednumber = string.empty; translatebutton.click += (object sender, EventArgs e) => ; // ユーザーのアルファベットの電話番号を電話番号に変換します translatednumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text); if (String.IsNullOrWhiteSpace(translatedNumber)) else callbutton.text = "Call"; callbutton.enabled = false; callbutton.text = "Call " + translatednumber; callbutton.enabled = true; 2.19 [CallButton] と名付けた 2 つ目のボタンをユーザーが押した際に応答するコードを追 加します 以下のコードを [TranslateButton] のコードの下に追加します callbutton.click += (object sender, EventArgs e) => // "Call" ボタンがクリックされたら電話番号へのダイヤルを試みます var calldialog = new AlertDialog.Builder(this); calldialog.setmessage("call " + translatednumber + "?"); calldialog.setneutralbutton("call", delegate 17

; // 電話への intent を作成します var callintent = new Intent(Intent.ActionCall); callintent.setdata(android.net.uri.parse("tel:" + translatednumber)); StartActivity(callIntent); ); calldialog.setnegativebutton("cancel", delegate ); // アラートダイアログを表示し ユーザーのレスポンスを待ちます calldialog.show(); 2.20 最後にアプリケーションの権限を設定して 電話をかけられるようにします アプリケーション権限は [Android Manifest] ファイルに記録されますが Xamarin.Android の場合はプロジェクトのプロパティから変更できます プロジェクトを右クリックして [ プロパティ ] をクリックします << プロジェクトのプロパティ >> 18

2.21 [Android Manifest > Required Permissions] にある CALL_PHONE の権限をチェック します << 権限設定 >> 2.22 これまでの作業を保存し [ ビルド > ソリューションのビルド ] を選択 または [CTRL-SHIFT-B] でアプリケーションをビルドします アプリケーションをコンパイ ルすると Visual Studio の左下に [ ビルド正常終了 ] と表示されます << ビルド成功 >> エラーが発生する場合 前のステップに戻って アプリケーションのビルドが成功するま で 不正な箇所を修正します 19

2.23 これで アプリケーションが動作したので 最後の仕上げを加えていきましょう [MainActivity] の [Label] を編集します [Label] は Android のアプリ一覧画面でアプ リケーションがどこにあるかユーザーに知らせます [MainActivity] クラスの上位にある [Label] を [Phoneword] に変更します namespace Phoneword_Droid [Activity (Label = "Phoneword", MainLauncher = true)] public class MainActivity : Activity... 2.24 プロジェクトのプロパティからアプリケーションの名前とアイコンを編集すること ができます [Android Manifest > Application name] の [Phoneword_Droid] を [Phoneword] に変更します << プロジェクトプロパティ >> 20

<< アプリケーションの名前を Phoneword に変更 >> 2.25 次に アプリケーションのアイコンを編集します まずアイコンセット ( https://github.com/ytabuchi/xamarinhol/blob/master/xamarinappicons.zip ) をダウンロードして解凍します 次に [Resources] フォルダ以下の [drawable] フォルダを開き 既存の [Icon.png] を右クリックし [ 削除 ] を選択して削除します << Icon.png を削除 >> 21

[drawable] フォルダが無い場合は [Resources] フォルダを右クリックし [ 追加 > 新しいフォ ルダ ] を選択し drawable フォルダを作成します ダイアログが表示された時は [OK] を選択してください << ファイル削除ダイアログ >> 2.26 [drawable] フォルダを右クリックして [ 追加 > 既存の項目 ] を選択します << 既存の項目を追加 >> 22

2.27 選択ダイアログでは [XamarinAppIcons.zip] を解凍したフォルダに移動し [drawable] フォルダを開きます 追加する [Icon.png] ファイルを選択し [ 追加 ] ボタ ンをクリックします << Icon.png を選択 >> 2.28 次に [Xamarin App Icons and Launch Images Android] ディレクトリにあるその他の [drawable-*] フォルダをプロジェクトに追加します これにより 他の解像度のデバ イスで表示された場合のアイコンの見た目が良くなります エクスプローラーから drawable-* フォルダを選択します << フォルダを選択 >> 選択したフォルダを Visual Studio のソリューションエクスプローラーにある [Resources] の中 にドラッグします 23

<< ドラッグして追加 >> ソリューションエクスプローラーの中のプロジェクトに選択したフォルダが反映されます アイコンが追加されない場合は ソリューションエクスプローラーの [ すべてのファイルを表示 ] ボタンをクリックして [Icon.png] を右クリックから [ プロジェクトに含める ] をクリックします << すべてのファイルを表示 >> 24

<< プロジェクトに含める >> 2.29 プロジェクトのプロパティの [Android Manifest] で [Application Icon] のドロップダウ ンメニューから [@drawable/icon] を選択します << @drawable/icon を選択 >> 2.30 最後に Android のエミュレーターを使用して アプリケーションをテストします プロジェクトプロパティにある [Application] ノードを開きます [Compile using Android version] から 使用するエミュレーターの API レベルと同じまたは以下の API レベルを選 25

択します 使用するエミュレーターをツールバー上の [Target Android Device] のドロップダウ ンメニューから選択します << プロジェクトコンパイル設定 >> 26

2.31 アイコンをクリックしてエミュレーターでアプリケーションを表示します 下のスクリーンショットは エミュレーター上で Phoneword アプリケーションを実行した際の図です いくつかのエミュレーター上では [ ホーム ] ボタンや [MENU] ボタンがアプリケーション内で動作するか確認する必要があります [Translate] ボタンをクリックして [Call] ボタンのテキストが更新され [Call] をクリックした時に [call] ダイアログがスクリーンショットのように表示されるのを確認してください << VS Emulator >> アプリケーションリストで Phoneword アプリケーションと設定したアイコンが表示されま す 27

<< アプリケーション一覧 >> 初めての Xamarin.Android アプリケーションの完成です! 次のステップ Hello, Android Multiscreen Quickstart で このガイドで習得したツールとスキルをさらに試しましょう 28

3 Hello, Android Multiscreen Quickstart このセクションでは Phoneword アプリケーションにもう一つ画面を追加し その画面にこのアプリの通話履歴を残す方法を説明します 本ガイドで完成したアプリケーションでは 以下のスクリーンショットのように 2 番目の画面に通話履歴を表示します 3.1 Visual Studio で [Phoneword] プロジェクトを開きます << Visual Studio 2015 >> 3.2 まずはユーザーインターフェースの編集から始めます ソリューションエクスプロ ーラーから [Main.axml] ファイルを開きます << Main.axml >> 29

3.3 [ ツールボックス ] から デザイン画面に [Button] をドラッグし [Call] ボタンの下に配 置します << Button 配置 >> 3.4 [ プロパティ ] でボタン [Id] を @+id/callhistorybutton に変更します << id を変更 >> 30

3.5 ボタンの [Text] プロパティを @string/callhistory に変更します Android Designer には 記述した値がそのまま表示されますが この後に行う変更によりボ タンのテキストは正確に表示されます << text を変更 >> 3.6 ソリューションエクスプローラーから [Resources] フォルダ以下の [values] フォルダを 展開します 文字列のリソースファイル [Strings.xml] をダブルクリックして開きま す << String.xml を開く >> 3.7 以下のコードで [Strings.xml] ファイルを上書きして保存します <?xml version="1.0" encoding="utf-8"?> 31

<resources> <string name="callhistory">call History</string> </resources> [Call History] ボタンのテキストを更新すると新しい [string] の値が反映されます ( 反映されない 場合は 再度ファイルを開くと反映されます ) << @string が反映されたボタン >> 3.8 デザイン画面で [Call History] ボタンを選択し [ プロパティ ] の [enabled] の設定を見つ け 値を false に設定しボタンを無効にします これにより デザイン画面のボ タンが暗く変化します << enable を false >> 32

3.9 2 つ目の画面を作成します ソリューションエクスプローラー内の [Phoneword] プロ ジェクトを右クリックし [ 追加 > 新しい項目 ] をクリックします << 新しい項目をクリック >> 3.10 [ 新しい項目の追加 ] ダイアログから [Android > Activity] を選択し Activity に CallHistoryActivity.cs と名前を付けます 3.11 [CallHistoryActivity.cs] のテンプレートコードを以下のコードに置き換えます using System; using System.Collections.Generic; using Android.App; using Android.OS; using Android.Widget; namespace Phoneword_Droid 33

[Activity(Label = "@string/callhistory")] public class CallHistoryActivity : ListActivity protected override void OnCreate(Bundle bundle) base.oncreate(bundle); // Create your application here var phonenumbers = Intent.Extras.GetStringArrayList("phone_numbers")?? new string[0]; this.listadapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phonenumbers); このクラスでは [ListActivity] を生成し プログラムで自動的にデータを格納するので この Activity のた めの新しいレイアウトファイルを作成する必要はありません 3.12 このアプリは 最初の画面でユーザーが電話をかけた電話番号を集め その番号を 2 番目の画面に送ります これで電話番号をリストのようにして記憶することができます MainActivity クラスの上位に以下の using 宣言を加えて リストのサポートをします using System.Collections.Generic; その後 電話番号を格納する空のリストを生成します MainActivity クラスは以下のようになります [Activity(Label = "Phoneword", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity static readonly List<string> phonenumbers = new List<string>();...// OnCreate, etc. 3.13 [Call History] ボタンを紐づけします [MainActivity] クラスに 以下のコードを追加 し ボタンを認識させ紐づけをします [FindViewById] はコード上部に [Click] イベ ントハンドラはコード下部に追加します Button callhistorybutton = FindViewById<ButBton> (Resource.Id.CallHistoryButton); callhistorybutton.click += (sender, e) => ; var intent = new Intent(this, typeof(callhistoryactivity)); intent.putstringarraylistextra("phone_numbers", phonenumbers); StartActivity(intent); 34

3.14 Call ボタンの機能を拡張して ユーザーが新しい番号に電話を掛けた時に 電話番 号のリストに番号を追加し Call History ボタンを有効にします 以下のように Alert Dialog の Neutral Button のコードを変更して反映させます calldialog.setneutralbutton("call", delegate ); // 掛けた番号のリストに番号を追加します phonenumbers.add(translatednumber); // Call History ボタンを有効にします callhistorybutton.enabled = true; // 電話への intent を作成します var callintent = new Intent(Intent.ActionCall); callintent.setdata(android.net.uri.parse("tel:" + translatednumber)); StartActivity(callIntent); 保存後 アプリケーションをビルドし エラーがないか確認します 3.15 エミュレーターまたはデバイスでアプリケーションを実行してみましょう 以下の スクリーンショットは Emulator で [Phoneword] アプリケーションを実行した時の イメージです おめでとうございます 複数画面を操作する最初の Xamarin.Android アプリケーションが完成しました! 35

4 Xamarin.Forms Quickstart このセクションでは 先ほど Android プロジェクトで作成した Phoneword アプリを Xamarin.Forms を使 用して作成する方法を説明します アプリケーションの完成図は以下のようになります << ios Android Windows Phone アプリ完成図 >> 4.1 Visual Studio を起動し [ スタートページ > 新しいプロジェクト ] をクリックして 新しいソリューションを作成します << Visual Studio メイン画面 >> 36

4.2 [ 新しいプロジェクト ] 画面で [Visual C# > Cross-platform] をクリックします [Blank App (Xamarin.Forms Portable)] テンプレートを選択します 新しいソリューシ ョンには 名前を Phoneword と付けます << 新しいプロジェクト >> 4.3 ソリューションエクスプローラーで [Phoneword] プロジェクトを右クリックし [ 追 加 > 新しい項目 ] をクリックします << 新しい項目 >> 37

4.4 [ 新しい項目の追加 ] 画面から [Visual C# > Cross-Platform > Forms Xaml Page] を選 択し 新しいファイルの名前を [MainPage] と付け [ 追加 ] ボタンをクリックしま す << Forms Xaml Page を追加 >> 4.5 MainPage.xaml ですべてのテンプレートコードを削除し 以下のコードで置き換え ます <?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:class="phoneword.mainpage"> <ContentPage.Padding> <OnPlatform x:typearguments="thickness" ios="20, 40, 20, 20" Android="20, 20, 20, 20" WinPhone="20, 20, 20, 20" /> </ContentPage.Padding> <ContentPage.Content> <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Orientation="Vertical" Spacing="15"> <Label Text="Enter a Phoneword:" /> <Entry x:name="phonenumbertext" Text="1-855-XAMARIN" /> <Button x:name="translatebuton" Text="Translate" Clicked="OnTranslate" /> <Button x:name="callbutton" Text="Call" IsEnabled="false" Clicked="OnCall" /> </StackLayout> </ContentPage.Content> </ContentPage> [Ctrl+S] を押して変更を保存します 38

4.6 ソリューションエクスプローラーで [MainPage.xaml] を展開し [MainPage.xaml.cs] をダブルクリックして開きます << MainPage.xaml >> 4.7 [MainPage.xaml.cs] ですべてのテンプレートコードを以下のコードで置き換えます [OnTranslate] と [OnCall] メソッドはユーザーインターフェースの [Translate] と [Call] ボ タンがクリックされた時にそれぞれ実行されます using System; using System.Threading.Tasks; using Xamarin.Forms; namespace Phoneword public partial class MainPage : ContentPage string translatednumber; public MainPage () InitializeComponent (); void OnTranslate (object sender, EventArgs e) 39

translatednumber = Core.PhonewordTranslator.ToNumber (phonenumbertext.text); if (!string.isnullorwhitespace (translatednumber)) callbutton.isenabled = true; callbutton.text = "Call " + translatednumber; else callbutton.isenabled = false; callbutton.text = "Call"; async void OnCall (object sender, EventArgs e) if (await this.displayalert ( "Dial a Number", "Would you like to call " + translatednumber + "?", "Yes", "No")) var dialer = DependencyService.Get<IDialer> (); if (dialer!= null) dialer.dial (translatednumber); [Ctrl+S] を押して変更を保存します 40

4.8 ソリューションエクスプローラーで [App.cs] をダブルクリックして開きます << App.cs >> 4.9 [App.cs] ですべてのテンプレートコードを削除し 以下のコードで置き換えます using System; using Xamarin.Forms; namespace Phoneword public class App : Application public App () MainPage = new Phoneword.MainPage (); protected override void OnStart () // Handle when your app starts protected override void OnSleep () 41

// Handle when your app sleeps protected override void OnResume () // Handle when your app resumes [Ctrl+S] を押して変更を保存します 4.10 ソリューションエクスプローラーで [Phoneword( 移植可能 )] プロジェクトを右 クリックし [ 追加 > 新しい項目 ] をクリックします << 新しい項目 >> 42

4.11 [ 新しい項目の追加 ] 画面から [Visual C# > クラス ] を選択し 新しいファイルの名 前を PhoneTranslator と付け [ 追加 ] ボタンをクリックします << クラスを追加 >> 4.12 [PhoneTranslator.cs] ですべてのテンプレートコードを削除し 以下のコードで置き 換えます using System.Text; namespace Core public static class PhonewordTranslator public static string ToNumber(string raw) if (string.isnullorwhitespace(raw)) return null; raw = raw.toupperinvariant(); var newnumber = new StringBuilder(); foreach (var c in raw) if (" -0123456789".Contains(c)) newnumber.append(c); else var result = TranslateToNumber(c); if (result!= null) newnumber.append(result); // Bad character? else return null; 43

return newnumber.tostring(); static bool Contains(this string keystring, char c) return keystring.indexof(c) >= 0; static readonly string[]digits = ; "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ" static int? TranslateToNumber(char c) for (int i = 0; i < digits.length; i++) if (digits[i].contains(c)) return 2 + i; return null; [Ctrl+S] を押して変更を保存します 4.13 ソリューションエクスプローラーで [Phoneword] ソリューションを右クリック し [ 追加 > 新しい項目 ] をクリックします << 新しい項目 >> 44

4.14 [ 新しい項目の追加 ] 画面から [Visual C# > インターフェイス ] を選択し 新しいフ ァイルの名前を IDialer と付け [ 追加 ] ボタンをクリックします << インターフェイスを追加 >> 4.15 [IDialer.cs] ですべてのテンプレートコードを削除し 以下のコードで置き換えます [Dial] メソッドは変換された電話番号に電話を掛けるために各プラットフォームで実 装が必要です using System; namespace Phoneword public interface IDialer bool Dial(string number); [Ctrl+S] を押して変更を保存します アプリケーションの共通コードはこれで完了です 各プラットフォームで電話を掛けるコードは DependencyService として実装します なお 本ガイドでは Android UWP Windows Phone 8.1 の実 装を行います 45

4.16 ソリューションエクスプローラーで Android プロジェクト [Phoneword.Droid] プロ ジェクトを右クリックし [ 追加 > 新しい項目 ] をクリックします << 新しい項目 >> 4.17 [ 新しい項目の追加 ] 画面から [Visual C# > Class] を選択し 新しいファイルの名前 を PhoneDialer と付け [ 追加 ] ボタンをクリックします << Class を追加 >> 46

4.18 [PhoneDialer.cs] ですべてのテンプレートコードを削除し 以下のコードで置き換え ます このコードは Android で変換された電話番号に電話を掛ける [Dial] メソッドを 含んでいます using Android.Content; using Android.Telephony; using Phoneword.Droid; using System.Linq; using Xamarin.Forms; using Uri = Android.Net.Uri; [assembly: Dependency(typeof(PhoneDialer))] namespace Phoneword.Droid public class PhoneDialer : IDialer public bool Dial(string number) var context = Forms.Context; if (context == null) return false; var intent = new Intent(Intent.ActionCall); intent.setdata(uri.parse("tel:" + number)); if (IsIntentAvailable(context, intent)) context.startactivity(intent); return true; return false; public static bool IsIntentAvailable(Context context, Intent intent) var packagemanager = context.packagemanager; var list = packagemanager.queryintentservices(intent, 0).Union(packageManager.QueryIntentActivities(intent, 0)); if (list.any()) return true; var manager = TelephonyManager.FromContext(context); return manager.phonetype!= PhoneType.None; [Ctrl+S] を押して変更を保存します 47

4.19 アセンブリの参照エラーが表示される場合は [Ctrl+.] を押して参照を追加してく ださい << 参照を追加 >> 4.20 ソリューションエクスプローラーで [Phoneword.Droid] の [Properties] をダブルクリッ クしてプロジェクトのプロパティを開き [Android Manifest] をクリックします << Android Manifest >> 48

4.21 [Required permissions] 欄で [CALL_PHONE] をチェックします これでアプリケーシ ョンが電話を掛けられるように Permission が設定されます [Ctrl+S] を押して変更を保存します << CALL_PHONE をチェック >> 4.22 ソリューションエクスプローラーで Windows Phone プロジェクト [Phoneword.WinPhone] プロジェクトを右クリックし [ 追加 > 新しい項目 ] をクリ ックします << Windows Phone プロジェクトに新しい項目を追加 >> 49

4.23 [ 新しい項目の追加 ] 画面から [Visual C# > クラス ] を選択し 新しいファイルの名 前を PhoneDialer と付け [ 追加 ] ボタンをクリックします << クラスを追加 >> 4.24 [PhoneDialer.cs] ですべてのテンプレートコードを削除し 以下のコードで置き換え ます このコードは Windows Phone 8.1 で変換された電話番号で電話アプリを表示 するメソッドを含んでいます using Windows.ApplicationModel.Calls; using Phoneword.WinPhone; using Xamarin.Forms; [assembly: Dependency(typeof(PhoneDialer))] namespace Phoneword.WinPhone public class PhoneDialer : IDialer public bool Dial(string number) PhoneCallManager.ShowPhoneCallUI(number, "Phoneword"); return true; [Ctrl+S] を押して変更を保存します 50

4.25 同様に UWP プロジェクト [Phoneword.UWP] にも [PhoneDialer.cs] クラスファイルを追加し 上記コードを記述します 4.26 UWP で電話を掛ける (=Windows 10 Mobile の機能を使用する ) には UWP の拡張ライブラリを追加する必要があります UWP プロジェクトの参照を右クリックして [ 参照の追加 ] を選択し [Universal Windows > 拡張 ] から [Windows Mobile Extensions for the UWP(10.0.10586)] を追加します 4.27 [IDialer] が見つからないというエラーが表示されることがありますが Xamarin.Forms のプロジェクト [Phoneword] をビルドすると解決します << IDialer エラー >> 51

4.28 Visual Studio のメニューから [ ビルド > ソリューションのビルド ] をクリックしま す [ 出力 ] ウィンドウにビルド成功の表示がされます << ビルド正常終了 >> エラーが表示された場合は 表示が消えるまで修正を行ってください 4.29 Visual Studio で [Phoneword.Droid] をスタートアッププロジェクトに設定し ボ タンをクリックし アプリケーションを起動します << スタートアッププロジェクトに設定 >> 52

<< Android アプリ実行画面 >> 53

5 Xamarin.Forms Multiscreen Quickstart このセクションでは 先ほど作成した Xamarin.Forms アプリケーションをマルチスクリーンに対応させ ます 完成図は次のようになります 54

5.1 先ほどまで作業していた Phoneword プロジェクトを開きます << 最近使用したファイル >> 55

5.2 ソリューションエクスプローラーで Phoneword プロジェクトを右クリックし [ 追 加 > 新しい項目 ] をクリックします << 新しい項目 >> 5.3 [ 新しい項目の追加 ] 画面から [Visual C# > Forms ContentPage] を選択し 新しいフ ァイルの名前を CallHistoryPage と付け [ 追加 ] ボタンをクリックします << Forms ContentPage の追加 >> 56

5.4 [CallHistoryPage.cs] ですべてのテンプレートコードを削除し 以下のコードで置き 換えます このコードはページのユーザーインターフェースの定義を宣言していま す using System; using Xamarin.Forms; namespace Phoneword public class CallHistoryPage : ContentPage public CallHistoryPage() Title = "Recent Call"; Content = new StackLayout ; VerticalOptions = LayoutOptions.FillAndExpand, Orientation = StackOrientation.Vertical, Children = new ListView ItemsSource = App.PhoneNumbers, [Ctrl+S] を押して変更を保存します 今回 [CallHistoryPage] は XAML ではなく C# で作成しました XAML で記述したい場合は次 のコードとなります <?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:local="clr-namespace:phoneword;assembly=phoneword" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:class="phoneword.callhistorypage"> <ContentPage.Content> <StackLayout VerticalOptions="FillAndExpand" Orientation="Vertical"> <ListView ItemsSource="x:Static local:app.phonenumbers" /> </StackLayout> </ContentPage.Content> </ContentPage> 57

5.5 ソリューションエクスプローラーで App.cs をダブルクリックして開きます << App.cs >> 5.6 [App.cs] で [System.Collections.Generic] を名前空間に追加し [PhoneNumbers] プロパティを宣言し App のコンストクラターで初期化します そして [MainPage] を NavigationPage で初期化するように変更します [PhoneNumbers] コレクションは変換された各電話番号を保存するために使用されます コードの一部は次のようになります using System; using System.Collections.Generic; using Xamarin.Forms; namespace Phoneword public class App : Application public static List<string> PhoneNumbers get; set; public App ()......... PhoneNumbers = new List<string>(); MainPage = new NavigationPage(new Phoneword.MainPage()); [Ctrl+S] を押して変更を保存します 58

5.7 ソリューションエクスプローラーで MainPage.xaml をダブルクリックして開きま す << MainPage.xaml >> 5.8 MainPage.xaml で [Button] コントロールを [StackLayout] の最後に追加します この ボタンは CallHistoryPage にナビゲートするために使用されます コードの一部は 次のようになります <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Orientation="Vertical" Spacing="15">... <Button x:name="callbutton" Text="Call" IsEnabled="false" Clicked="OnCall" /> <Button x:name="callhistorybutton" Text="Call History" IsEnabled="false" Clicked="OnCallHistory" /> </StackLayout> [Ctrl+S] を押して変更を保存します 59

5.9 ソリューションエクスプローラーで MainPage.xaml.cs をダブルクリックして開き ます << MainPage.xaml.cs >> 5.10 MainPage.xaml.cs で [OnCallHistory] イベントハンドラーメソッドを追加します 次に [OnCall] イベントハンドラーメソッドを変換した電話番号を [App.PhoneNumbers] コレクションに追加し dialer 変数が null ではない時に callhistorybutton を enable にするように修正します コードの一部は次のようになります using System; using Xamarin.Forms; namespace Phoneword public partial class MainPage : ContentPage... async void OnCall(object sender, EventArgs e) If (await this.displayalert(... Var dialer = DependencyService.Get<IDialer>(); if (dialer!= null) App.PhoneNumbers.Add(translatedNumber); callhistorybutton.isenabled = true; dialer.dial (translatednumber); 60

async void OnCallHistory(object sender, EventArgs e) await Navigation.PushAsync(new CallHistoryPage()); [Ctrl+S] を押して変更を保存します 5.11 Visual Studio のメニューから [ ビルド > ソリューションのビルド ] をクリックしま す [ 出力 ] ウィンドウにビルド成功の表示がされます エラーが表示された場合は 表示が消えるまで修正を行ってください 5.12 Visual Studio で Phoneword.Droid をスタートアッププロジェクトに設定し ボ タンをクリックし アプリケーションを起動します 61

おめでとうございます! これで本講習はすべて終了です Xamarin ネイティブで Android アプリの作成方法 Xamarin.Forms で Android/UWP/Windows Phone アプリの作成方法を学びました ios アプリのビルドには Mac が必要ですので 本講習では扱っておりませんが Mac をお持ちの方は http://www.xlsoft.com/jp/products/xamarin/support.html の 初めての Xamarin.iOS アプリケーション開発 - 入門ガイド ( http://www.xlsoft.com/jp/products/xamarin/ios_hello_world.html ) などを参考に是非トライしてみてください 62