Oreo の機能
Xamarin.Android を使用して、Android の最新バージョン用のアプリを開発する方法。
Android 8.0 Oreo は Google から入手できる最新バージョンの Android です。 Android Oreo では、Xamarin.Android 開発者にとって興味深い多くの新機能が提供されています。 たとえば、通知チャネル、通知バッジ、XML のカスタム フォント、ダウンロード可能なフォント、自動入力、ピクチャ イン ピクチャ (PIP) などの機能です。 Android Oreo には、これらの新しい機能のための新しい API が追加されました。Xamarin.Android 8.0 以降を使用すると、これらの API を Xamarin.Android アプリで使用できます。
この記事は、Android 8.0 Oreo 用 Xamarin.Android アプリの開発を始める際に役立つように構成されています。 必要な更新プログラムのインストール方法、SDK の構成方法、テスト用のエミュレーター (またはデバイス) の作成方法について説明します。 また、Android 8.0 Oreo の新機能の概要について説明し、Xamarin.Android アプリで Android Oreo 機能を使用する方法を示すサンプル アプリへのリンクを提供します。
要件
Xamarin ベースのアプリで Android Oreo 機能を使用するには、以下が必要です。
Visual Studio – Windows を使用している場合、Visual Studio バージョン 15.5 以降が必要です。 Mac を使用している場合は、Visual Studio for Mac バージョン 7.2.0 が必要です。
Xamarin.Android – Xamarin.Android 8.0 以降をインストールし、Visual Studio で構成する必要があります。
Android SDK – Android SDK マネージャーを介して、Android SDK 8.0 (API 26) 以降をインストールする必要があります。
はじめに
Android Oreo と Xamarin.Android の使用を始めるには、Android Oreo プロジェクトを作成する前に、最新のツールと SDK パッケージをダウンロードしてインストールする必要があります。
最新バージョンの Visual Studio に更新します。
SDK マネージャーを使用して Android 8.0.0 (API 26) 以降のパッケージとツールをインストールします。
Android Oreo (API 26) をターゲットとする新しい Xamarin.Android プロジェクトを作成します。
Android Oreo アプリをテストできるようにエミュレーターまたはデバイスを構成します。
これらの各手順を以下のセクションで説明します。
Visual Studio と Xamarin.Android を更新する
Visual Studio に Android Oreo のサポートを追加するには、次の手順を実行します。
Visual Studio 2019 の場合は、SDK マネージャーを使用して API レベル 26.0 以降をインストールします。
Visual Studio 2017 を使用している場合:
Visual Studio 2017 バージョン 15.7 以降に更新します (Visual Studio 2017 の更新に関するページを参照してください)。
SDK マネージャーを使用して API レベル 26.0 以降をインストールします。
Xamarin での Android Oreo のサポートの詳細については、Xamarin.Android 8.0 のリリース ノートを参照してください。
Android SDK をインストールする
Xamarin.Android 8.0 でプロジェクトを作成するには、最初に Xamarin Android SDK マネージャーを使用して Android 8.0 - Oreo 以降の SDK プラットフォームをインストールする必要があります。 Android SDK Tools 26.0 以降もインストールする必要があります。
SDK マネージャーを起動します (Visual Studio で [ツール] > [Android] > [Android SDK マネージャー] をクリックします)。
Android 8.0 - Oreo パッケージをインストールします。 Android SDK エミュレーターを使用している場合は、後で必要になる x86 システム イメージを必ず含めてください。
Android SDK Tools 26.0.2 以降、Android SDK Platform-Tools 26.0.0 以降、および Android SDK Build-Tools 26.0.0 (以降) をインストールします。
Xamarin.Android プロジェクトを開始する
新しい Xamarin.Android プロジェクトを作成する。 Xamarin を使用した Android の開発を初めて行う場合は、「Hello, Android」を参照して、Xamarin.Android プロジェクトの作成について学習してください。
Android プロジェクトを作成するときは、Android 8.0 以降をターゲットとするようにバージョン設定を構成する必要があります。 たとえば、Android 8.0 をプロジェクトのターゲットとするには、プロジェクトのターゲット Android API レベルを Android 8.0 (API 26) に構成する必要があります。 また、ターゲット フレームワーク レベルを API 26 以降に設定することをお勧めします。 Android API レベルの構成の詳細については、「Android API レベルの理解」を参照してください。
エミュレーターまたはデバイスを構成する
Android SDK Tools 26.0 以降をインストールした後、既定の Google GUI ベースの AVD マネージャーを起動しようとすると、次のエラー ダイアログが表示され、代わりにコマンド ライン AVD マネージャー ツールの avdmanager を使用するように指示される場合があります。
このメッセージが表示されるのは、Google から API 26.0 以降をサポートするスタンドアロンの GUI AVD マネージャーを提供されなくなったためです。 Android 8.0 Oreo の場合は、Xamarin Android エミュレーター マネージャーまたはコマンドラインの avdmanager
ツールを使用して、Android Oreo 用の仮想デバイスを作成する必要があります。
Android デバイス マネージャーを使用して仮想デバイスを作成および管理する方法については、「Android Device Manager による仮想デバイスの管理」を参照してください。 Android デバイス マネージャーを使用せずに仮想デバイスを作成するには、次のセクションの手順を実行します。
avdmanager を使用して仮想デバイスを作成する
avdmanager を使用して新しい仮想デバイスを作成するには、次の手順を実行します。
コマンド プロンプト ウィンドウを開き、
JAVA_HOME
をコンピューター上の Java SDK の場所に設定します。 一般的な Xamarin のインストールでは、次のコマンドを使用できます。setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131"
Android SDK の
bin
フォルダーの場所をPATH
に追加します。 一般的な Xamarin のインストールでは、次のコマンドを使用できます。setx PATH "%PATH%;C:\Program Files (x86)\Android\android-sdk\tools\bin"
このコマンド プロンプト ウィンドウを閉じて、新しいコマンド プロンプト ウィンドウを開きます。 avdmanager コマンドを使用して、新しい仮想デバイスを作成します。 たとえば、API レベル 26 の x86 システム イメージを使用して AVD-Oreo-8.0 という名前の AVD を作成するには、次のコマンドを使用します。
avdmanager create avd -n AVD-Oreo-8.0 -k "system-images;android-26;google_apis;x86"
[Do you wish to create a custom hardware profile [no]]\(カスタム ハードウェア プロファイルを作成しますか [いいえ]\) のプロンプトが表示されたら、「no」と入力して既定のハードウェア プロファイルのままにすることができます。 「yes」と入力すると、avdmanager から、ハードウェア プロファイルをカスタマイズするための質問の一覧に答えるように求められます。
avdmanager を使用して仮想デバイスを作成すると、デバイスのプルダウン メニューに追加されます。
テストおよびデバッグ用の Android Emulator の構成の詳細については、「Android Emulator でのデバッグ」を参照してください。
Nexus、Pixel などの物理デバイスを使用している場合は、自動無線 (OTA) 更新でデバイスを更新するか、システム イメージをダウンロードしてデバイスを直接フラッシュすることができます。 デバイスを Android Oreo に手動で更新する方法の詳細については、「Factory Images for Nexus and Pixel Devices (Nexus および Pixel デバイスのファクトリ イメージ)」を参照してください。
新機能
Android Oreo では、通知チャネル、通知バッジ、XML のカスタム フォント、ダウンロード可能なフォント、自動入力、ピクチャインピクチャなど、さまざまな新機能が導入されました。 以下のセクションでは、これらの機能について説明し、アプリでの使用を開始するのに役立つリンクを示します。
通知チャネル
"通知チャネル" は、通知のアプリ定義のカテゴリです。 送信する必要がある通知の種類ごとに通知チャネルを作成できます。また、アプリのユーザーが行った選択を反映する通知チャネルを作成できます。 新しい通知チャネル機能を使用すると、さまざまな種類の通知をきめ細かく制御できます。 たとえば、メッセージング アプリを実装している場合、ユーザーが作成する会話グループごとに個別の通知チャネルを作成できます。
「通知チャネル」では、通知チャネルを作成し、ローカル通知の投稿に使用する方法について説明しています。
通知バッジ
通知バッジは、次のスクリーンショットに示すように、アプリ アイコンの上に表示される小さなドットです。
これらのドットは、そのアプリ アイコンに関連付けられたアプリの 1 つ以上の通知チャネルに、新しい通知があることを示します。これらは、ユーザーがまだ破棄または操作していない通知です。 ユーザーは、アイコンを長押しして通知バッジに関連付けられた通知をひと目で確認することや、表示される長押しメニューから通知を破棄または操作することができます。
通知バッジの詳細については、Android デベロッパーの通知バッジのトピックを参照してください。
XML 内のカスタム フォント
Android Oreo では "XML 内のフォント" が導入され、カスタム フォントをリソースとして組み込むことができるようになりました。 OpenType (.otf) と TrueType (.ttf) のフォント形式がサポートされています。 フォントをリソースとして追加するには、次の手順を実行します。
Resources/font フォルダーを作成します。
フォント ファイル (たとえば、.ttf ファイルや .otf ファイル) を Resources/font にコピーします。
必要に応じて、Android ファイルの名前付け規則に準拠するように各フォント ファイルの名前を変更します (つまり、ファイル名には小文字の a-z、0-9、アンダースコアのみを使用します)。 たとえば、フォント ファイル
Pacifico-Regular.ttf
はpacifico.ttf
のような名前に変更できます。レイアウト XML で新しい
android:fontFamily
属性を使用して、カスタム フォントを適用します。 たとえば、次のTextView
宣言では、追加された pacifico.ttf フォント リソースが使用されます。<TextView android:text="Example Text in Pacifico Regular" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pacifico" />
また、複数のフォントとスタイル、太さの詳細を記述するフォント ファミリ XML ファイルを作成することもできます。 詳細については、Android デベロッパーの「Fonts in XML (XML 内のフォント)」トピックを参照してください。
ダウンロード可能なフォント
Android Oreo 以降、アプリは APK にフォントをバンドルするのではなく、プロバイダーにフォントを要求できるようになりました。 フォントは、必要な場合にのみネットワークからダウンロードされます。 この機能により、APK のサイズが小さくなり、携帯電話のメモリと携帯電話データの使用量が節約されます。 Android サポート ライブラリ 26 パッケージをインストールすることで、Android API バージョン 14 以降でこの機能を使用することもできます。
アプリにフォントが必要な場合は、(ダウンロードするフォントを指定して) FontsRequest
オブジェクト を作成し、それを FontsContract
メソッドに渡してフォントをダウンロードします。 次の手順では、フォントのダウンロード プロセスについて詳しく説明します。
FontRequest オブジェクトをインスタンス化します。
FontsContract.FontRequestCallback をサブクラス化してインスタンス化します。
FontRequestCallback.OnTypeFaceRetrieved メソッドを実装します。これは、フォント要求の完了を処理するために使用されます。
FontRequestCallback.OnTypeFaceRequestFailed メソッドを実装します。これは、フォント要求プロセス中に発生したエラーをアプリに通知するために使用されます。
FontsContract.RequestFonts メソッドを呼び出して、フォント プロバイダーからフォントを取得します。
RequestFonts
メソッドを呼び出すと、最初に (前の RequestFont
の呼び出しから) フォントがローカルにキャッシュされているかどうかが確認されます。 キャッシュされていない場合は、フォント プロバイダーを呼び出し、非同期でフォントを取得し、OnTypeFaceRetrieved
メソッドを呼び出して結果をアプリに返します。
フォントのダウンロードの詳細については、Android デベロッパーの「DownloadableFonts」トピックを参照してください。
自動入力
Android Oreo の新しい "自動入力" フレームワークを使用すると、ユーザーはログイン、アカウント作成、クレジット カード トランザクションなどの繰り返し発生するタスクを簡単に処理できるようになります。 ユーザーは、(入力エラーにつながる可能性がある) 情報を再入力する時間が短縮されます。 アプリで自動入力フレームワークを使用するには、システム設定で自動入力 サービスを有効にしておく必要があります (ユーザーは自動入力を有効または無効にできます)。
新しい自動入力機能と、自動入力用にアプリを最適化する方法の詳細については、Android デベロッパーの「自動入力フレームワーク」トピックを参照してください。
ピクチャ イン ピクチャ (PIP)
Android Oreo を使用すると、アクティビティを ピクチャインピクチャ (PIP) モードで起動して、別のアクティビティの画面をオーバーレイすることができます。 この機能は、ビデオの再生を目的としています。
アプリのアクティビティで PIP モードを使用できるように指定するには、Android マニフェストで次のフラグを true に設定します。
android:supportsPictureInPicture
PIP モードの場合のアクティビティの動作を指定するには、新しい PictureInPictureParams オブジェクトを使用します。 PictureInPictureParams
は、PIP モードでアクティビティを初期化および更新するために使用する一連のパラメーターを表します (たとえば、アクティビティの優先縦横比)。 Android Oreo の Activity
には、次の新しい PIP メソッドが追加されました。
EnterPictureInPictureMode – アクティビティを PIP モードにします。 アクティビティは画面の隅に配置され、画面の残りの部分には画面上にあった前のアクティビティが表示されます。
SetPictureInPictureParams – アクティビティの PIP 構成設定を更新します (たとえば、縦横比の変更)。
その他の機能
Android Oreo には、他にも多数の新機能が追加されました。たとえば、絵文字サポート ライブラリ、Location API、背景の制限、アプリの広色域、新しいオーディオ コーデック、WebView の機能強化、キーボード ナビゲーション サポートの向上、ハイパフォーマンス低遅延のオーディオを実現するための新しい AAudio (プロ オーディオ) API などです。これらの機能の詳細については、Android デベロッパーの Android Oreo の機能と API のトピックを参照してください。
動作の変更
Android Oreo には、既存のアプリの機能に影響を与える可能性があるさまざまなシステムと API の動作の変更が含まれています。 ここでは、これらの変更について説明します。
バックグラウンド実行の制限
Android Oreo では、ユーザー エクスペリエンスを向上させるために、バックグラウンドで実行中にアプリが実行できる機能に制限を設けています。 たとえば、ユーザーがビデオを見たりゲームをプレイしている場合、バックグラウンドで実行されているアプリによって、フォアグラウンドで実行されているビデオを多様するアプリのパフォーマンスが損なわれる可能性があります。 その結果、Android Oreo では、ユーザーと直接対話していないアプリに次の制限が課されるようになりました。
バックグラウンド サービスの制限 – バックグラウンドでアプリが実行されている場合、引き続きサービスを作成および使用できる数分間の期間が与えられます。 その期間が終了すると、Android によってアプリのバックグラウンド サービスは停止され、"アイドル" として処理されます。
ブロードキャストの制限 – Android 7.0 (API 25) によって、アプリで受信するために登録するブロードキャストに制限が課せられました。 Android Oreo では、これらの制限がさらに厳しくなりました。 たとえば、Android Oreo アプリでは、マニフェストで暗黙的なブロードキャスト用のブロードキャスト レシーバーを登録できなくなりました。
新しいバックグラウンド実行の制限の詳細については、Android デベロッパーの「バックグラウンド実行制限」トピックを参照してください。
重大な変更
Android Oreo 以降をターゲットとするアプリでは、該当する場合、以下の変更点をサポートするようにアプリを変更する必要があります。
Android Oreo では、個々の通知の優先度を設定する機能が廃止されました。 代わりに、通知チャネルを作成するときに推奨される重要度レベルを設定します。 通知チャネルに割り当てる重要度レベルは、通知チャネルに投稿されるすべての通知メッセージに適用されます。
Android Oreo をターゲットとするアプリの場合、バックグラウンドで開始されるサービスには新しい制限が課されるため、
PendingIntent.GetService()
は機能しません。 Android Oreo をターゲットにしている場合は、代わりに PendingIntent.GetBroadcast を使用する必要があります。
ビデオ
C# を使用した Android 8.0 Oreo での開発
まとめ
この記事では、Android Oreo について紹介し、Android Oreo での Xamarin.Android 開発用に最新のツールとパッケージをインストールして構成する方法について説明しました。 Android Oreo で使用できる主な機能の概要を説明し、いくつかの新機能のソース コードのリンクを示しました。 Android Oreo 用アプリを作り始めるために役立つ API ドキュメントと Android デベロッパー トピックへのリンクが記載されています。 また、既存のアプリに影響する可能性のある最も重要な Android Oreo の動作の変更点についても説明しました。