Windows Phone : 電話着信時やリマインダー表示時に不要な機能を停止する方法
Windows Phone 開発者支援プログラムからのフィードバックに対するフォローアップです。
「電話が着信した時に、タイマーやバイブレーション機能など、不要な機能を停止するにはどうしたらいいでしょうか」という質問がありました。
こちらの答えは、「Windows Phone のアイドル検出」にあります。
https://msdn.microsoft.com/ja-jp/library/ff941090(v=vs.92).aspx
本来は、アプリケーションをずっと稼働させる特殊な目的で利用しますが、アプリで意図的にタイマーやバイブレーション機能を動作させている場合に、電話の着信直後にそれらを停止することに応用できます。
具体的には PhoneApplicationFrame.Obscured イベントを実装します。
// Obscured, Unobscuredの イベントハンドラーの実装 (MainPage.xamlなどで行ってください)
PhoneApplicationFrame rootFrame = (Application.Current as App).RootFrame;
rootFrame.Obscured += OnObscured;
rootFrame.Unobscured += OnUnobscured;
void OnObscured(Object sender, ObscuredEventArgs e)
{
// タイマーやラジオ、センサー、バイブレーション機能などを停止させます
// 例: VibrateController.Default.Stop();
}
void Unobscured(Object sender, EventArgs e)
{
// 必要に応じてタイマーやラジオ、センサー、バイブレーション機能などを再開させます
}