Windows 10 にて、SimpleOrientationSensor.OrientationChanged イベントに登録をすると、すぐにイベントハンドラーの呼び出しが行われる


こんにちは、Platform SDK (Windows SDK) サポートチームです。
今回は、Windows.Devices.Sensors 名前空間にある SimpleOrientationSensor クラスの動作が Windows 8.1 と Windows 10 で異なる結果になることをご案内します。

現象
SimpleOrientationSensor.OrientationChanged にイベントハンドラーを登録した際に、以下のように OS 間での動作際が発生します。

- Windows 8.1
SimpleOrientationSensor.OrientationChanged にイベントハンドラーを登録を行った後、デバイスの向きが変更になるまでイベントハンドラーの呼び出しが行われません。

- Windows 10
SimpleOrientationSensor.OrientationChanged にイベントハンドラーを登録を行った後、デバイスの向きが変更に関係なく、一度イベントハンドラーの呼び出しがおこなわれます。その後はデバイスの向きが変更になるまでイベントハンドラーの呼び出しが行われません。


原因
Windows 10 にて、SimpleOrientationSensor クラスの実装が変更となっています。WIndows 8.1 では、以下 2) の条件はございませんでした。Windows 10 では、イベントハンドラーの呼び出し可否を判断として、以下の OR 条件を満たしますと呼び出しを行う仕様となっています。

1) 前回の向きと現在の向きに差異がある
2) 初回報告である


回避策
Windows 8.1 と同じタイミングでのみイベントハンドラーの呼び出しが行われるようにすることはできません。そのため、SimpleOrientationSensor.OrientationChanged に設定されたイベントハンドラーが呼び出されましたら、SimpleOrientationSensorOrientationChangedEventArgs.Orientation  を確認を行い実装をいただく必要があります。


Skip to main content