4

私は数か月間WindowsPhone7アプリに取り組んでおり、コードがエミュレーター、バックグラウンド/フォアグラウンドスレッド、またはで実行されているかどうかなどをテストするために使用される便利な検出フラグのコレクションを持っています設計時間。(ここで完全なリストを参照してください)

ここで、ユーザーが報告している問題を防ぐために、電話がUSBケーブルを使用してデスクトップに接続されているかどうかを確認する新しいフラグを追加したいと思います。電話がZuneソフトウェアに接続されている間はブロックされる特定の操作があります。たとえば、カメラを使用できません(e.TaskResult == Microsoft.Phone.Tasks.TaskResult.Cancelで開くだけで、すぐに閉じます)。これにより、ユーザーは写真をキャンセルしたとアプリに認識させますが、ユーザーはこれをアプリが正しく機能していないと誤解します。

電話がZuneソフトウェアに接続されていることを検出し、カメラを切断するまでカメラが機能しないというメッセージを表示したいと思います。これを行う方法はありますか?

4

3 に答える 3

3

Gabor Dolhaiには、 Zune検出とネットワーク認識に関する完全なブログ投稿があります。これは、NetworkInterfaceType検出とNetworkAddressChangeedイベントの組み合わせを使用します。

于 2011-01-20T14:45:13.113 に答える
1

マイクとデレクからの回答を確認した後、CameraCaptureTask予想よりも早く戻ってきたことを検出するために、簡単なタイマーを使用することにしました。これは、キャプチャタスクを開始するための呼び出しの直前に次を追加することによって行われます。

State["CameraCaptureStart"] = DateTime.Now;//Save start time to detect fast cancel from zune software

次に、キャプチャが終了すると、戻りが速すぎるかどうかを検出できます。

//Detect if task returned too fast
if (State.ContainsKey("CameraCaptureStart"))
{
    DateTime dtStart = (DateTime)State["CameraCaptureStart"];
    TimeSpan ts = DateTime.Now - dtStart;
    if (ts < TimeSpan.FromSeconds(3))
    {
        MessageBox.Show("Error: Camera does not work while phone is connected to the Zune software.");
    }
}

私のテストでは、カメラをロードして写真を撮り、承認ボタンを押すのに約5〜6秒かかりましたが、Zuneソフトウェアは自動的にキャンセルして約2.5秒で戻ります。

このアプローチは単純で、私の状況ではうまく機能しますが、3秒のタイムアウトが経過する前にユーザーが戻るボタンを押した場合にも、エラーメッセージが表示されることに注意してください。

于 2011-02-14T00:18:00.330 に答える
1

NetworkInterfaceTypeがイーサネットであるかどうかをテストすると、近づきますが、完全には近づきません。これは、接続のZuneとWPConnectのステータスに影響されないためです。また、NetworkInterfaceTypeを読むことは、公園を散歩するよりも少ないことを証明することもできます。

結果として生じる例外の処理は信頼できる方法のようですが、例外は一部のメディアAPI間で異なるように見えるため、注意してください。

于 2011-01-20T07:16:14.950 に答える