Windows Phone : 電話着信時やリマインダー表示時に不要な機能を停止する方法

Windows Phone 開発者支援プログラムからのフィードバックに対するフォローアップです。

「電話が着信した時に、タイマーやバイブレーション機能など、不要な機能を停止するにはどうしたらいいでしょうか」という質問がありました。

こちらの答えは、「Windows Phone のアイドル検出」にあります。

https://msdn.microsoft.com/ja-jp/library/ff941090(v=vs.92).aspx

本来は、アプリケーションをずっと稼働させる特殊な目的で利用しますが、アプリで意図的にタイマーやバイブレーション機能を動作させている場合に、電話の着信直後にそれらを停止することに応用できます。

具体的には PhoneApplicationFrame.Obscured イベントを実装します。

https://msdn.microsoft.com/ja-jp/library/microsoft.phone.controls.phoneapplicationframe.obscured(v=vs.92).aspx

// 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)
{

  // 必要に応じてタイマーやラジオ、センサー、バイブレーション機能などを再開させます

}