前のトピックは、XAMLとUIの移植でした。
デバイス自体とそのセンサーと統合されるコードには、ユーザーからの入力とユーザーへの出力が含まれます。 また、データの処理も含まれます。 ただし、このコードは一般に UI レイヤーまたはデータ レイヤーと考えされていません。 このコードには、振動コントローラー、加速度計、ジャイロスコープ、マイクとスピーカー (音声認識と合成と交差する)、(geo) 位置、タッチ、マウス、キーボード、ペンなどの入力モダリティとの統合が含まれます。
アプリケーションのライフサイクル (プロセスの有効期間管理)
Windows Phone Silverlight アプリには、一時停止後に再度アクティブ化をサポートするために、アプリケーションの状態とそのビューステートを保存し復元するコードが含まれています。 ユニバーサル Windows プラットフォーム (UWP) アプリのアプリ ライフサイクルは、Windows Phone Silverlight アプリのライフサイクルと強い類似点を持ちます。これらはどちらも、ユーザーがフォアグラウンドで使用することを選択したどのアプリでも使用可能なリソースを最大化するという同じ目標を持って設計されているためです。 コードが新しいシステムに簡単に適応することがわかります。
手記 ハードウェアの [戻る ] ボタンを押すと、Windows Phone Silverlight アプリが自動的に終了します。 モバイル デバイス のハードウェア [戻る] ボタンを押しても、UWP アプリは自動的に終了しません。 代わりに、中断され、終了される可能性があります。 ただし、これらの詳細は、アプリケーション ライフサイクル イベントに適切に応答するアプリに対して透過的です。
"デバウンス ウィンドウ" は、アプリが非アクティブになり、システムが中断イベントを発生するまでの期間です。 UWP アプリの場合、デバウンス ウィンドウはありません。中断イベントは、アプリが非アクティブになるとすぐに発生します。
詳細については、「アプリのライフサイクルの」を参照してください。
カメラ
Windows Phone Silverlight のカメラキャプチャコードでは、Microsoft.Devices.Camera、Microsoft.Devices.PhotoCamera、または Microsoft.Phone.Tasks.CameraCaptureTask クラスを使用します。 そのコードをユニバーサル Windows プラットフォーム (UWP) に移植するには、 MediaCapture クラスを使用できます。 CapturePhotoToStorageFileAsync トピックのコード例があります。 このメソッドを使用すると、ストレージファイルに写真をキャプチャできます。アプリのパッケージマニフェストでは、マイクの デバイス機能と ウェブカメラのデバイス機能、 を設定する必要があります。
もう 1 つのオプションは CameraCaptureUI クラスで、 マイク と Web カメラデバイスの機能も必要です。
レンズ アプリは、UWP アプリではサポートされていません。
アプリが実行されているプラットフォームの検出
Windows 10 でのアプリのターゲット設定の変更に関する考え方。 新しい概念モデルでは、アプリはユニバーサル Windows プラットフォーム (UWP) を対象とし、すべての Windows デバイスで実行されます。 その後、特定のデバイス ファミリ専用の機能を点灯させることができます。 必要に応じて、アプリには、1 つ以上のデバイス ファミリを具体的にターゲットにするように制限するオプションもあります。 デバイス ファミリの詳細と、対象とするデバイス ファミリを決定する方法については、「UWP アプリガイド」を参照してください。
注 オペレーティング システムまたはデバイス ファミリを使用して機能の存在を検出しないことをお勧めします。 現在のオペレーティング システムまたはデバイス ファミリを特定することは、通常、特定のオペレーティング システムまたはデバイス ファミリ機能が存在するかどうかを判断する最適な方法ではありません。 オペレーティング システムまたはデバイス ファミリ (およびバージョン番号) を検出するのではなく、機能自体の有無をテストします (「条件付きコンパイルとアダプティブ コード
アプリの UI をさまざまなデバイスに合わせて調整するには、いくつかの手法をお勧めします。 常に自動サイズの要素と動的レイアウト パネルを引き続き使用します。 XAML マークアップでは、有効ピクセル (以前の表示ピクセル) のサイズを引き続き使用して、UI がさまざまな解像度とスケール ファクターに適応するようにします ( 「表示/有効ピクセル、表示距離、スケール ファクター」を参照)。 また、Visual State Manager のアダプティブ トリガーとセッターを使用して、UI をウィンドウ サイズに合わせて調整します (UWP アプリガイドを参照)。
ただし、デバイス ファミリを検出するのが避けられないシナリオがある場合は、それを行うことができます。 この例では、AnalyticsVersionInfo クラスを使用して、必要に応じてモバイル デバイス ファミリ用に調整されたページに移動し、それ以外の場合は既定のページにフォールバックするようにします。
if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
else
rootFrame.Navigate(typeof(MainPage), e.Arguments);
また、アプリは、有効なリソース選択要素から、実行されているデバイス ファミリを特定することもできます。 次の例では、これを命令的に行う方法を示し、ResourceContext.QualifierValues トピックでは、デバイス ファミリ要素に基づいてデバイス ファミリ固有のリソースを読み込む際のクラスのより一般的なユース ケースについて説明します。
var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);
また、条件付きコンパイルとアダプティブ コード
デバイスの状態
Windows Phone Silverlight アプリでは、 Microsoft.Phone.Info.DeviceStatus クラスを使用して、アプリが実行されているデバイスに関する情報を取得できます。 Microsoft.Phone.Info 名前空間に相当する直接的な UWP はありませんが、DeviceStatus クラスのメンバーの呼び出しの代わりに UWP アプリで使用できるプロパティとイベントをいくつか次に示します。
Windows Phone Silverlight | ユニバーサル Windows プラットフォーム (UWP) |
---|---|
ApplicationCurrentMemoryUsage および ApplicationCurrentMemoryUsageLimit プロパティ | |
ApplicationPeakMemoryUsage プロパティ | Visual Studio でメモリ プロファイル ツールを使用します。 詳細については、「 メモリ使用量の測定」を参照してください。 |
DeviceFirmwareVersion プロパティ | EasClientDeviceInformation.SystemFirmwareVersion プロパティ (デスクトップ デバイス ファミリのみ) |
DeviceHardwareVersion プロパティ | EasClientDeviceInformation.SystemHardwareVersion プロパティ (デスクトップ デバイス ファミリのみ) |
デバイスメーカー プロパティ | EasClientDeviceInformation.SystemManufacturer プロパティ (デスクトップ デバイス ファミリのみ) |
デバイス名 プロパティ | EasClientDeviceInformation.SystemProductName プロパティ (デスクトップ デバイス ファミリのみ) |
DeviceTotalMemory プロパティ | 同等の値はありません |
IsKeyboardDeployed プロパティの |
同等のものなし。 このプロパティは、一般的には使用されないモバイル デバイス用のハードウェア キーボードに関する情報を提供します。 |
IsKeyboardPresent プロパティ | 同等のものなし。 このプロパティは、一般的には使用されないモバイル デバイス用のハードウェア キーボードに関する情報を提供します。 |
キーボード展開変更 イベント | 同等のものなし。 このプロパティは、一般的には使用されないモバイル デバイス用のハードウェア キーボードに関する情報を提供します。 |
PowerSource プロパティ | 同等の値はありません |
PowerSourceChanged イベントの |
RemainingChargePercentChanged イベントを処理します (モバイル デバイス ファミリのみ)。 このイベントは、 RemainingChargePercent プロパティ (モバイル デバイス ファミリのみ) の値が 1%減少したときに発生します。 |
ロケーション
アプリ パッケージ マニフェストで Location 機能を宣言するアプリが Windows 10 で実行されると、システムはエンド ユーザーに同意を求めます。 そのため、アプリに独自のカスタム同意プロンプトが表示される場合、またはオン/オフの切り替えを提供する場合は、エンド ユーザーに 1 回だけプロンプトが表示されるように、それを削除する必要があります。
オリエンテーション
PhoneApplicationPage.SupportedOrientations プロパティと Orientation プロパティに相当する UWP アプリは、アプリ パッケージ マニフェストの uap:InitialRotationPreference 要素です。 [アプリケーション] タブがまだ選択されていない場合は選択し、[サポートされているローテーション ] の 1 つ以上のチェックボックスをオンにして、好みを記録します。
ただし、デバイスの向きや画面サイズに関係なく、UWP アプリの UI を適切に表示するように設計することをお勧めします。 その詳細については、フォーム ファクターとユーザー エクスペリエンスのの
次のトピックは ビジネスレイヤーとデータレイヤーの移植についてです。