基本的な Cortana サポートの追加に取り組んでいる Windows Phone 8.1 ユニバーサル アプリがあります。これに関する記事の多くは、Silverlight などに関するものです。これに関する本当に良い情報を見つけるのは難しいと思います。
これまでのところ、アプリが既に実行中または中断されている場合は、アクティベーションが機能しています。ただし、アプリが完全に終了した場合、アクティブ化するとすぐにクラッシュします。ホッケーと単純な「LittleWatson」ルーチンを使用してクラッシュをキャッチしようとしましたが、キャッチするには早すぎるようです。プライベート ベータを実行してクラッシュ ダンプを取得しようとしているという言及を見たことがありますが、これまでのところうまくいきませんでした。
私のアクティベーションコードは次のようになりapp.xaml.cs
ます。
protected override void OnActivated(IActivatedEventArgs args) {
base.OnActivated(args);
ReceivedSpeechRecognitionResult = null;
if (args.Kind == ActivationKind.VoiceCommand) {
var commandArgs = args as VoiceCommandActivatedEventArgs;
if (commandArgs != null) {
ReceivedSpeechRecognitionResult = commandArgs.Result;
var rootFrame = Window.Current.Content as Frame;
if (rootFrame != null) {
rootFrame.Navigate(typeof(CheckCredentials), null);
}
}
}
}
コマンド結果のチェックは次のとおりです。
private async Task CheckForVoiceCommands() {
await Task.Delay(1); // not sure why I need this
var speechRecognitionResult = ((App)Application.Current).ReceivedSpeechRecognitionResult;
if (speechRecognitionResult == null) {
return;
}
var voiceCommandName = speechRecognitionResult.RulePath[0];
switch (voiceCommandName) {
// omitted
}
((App)Application.Current).ReceivedSpeechRecognitionResult = null;
}
メッセージなどを挿入することから、ここまで到達するずっと前に失敗することは間違いありません。
見逃している簡単なものがある可能性がありますが、何がわかりません...
こんなに早いクラッシュの原因は何ですか?
編集私が試したことの1つは、「起動せずにデバッグ」構成を使用して例外をキャッチしようとすることです。これを行うと、スプラッシュ画面のデバッガーに接続されたアプリが永遠にハングしているように見えます。しかし、それで強制的に休憩できました。それはハングアップします
global::Windows.UI.Xaml.Application.Start((p) => new App());
私が知る限り、アプリがどこかでハングしていることがわかります。それがコール スタック内の唯一の行です。