From 4fce67eaa2d18376f014694afcb325cd4f00e8b4 Mon Sep 17 00:00:00 2001 From: gil zhang Date: Thu, 28 Sep 2023 00:13:43 +0800 Subject: [PATCH] load app list and launch app --- .../Helpers/ElectronBotHelper.cs | 12 +++++++++ .../SpeechAndTTS/SpeechAndTTSService.cs | 27 ++++++++++++++++++- .../ModelLoadCompactOverlayViewModel.cs | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs b/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs index b16d593..08668a9 100644 --- a/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs +++ b/src/ElectronBot.Braincase/Helpers/ElectronBotHelper.cs @@ -12,6 +12,7 @@ using Windows.ApplicationModel; using Windows.Devices.Enumeration; using Windows.Devices.SerialCommunication; using Windows.Foundation; +using Windows.Management.Deployment; using Windows.Media.Playback; using Windows.Media.SpeechRecognition; @@ -149,6 +150,10 @@ public class ElectronBotHelper public SerialPort SerialPort { get; set; } = new SerialPort(); + public List AppPackages = new (); + + private PackageManager PackageManager { get; } = new PackageManager(); + public async Task InitAsync() { // Target all Serial Devices present on the system @@ -618,4 +623,11 @@ public class ElectronBotHelper frame.Actions = new OnlyAction(_angleList); ModelActionFrame?.Invoke(this, frame); } + + public void LoadAppList() + { + AppPackages.Clear(); + AppPackages = PackageManager.FindPackagesForUser(string.Empty) + .Where(p => p.IsFramework == false && !string.IsNullOrEmpty(p.DisplayName)).ToList(); + } } diff --git a/src/ElectronBot.Braincase/Services/SpeechAndTTS/SpeechAndTTSService.cs b/src/ElectronBot.Braincase/Services/SpeechAndTTS/SpeechAndTTSService.cs index 90e8ff4..f4c04ee 100644 --- a/src/ElectronBot.Braincase/Services/SpeechAndTTS/SpeechAndTTSService.cs +++ b/src/ElectronBot.Braincase/Services/SpeechAndTTS/SpeechAndTTSService.cs @@ -269,6 +269,10 @@ public class SpeechAndTTSService : ISpeechAndTTSService { ElectronBotHelper.Instance.ToPlayEmojisRandom(); } + else if (args.Result.Text.ToUpper().StartsWith("启动")) + { + await LaunchAppAsync(args.Result.Text.ToUpper().Replace("启动", "")); + } else { try @@ -336,5 +340,26 @@ public class SpeechAndTTSService : ISpeechAndTTSService } } - + private async Task LaunchAppAsync(string appFullName) + { + var package = ElectronBotHelper.Instance.AppPackages.Where(x => x.DisplayName.ToUpper().StartsWith(appFullName.ToUpper())).FirstOrDefault(); + if (ElectronBotHelper.Instance.AppPackages.Where(x => x.DisplayName.ToUpper().StartsWith(appFullName.ToUpper())).FirstOrDefault() == null) + { + package = ElectronBotHelper.Instance.AppPackages.Where(x => x.DisplayName.ToUpper().Contains(appFullName.ToUpper())).FirstOrDefault(); + } + if (package != null) + { + try + { + await package.GetAppListEntries()[0].LaunchAsync(); + } + catch(Exception ex) + { + App.MainWindow.DispatcherQueue.TryEnqueue(() => + { + ToastHelper.SendToast(ex.Message, TimeSpan.FromSeconds(3)); + }); + } + } + } } diff --git a/src/ElectronBot.Braincase/ViewModels/ModelLoadCompactOverlayViewModel.cs b/src/ElectronBot.Braincase/ViewModels/ModelLoadCompactOverlayViewModel.cs index 09a9a3d..00dc4b0 100644 --- a/src/ElectronBot.Braincase/ViewModels/ModelLoadCompactOverlayViewModel.cs +++ b/src/ElectronBot.Braincase/ViewModels/ModelLoadCompactOverlayViewModel.cs @@ -452,6 +452,7 @@ public partial class ModelLoadCompactOverlayViewModel : ObservableRecipient _timer.Start(); + ElectronBotHelper.Instance.LoadAppList(); } catch (Exception) {