小さなサンプル レンズ アプリケーションを作成しました。デフォルトのカメラ アプリケーションでレンズ アイコンをクリックすると、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 で再開され、値QueryString
とfromLensPicker == "fromLensPicker"
サイクル全体が繰り返し開始されると思います。どうすればこれを解決できますか?