1

これは、ファイル ピッカー サンプルから作成された Windows ユニバーサル アプリに適用されます。そのサンプルの基本コードにはContinuationManager、Windows Phone プロジェクトのクラスとファイルのOnActivatedメソッド、およびApp.xaml.cs共通NavigationHelperクラスが含まれています。

私もソリューションでMediaCaptureandを使用していますが、イベントCaptureElementを適切に処理できません。Resumingこれが私がすることです:

NavigationHelper_LoadStateカメラ プレビューを開始および停止するために、 メソッドとメソッドを使用しますNavigationHelper_SaveState(これはLiveCamera.xaml.csファイルの一部です)。

private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
    // Start the camera preview
    await StartCameraPreview();
}

private async void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
{
    // Stop the camera preview
    await StopCameraPreview();
}

これは、アプリ内のページ間を移動するときにうまく機能しますが、サスペンド/再開イベントでカメラを停止/再起動しません。

App.xaml.csResuming イベントを処理する次のメソッドを追加することで、これを修正しました(アプリの再開時SuspensionManagerにメソッドの呼び出しを処理します)。NavigationHelper_LoadState

async void App_Resuming(object sender, object e)
{
    await SuspensionManager.RestoreAsync();
}

上記のコードは、Visual Studio をアタッチして実行すると (デバッグ モードとリリース モードの両方で) うまく機能します。中断/再開イベントを受け取ると、カメラ プレビューが停止/再開し、ファイル ピッカーが適切にファイルを返します。

ただし、Visual Studio を使用せずにアプリを実行すると (アプリ リストからアプリを起動するだけ)、サスペンド/再開イベントを受信するとカメラ プレビューが停止/再開しますが、ファイル ピッカーでファイルを選択すると、"Resuming. .." プログレス バーが表示された後、アプリが単にクラッシュします。

ファイルを選択した後、どういうわけかメソッドApp_ResumingOnActivatedメソッドが衝突します。各メソッドを入力するときにこれを確認しましたMessageDialog(Visual Studio で問題を再現できないため): 画像を選択した後、アプリがクラッシュする直前に App_Resuming メッセージが簡単に表示されます (OnActivated メッセージは表示されません)。 . ファイル ピッカーの後にそのメソッドが呼び出されるとは思っていませんでした。なぜなら、VS が接続されたアプリを実行するときにそのメソッドが呼び出されることはないからです。

VS が接続されていないときに、異なる (そして、私が理解していることとは異なる) メソッドが呼び出されるのはなぜですか?

4

1 に答える 1

0

Page のコンストラクターでFileOpenPickerを実行しているため、問題が発生します。それは良いことではありません。テストのために、LoadPhoto ページにボタンを用意しました。

XAML の場合:

<Grid>
    <Button Name="myButton" Content="Click me"/>
    <Image x:Name="Image" Stretch="Uniform"/>
</Grid>

コンストラクターで:

public LoadPhoto()
{
    this.InitializeComponent();
    this.navigationHelper = new NavigationHelper(this);
    myButton.Click += (sender, e) => LaunchPicker();
}

コードはこちらからダウンロードできます

最初にファイルを選択してから、ページに移動することをお勧めします。

于 2014-09-11T07:10:44.720 に答える