Windows7にインストールしたXamarinStudioを使ってXamarin.Androidのサンプルを実装します。Hello, Androidのチュートリアルを使います。手順ではプロジェクト名がPhoneword_Droid
ですが、Phoneword.Android
に変更してnamespaceにも使います。完成したコードはGitHubのPhoneWordのリポジトリにあります。
Getting Started
Xamarin DevelopersのGetting Startedを開きます。
Xamarin App Icons & Launch Screens set
プロジェクトに追加するアインコンのXamarin App Icons & Launch Screens setのzipファイルをダウンロードして解凍します。
PhoneWordソリューションの作成
PhoneWordソリューションを作成します。
- New Solution… -> その他 > 空のソリューション

PhoneWord.Androidプロジェクトの作成
新しいプロジェクトのダイアログを表示します。
- PhoneWordソリューションのギアアインコン -> 追加 -> 新しいプロジェクトを追加
PhoneWord.Androidプロジェクトを作成します。
- C# -> Android -> Android Applicationテンプレート

Main.axmlの編集
デザイン サーフェイスを開きます。
- Resourcesフォルダ -> layoutフォルダ -> Main.axmlをダブルクリック
Buttonを選択して、Deleteキーを押して削除します。
Toolboxから、Text (Large) コントロールを、デザイン サーフェイスへドラッグ&ドロップします。Text (Large) コントロールを選択して、プロパティ パッドでTextプロパティを編集します。
- Text property: Enter a Phoneword:
Plain Text コントロールを、 デザイン サーフェイスへ、Text (Large)コントロールの下にドラッグ&ドロップします。
- Plain Text コントロールを選択し、Id プロパティとTextプロパティ変更する
- Id property: @+id/PhoneNumberText
- Text property: 1-855-XAMARIN
Toolboxから、Button コントロールを、デザイン サーフェイスへ、Plain Text コントロールの下にドラッグ&ドロップします。
- Buttonコントロールを選択して、 プロパティ パッドから、Id プロパティとTextプロパティ変更する
- Id property: @+id/TranslateButton
- Text property: Translate
Toolboxから、Button コントロールを、デザイン サーフェイスへ、TranslateButtonの下にドラッグ&ドロップします。
- Buttonコントロールを選択して、 プロパティ パッドから、Id プロパティとTextプロパティ変更する
- Id property: @+id/CallButton
- Text property: Call
ここまでの作業をCtrl + s
で保存します。

PhoneTranslator.cs の追加
PhoneTranslator.csを追加して、電話番号を英数字から数字に変換するコードを記述します。
- PhoneWordソリューション -> PhoneWord.Android プロジェクト
- ギアアインコン -> 追加 -> General -> 新しいファイルを追加
- General -> 空のクラス
- 名前: PhoneTranslator

以下のようにPhoneTranslator.csを作成します。
using System.Text; |
Ctrl + s
でPhoneTranslator.csを保存します。
MainActivity.cs
PhoneWordソリューション から、MainActivity.csをダブルクリックして、ユーザーインタフェースの記述をします。以下のような状態のOnCreateメソッドに追加してコードを書いていきます。
using System; |
OnCreateメソッドにコントローラーへの参照を追加します。
// Get our UI controls from the loaded layout |
TranslateButtonのイベントリスナーを追加します。
// Disable the "Call" button |
CallButtonのイベントリスナーを追加しますが、namespaceを定義しているため以下のようにusing Uri = Android.Net.Uri;
を追加します。
using Uri = Android.Net.Uri; |
AndroidManifest.xmlにphone callパーミッションを追加
AndroidManifest.xmlが見つからない場合は、一度ソリューションを閉じて開き直します。
- PhoneWordソリューション -> Properties -> AndroidManifest.xml
- Required Permissions -> Call Phone にチェック

ビルド
ビルドに成功するとXamarin Studioの上部メッセージ欄に「ビルド成功」のメッセージが表示されます。
- メニュー -> ビルド -> すべてビルド

MainActivity.csのLabel編集
スクリーンのトップに表示されるLabelを編集します。
namespace PhoneWord.Android |
AndroidManifest.xmlにアプリ名とアイコンを追加
- Application name: Phoneword
デフォルトのIcon.pngを右クリックして削除します。
- Resource -> drawble -> Icon.pngを右クリックして削除 -> Delete
ダウンロードして解凍したXamarin App Icons setのフォルダからアイコンをコピーします。
- Resource -> drawbleを右クリック -> 追加 -> ファイルを追加
ダイアログでCopy the file to the directoryを選択します。
- XamarinAppIconsAndLaunchImages -> Xamarin App Icons and Launch Images -> Android drawable -> Icon.png
drawable-* フォルダを追加
残りのdrawable-* フォルダのIcon.pngをすべてフォルダごとコピーします。
- Resourceを右クリック -> 追加 -> Add Existing Folder

AndroidManifest.xmlにアイコンを追加します。
- AndroidManifest.xml -> Application icon -> @drawable/iconを選択
Genymotionを起動
一覧からGoogle Nexus 4 - 4.4.4 - (API19) - 768x1280
を起動します。

エミュレータが起動しました。

Xamarin Studioのデバイスの選択ボックスからGenymotionのデバイスを選択します。
- Phisical Devices -> Genymo…(API19)
Xamarin Studioの左上の再生ボタンをクリックしてDebug実行します。

Genymotionのエミュレータで確認
PhoneWordアイコンをタップしてアプリを起動します。

Translateボタンを押します。Callボタンがアクティブになり、数値に変換された電話番号が表示されました。

Callボタンを押します。電話をかけるダイアログが表示されました。

Git
Version Control in Xamarin Studioを参考にして、PhoneWordソリューションディレクトリに.gitignore
を作成します。
#Autosave files |
ローカルにGitのリポジトリを作成してcommitします。
> cd C:\Users\masato\Documents\Projects\PhoneWord |
GitHubにリモートリポジトリを作成して追加します。
$ git remote add origin https://github.com/masato/PhoneWord.git |