Tôi có một ứng dụng Windows Phone 8.1 Universal mà tôi đang làm việc để thêm hỗ trợ Cortana cơ bản vào. Rất nhiều bài viết về điều này là dành cho Silverlight, vv - Tôi thấy khó tìm được thông tin thực sự tốt về điều này.yêu cầu cortana gây ra sự cố khi khởi động
Cho đến giờ, tôi đã kích hoạt hoạt động nếu ứng dụng đang chạy hoặc bị tạm ngưng. Tuy nhiên, nếu ứng dụng hoàn toàn thoát, sau đó khi kích hoạt, nó sẽ bị treo ngay lập tức. Tôi đã thử sử dụng Hockey và một thói quen "LittleWatson" đơn giản để bắt gặp sự cố, nhưng có vẻ như sẽ xảy ra quá sớm để bị bắt. Tôi đã nhìn thấy một số tài liệu tham khảo để làm một phiên bản beta tư nhân và cố gắng để có được đổ sụp đổ, nhưng tôi đã không có bất kỳ may mắn với điều đó cho đến nay.
Đây là những gì mã kích hoạt của tôi trông như thế nào trong 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);
}
}
}
}
và đây là séc của tôi cho kết quả lệnh:
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;
}
Tôi khá chắc chắn từ chèn thông điệp vv mà nó thất bại lâu trước khi nó được xa này.
Có thể có điều gì đó dễ dàng tôi thiếu nhưng tôi không biết ...
Điều gì gây ra sự cố sớm như vậy?
EDIT Một điều tôi đã thử là sử dụng cấu hình "gỡ lỗi mà không cần khởi chạy" để cố gắng nắm bắt ngoại lệ. Khi tôi làm điều này, ứng dụng dường như treo vĩnh viễn được kết nối trong trình gỡ lỗi trên màn hình giật gân. Tuy nhiên, điều đó đã khiến tôi buộc phải nghỉ ngơi. Tài khoản bị treo trong số
global::Windows.UI.Xaml.Application.Start((p) => new App());
mà tốt nhất tôi có thể nói, chỉ cho tôi biết ứng dụng đang treo ở đâu đó. Đó là dòng duy nhất trong ngăn xếp cuộc gọi.
Bạn đã thử lưu trữ tên lệnh thoại thay vì [SpeechRecognitionResult] thô (http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.media.speechrecognition. speechrecognitionresult.aspx) đối tượng? Tôi nhận thấy đó là một tài nguyên marshalled và tôi nghi ngờ điều này là gây ra ngoại lệ truy cập khi lưu trữ nó trong bộ nhớ. – lsuarez
@lthibodeaux cảm ơn bạn đã đề xuất! Tôi đã thay đổi mã để chỉ vượt qua chuỗi văn bản lệnh mà không thay đổi. –