0

小さなサンプル レンズ アプリケーションを作成しました。デフォルトのカメラ アプリケーションでレンズ アイコンをクリックすると、CameraCaptureTask に直接移動できるようにしたいと考えています。私のアプリケーションでは、通常のアプリ操作中にボタン クリック イベント内で既に CameraCaptureTask を呼び出しています。これを LensPicker オプションから同様に設定するにはどうすればよいですか?

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662936(v=vs.105).aspxを参照しています

LensExampleUriMapper.cs

private string tempUri;

public override Uri MapUri(Uri uri)
{
    tempUri = uri.ToString();

    // Look for a URI from the lens picker.
    if (tempUri.Contains("ViewfinderLaunch"))
    {
        // Launch as a lens, launch viewfinder screen.
        return new Uri("/MainPage.xaml", UriKind.Relative);
    }

    // Otherwise perform normal launch.
    return uri;
}

QueryString 値を渡すことを考えていたreturn new Uri("/MainPage.xaml", UriKind.Relative);ので、MainPageOnNavigatedToイベントでその QueryString 値を確認して CameraCaptureTask を呼び出し、作成した既存のイベント ハンドラーに結果をルーティングするだけです (結果の画像が MainPage に表示されます)。 . 渡す QueryString を作成しようとすると、何らかの理由でデバッグ エラーが発生します。その理由がわかりません。

編集** エラーは発生しなくなりましたが、CameraCaptureTask を呼び出すと無限ループが発生します。なんで?

LensExampleUriMapper.cs

private string tempUri;

public override Uri MapUri(Uri uri)
{
    tempUri = uri.ToString();

    // Look for a URI from the lens picker.
    if (tempUri.Contains("ViewfinderLaunch"))
    {
        // Launch as a lens, launch viewfinder screen.
        return new Uri("/MainPage.xaml?fromLensPicker=" + "fromLensPicker", UriKind.Relative);
    }

    // Otherwise perform normal launch.
    return uri;
}

MainPage.xaml.cs

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string fromLensPicker = null;
    if (NavigationContext.QueryString.TryGetValue("fromLensPicker", out fromLensPicker))
    {
        if (fromLensPicker == "fromLensPicker")
        {
            newButton_Click(null, null);  //click event that calls CameraCaptureTask
            fromLensPicker = null; //Temporarily nullifies value until MainPage is OnNavigatedTo after CameraCaptureTask completes
        }
    }
}

CameraCaptureTaskが呼び出されると、アプリケーションは廃棄され、MainPage で再開され、値QueryStringfromLensPicker == "fromLensPicker"サイク​​ル全体が繰り返し開始されると思います。どうすればこれを解決できますか?

4

2 に答える 2