酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Zuneに接続されているかどうかを判定する

Windows Phone Advent Calendar "ひとり" 2011」第16日目です。 (遅延実行中です)

Zuneに接続されている場合等、メディア系APIが使えません(CameraCaptureTask等)。
明確な判定方法は無いのですが、一応以下の方法で判定が出来ます。

var task = new CameraCaptureTask();
Observable.FromEvent<PhotoResult>(task, "Completed")
    .Select(arg => arg.EventArgs)
    .Subscribe(arg => {
        if (arg.TaskResult == TaskResult.OK && arg.ChosenPhoto != null) {
            // カメラ撮影完了
        } else if (arg.TaskResult == TaskResult.Cancel && arg.Error == null) {
            // ユーザーがBackキーを押下で戻ってきた
        } else /* if (arg.TaskResult == TaskResult.Cancel && arg.Error != null) */ {
            // Zune等が接続されておりメディア系APIが使用出来なかった
            MessageBox.Show("Error");
        }
});
task.Show();