毎度のお約束、本記事はプレビュー状態のOS、IDE、SDKを利用しております。製品版では異なる可能性があります。
ユニバーサルWindowsアプリはご存知のとおり、PCからWindows Phone、IoTデバイス、XBoxと様々な環境で動作します。 そのため、アプリケーション側で自分がどのような環境で動作しているか判定する必要が出てきます。この場合に、ドキュメントなどを眺めていると「この端末はPCか電話か?」よりも「この端末には求める機能(センサーなど)があるか?」という判定を推奨している気がします。 まぁ、新しいプラットフォームが増えた場合などにもそのほうが柔軟そうですね。
まずはコードを、
// Windows Phoneのハードウェアボタンがあるか確認する
// Add "using Windows.Foundation.Metadata;"
// Windows.Phone.UI.Input.HardwareButtonsはハードウェアボタンをコードから利用するときのクラスがある名前空間
bool isHWButton = ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons");
if (isHWButton)
{
// ハードウェアボタンが存在する場合はWindows Phone
this.text.Text = "Windows Phone";
}
else
{
// Windows Phoneじゃない
this.text.Text = "それ以外";
}
ApiInformation.IsTypePresentメソッドで判定を行いbool値の結果を得ます。
引数の「Windows.Phone.UI.Input.HardwareButtons」はハードウェアボタンを利用するときにお世話になる名前空間でしたよね。そういう指定ルールなのかなと推測。文字列じゃなくて、定数などで指定できると嬉しいですが、今のところはこのような記述になるようです。
PCと電話で確認したところ、ちゃんと動きました・・・というキャプチャーですが、シンプルすぎでした・・・。

Please give us your valuable comment