Ho un'app universale per Windows Phone 8.1 su cui sto lavorando per aggiungere il supporto Cortana di base a. Molti articoli su questo sono per Silverlight, ecc. - Sto trovando difficile trovare davvero buone informazioni a riguardo.invocazione cortana causa arresto anomalo all'avvio
Finora, ho attivato l'attivazione se l'app è già in esecuzione o sospesa. Tuttavia, se l'app è completamente chiusa, all'attivazione si blocca immediatamente. Ho provato ad usare Hockey e una semplice routine "LittleWatson" per catturare l'incidente, ma sembra che accada troppo presto per essere catturato. Ho visto alcuni riferimenti a fare una beta privata e cercare di ottenere il crash dump, ma finora non ho avuto fortuna.
Ecco ciò che il mio codice di attivazione assomiglia in 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);
}
}
}
}
e qui è il mio assegno per il risultato comando:
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;
}
Sono abbastanza sicuro di inserire messaggi ecc che fallisce molto prima che arrivi così lontano.
C'è probabilmente qualcosa di semplice che mi manca, ma non so che cosa ...
cosa sta causando il crollo così presto?
EDIT Una cosa che ho provato è usare la configurazione "debug senza avvio" per cercare di catturare l'eccezione. Quando faccio questo, l'app sembra bloccarsi per sempre connessa nel debugger nella schermata iniziale. Tuttavia, questo mi ha permesso di forzare una pausa. Si blocca in
global::Windows.UI.Xaml.Application.Start((p) => new App());
che come meglio posso dire, mi dice che l'app è appesa da qualche parte. Questa è l'unica linea nello stack di chiamate.
Hai provato la memorizzazione del nome del comando vocale al posto del greggio [SpeechRecognitionResult] (http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.media.speechrecognition. speechrecognitionreult.aspx) oggetto? Ho notato che si tratta di una risorsa controllata e temo che questo stia causando eccezioni di accesso quando lo si archivia in memoria. – lsuarez
@lthibodeaux grazie per il tuo suggerimento! Ho cambiato il codice per passare solo la stringa di testo del comando senza modifiche. –