From 0fae4da57829df26f7f0f775662aaf7ff2cc5864 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 12:54:48 +0000 Subject: [PATCH 01/22] voice recognition Signed-off-by: qianchuang --- sa_profile/accessibility.cfg | 3 ++- services/aams/BUILD.gn | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sa_profile/accessibility.cfg b/sa_profile/accessibility.cfg index 8de1a3484..7960a2f47 100644 --- a/sa_profile/accessibility.cfg +++ b/sa_profile/accessibility.cfg @@ -26,7 +26,8 @@ "ohos.permission.CONNECT_ACCESSIBILITY_EXTENSION", "ohos.permission.FILTER_INPUT_EVENT", "ohos.permission.MANAGE_MOUSE_CURSOR", - "ohos.permission.REPORT_RESOURCE_SCHEDULE_EVENT" + "ohos.permission.REPORT_RESOURCE_SCHEDULE_EVENT", + "ohos.permission.ACCESS_SYSTEM_SETTINGS" ], "permission_acls" : [ "ohos.permission.INTERCEPT_INPUT_EVENT", diff --git a/services/aams/BUILD.gn b/services/aams/BUILD.gn index 270fa7eea..06ee62a12 100644 --- a/services/aams/BUILD.gn +++ b/services/aams/BUILD.gn @@ -68,6 +68,7 @@ accessibleabilityms_files = [ "${services_path}/src/accessibility_resource_bundle_manager.cpp", "${services_path}/src/accessibility_setting_observer.cpp", "${services_path}/src/accessibility_setting_provider.cpp", + "${services_path}/src/accessibility_settings_connection.cpp", "${services_path}/src/accessibility_short_key_dialog.cpp", "${services_path}/src/accessibility_datashare_helper.cpp", "${services_path}/src/touch_exploration_multi_finger_gesture.cpp", @@ -137,7 +138,8 @@ ohos_shared_library("accessibleabilityms") { "safwk:system_ability_fwk", "samgr:samgr_proxy", "window_manager:libdm", - "graphic_2d:librender_service_base" + "graphic_2d:librender_service_base", + "user_status_awareness:user_status_client", ] if (accessibility_feature_power_manager) { From 43afdc2a68de178b5c8817eca86e0e87fb44cdfe Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 12:54:59 +0000 Subject: [PATCH 02/22] 1 Signed-off-by: qianchuang --- .../src/accessibility_settings_connection.cpp | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 services/aams/src/accessibility_settings_connection.cpp diff --git a/services/aams/src/accessibility_settings_connection.cpp b/services/aams/src/accessibility_settings_connection.cpp new file mode 100644 index 000000000..9f1d0ad9f --- /dev/null +++ b/services/aams/src/accessibility_settings_connection.cpp @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "accessibility_settings_connection.h" + +#include +#include "message_parcel.h" +#include "hilog_wrapper.h" +#include "nlohmann/json.hpp" +#include "extension_manager_client.h" + +namespace OHOS { +namespace Accessibility { + +const int64_t WAIT_INTERVAL = 5000; // 5s +constexpr int32_t DEFAULT_USER_ID = -1; +const std::string SETTINGS_BUNDLE_NAME = "com.huawei.hmos.settings"; +const std::string SERVICE_EXTENSION_ABILITY_NAME = "SettingsExtService"; +const std::string VOICE_RECOGNITION = "voiceRecognition"; +const std::string METHOD_KEY = "method"; +const std::string EXTRA_KEY = "extra"; +const std::string EXTRA_VALUE_KEY = "soundType"; +constexpr int32_t SETTINGS_VOICE_RECOGNITION_CODE = 7; + +void AccessibilitySettingsConnection::OnAbilityConnectDone(const AppExecFwk::ElementName &element, + const sptr &remoteObject, int32_t resultCode) +{ + HILOG_INFO("on ability connected done"); + if (resultCode != ERR_OK) { + HILOG_ERROR("ability connect failed: %{public}d", resultCode); + return; + } + if (remoteObject == nullptr) { + HILOG_ERROR("remoteObject is null"); + return; + } + HILOG_INFO("got remoteObject"); + std::unique_lock lock(mutex_); + remoteObject_ = remoteObject; + waitFlag_ = true; + cv_.notify_all(); +} + +void AccessibilitySettingsConnection::OnAbilityDisconnectDone(const AppExecFwk::ElementName &element, int resultCode) +{ + HILOG_INFO("on ability disconnected done"); + std::unique_lock lock(mutex_); + waitFlag_ = false; + remoteObject_ = nullptr; +} + +sptr AccessibilitySettingsConnection::GetRemoteObject() +{ + std::unique_lock lock(mutex_); + if (!cv_.wait_for(lock, std::chrono::milliseconds(WAIT_INTERVAL), [this]() { return waitFlag_; })) { + HILOG_ERROR("wait for remote object timeout"); + return nullptr; + } + return remoteObject_; +} + +AccessibilitySettingsManager::AccessibilitySettingsManager() +{ + connection_ = sptr (new (std::nothrow) AccessibilitySettingsConnection()); +} + +AccessibilitySettingsManager& AccessibilitySettingsManager::GetInstance() +{ + static AccessibilitySettingsManager instance; + return instance; +} + +void AccessibilitySettingsManager::VoiceRecognize(int32_t soundType) +{ + HILOG_INFO("called, soundType=%{public}d", soundType); + sptr remote = GetRemoteObject(); + if (remote == nullptr) { + HILOG_ERROR("cannot get remote object"); + return; + } + std::string message = CreateJsonMessage(soundType); + SendRequestToSetting(remote, message); + DisconnectSettingsExtService(); +} + +int32_t AccessibilitySettingsManager::ConnectSettingsExtService() +{ + HILOG_INFO("called"); + AAFwk::Want want; + want.SetElementName(SETTINGS_BUNDLE_NAME, SERVICE_EXTENSION_ABILITY_NAME); + int32_t ret = AAFwk::ExtensionManagerClient::GetInstance().ConnectServiceExtensionAbility(want, connection_, + nullptr, DEFAULT_USER_ID); + return ret; +} + +void AccessibilitySettingsManager::DisconnectSettingsExtService() +{ + auto disconnectResult = AAFwk::ExtensionManagerClient::GetInstance().DisconnectAbility(connection_); + if (disconnectResult != ERR_OK) { + HILOG_ERROR("disconnect failed, ret=%{public}d", disconnectResult); + } +} + +sptr AccessibilitySettingsManager::GetRemoteObject() +{ + int32_t connectResult = ConnectSettingsExtService(); + if (connectResult != ERR_OK) { + HILOG_ERROR("connect failed, ret=%{public}d", connectResult); + return nullptr; + } + HILOG_INFO("connect success"); + return connection_->GetRemoteObject(); +} + +std::string AccessibilitySettingsManager::CreateJsonMessage(int32_t soundType) +{ + nlohmann::json jsonMessageObj; + nlohmann::json jsonExtraValue; + + jsonExtraValue[EXTRA_VALUE_KEY] = soundType; + jsonMessageObj[METHOD_KEY] = VOICE_RECOGNITION; + jsonMessageObj[EXTRA_KEY] = jsonExtraValue; + + return jsonMessageObj.dump(); +} + +void AccessibilitySettingsManager::SendRequestToSetting(const sptr &remoteObject, + const std::string &message) +{ + if (message.empty()) { + HILOG_ERROR("send message is empty!"); + return; + } + HILOG_INFO("send message=%{public}s", message.c_str()); + MessageParcel data; + MessageParcel reply; + MessageOption option; + + if (!data.WriteString16(Str8ToStr16(message))) { + HILOG_ERROR("write message failed!"); + return; + } + if (remoteObject == nullptr) { + HILOG_ERROR("remoteObject is nullptr!"); + return; + } + int32_t ret = remoteObject->SendRequest(SETTINGS_VOICE_RECOGNITION_CODE, data, reply, option); + auto replyCode = reply.ReadInt32(); + HILOG_INFO("sendRequest ret=%{public}d, replyCode=%{public}d", ret, replyCode); +} + +} // namespace Accessibility +} // namespace OHOS From 52643d90b013ea93022e205b23859814788d009f Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 12:55:21 +0000 Subject: [PATCH 03/22] 2 Signed-off-by: qianchuang --- .../accessibility_settings_connection.h | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 services/aams/include/accessibility_settings_connection.h diff --git a/services/aams/include/accessibility_settings_connection.h b/services/aams/include/accessibility_settings_connection.h new file mode 100644 index 000000000..fe664d1d9 --- /dev/null +++ b/services/aams/include/accessibility_settings_connection.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ACCESSIBILITY_SETTINGS_CONNECTION_H +#define ACCESSIBILITY_SETTINGS_CONNECTION_H + +#include +#include "ability_connect_callback_stub.h" + +namespace OHOS { +namespace Accessibility { +using namespace OHOS::AppExecFwk; + +class AccessibilitySettingsConnection : public AAFwk::AbilityConnectionStub { +public: + void OnAbilityConnectDone(const AppExecFwk::ElementName &element, const sptr &remoteObject, + int32_t resultCode) override; + + void OnAbilityDisconnectDone(const AppExecFwk::ElementName &element, int resultCode) override; + + sptr GetRemoteObject(); + +private: + sptr remoteObject_; + std::mutex mutex_; + std::condition_variable cv_; + bool waitFlag_ = false; +}; + +class AccessibilitySettingsManager { +public: + static AccessibilitySettingsManager &GetInstance(); + + void VoiceRecognize(int32_t soundType); + + AccessibilitySettingsManager(const AccessibilitySettingsManager&) = delete; + + AccessibilitySettingsManager(AccessibilitySettingsManager&&) = delete; + + AccessibilitySettingsManager& operator=(const AccessibilitySettingsManager&) = delete; + + AccessibilitySettingsManager& operator=(AccessibilitySettingsManager&&) = delete; + +private: + AccessibilitySettingsManager(); + + ~AccessibilitySettingsManager() = default; + + int32_t ConnectSettingsExtService(); + + void DisconnectSettingsExtService(); + + sptr GetRemoteObject(); + + std::string CreateJsonMessage(int32_t soundType); + + void SendRequestToSetting(const sptr &remoteObject, const std::string &message); + + sptr connection_; +}; +} // namespace Accessibility +} // namespace OHOS +#endif // ACCESSIBILITY_SETTINGS_CONNECTION_H From b2db964d3343229269cb0944177522e3097f860f Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 12:55:28 +0000 Subject: [PATCH 04/22] 3 Signed-off-by: qianchuang --- services/aams/include/accessible_ability_manager_service.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/aams/include/accessible_ability_manager_service.h b/services/aams/include/accessible_ability_manager_service.h index 646467164..058ed0d16 100644 --- a/services/aams/include/accessible_ability_manager_service.h +++ b/services/aams/include/accessible_ability_manager_service.h @@ -438,6 +438,10 @@ private: void OnScreenMagnificationTypeChanged(); void RegisterScreenMagnificationType(); + void OnVoiceRecognitionChanged(); + void RegisterVoiceRecognitionState(); + void UpdateVoiceRecognitionState(); + int32_t ApplyTreeId(); void RecycleTreeId(int32_t treeId); @@ -497,6 +501,9 @@ private: std::bitset treeIdPool_; int32_t preTreeId_ = -1; ffrt::mutex treeIdPoolMutex_; + + bool isSubscribeMSDPCallback_ = false; + ffrt::mutex subscribeMSDPMutex_; }; } // namespace Accessibility } // namespace OHOS From ffb52df8f58cdec8c0e05640a85ed362f3b761aa Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 12:55:33 +0000 Subject: [PATCH 05/22] 4 Signed-off-by: qianchuang --- bundle.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bundle.json b/bundle.json index c9ebd4811..5bd8be703 100644 --- a/bundle.json +++ b/bundle.json @@ -63,7 +63,8 @@ "i18n", "hiappevent", "e2fsprogs", - "resource_schedule_service" + "resource_schedule_service", + "user_status_awareness" ], "third_party": [] }, From d51267b1468379bfe09c419eb59f906cf477c753 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 13:18:38 +0000 Subject: [PATCH 06/22] 5 Signed-off-by: qianchuang --- services/aams/src/aaa.cpp | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 services/aams/src/aaa.cpp diff --git a/services/aams/src/aaa.cpp b/services/aams/src/aaa.cpp new file mode 100644 index 000000000..c600879d7 --- /dev/null +++ b/services/aams/src/aaa.cpp @@ -0,0 +1,89 @@ +void AccessibleAbilityManagerService::UpdateVoiceRecognitionState() +{ + + HILOG_INFO(); + { + std::lock_guard lock(subscribeMSDPMutex_); + if (isSubscribeMSDPCallback_) { + auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); + userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); + isSubscribeMSDPCallback_ = false; + HILOG_INFO("userstatusClient.Unsubscribe"); + } + } + + OnVoiceRecognitionChanged(); +} + +void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() +{ + HILOG_INFO(); + sptr accountData = GetCurrentAccountData(); + if (accountData == nullptr) { + HILOG_ERROR("accountData is nullptr"); + return; + } + + std::shared_ptr config = accountData->GetConfig(); + if (config == nullptr) { + HILOG_ERROR("config is nullptr"); + return; + } + + if (config->GetDbHandle() == nullptr) { + HILOG_ERROR("datashareHelper is nullptr"); + return; + } + + bool voiceRecognitionEnabled = config->GetDbHandle()->GetBoolValue(VOICE_RECOGNITION_KEY, false); + std::string voiceRecognitionTypes = config->GetDbHandle()->GetStringValue(VOICE_RECOGNITION_TYPES, ""); + auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); + + std::lock_guard lock(subscribeMSDPMutex_); + if (!isSubscribeMSDPCallback_ && voiceRecognitionEnabled && !voiceRecognitionTypes.empty()) { + std::function)> func = [ = ]( + int32_t callbackId, std::shared_ptr userStatusData) { + HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", + callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); + // 通知到设置 + AccessibilitySettingsManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); + }; + int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); + userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); + isSubscribeMSDPCallback_ = true; + HILOG_INFO("userstatusClient.SubscribeCallback RET: %{public}d", ret); + return; + } + + if (isSubscribeMSDPCallback_ && (!voiceRecognitionEnabled || voiceRecognitionTypes.empty())) { + userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); + isSubscribeMSDPCallback_ = false; + HILOG_INFO("userstatusClient.Unsubscribe"); + return; + } +} + +void AccessibleAbilityManagerService::RegisterVoiceRecognitionState() +{ + HILOG_INFO(); + if (handler_ == nullptr) { + HILOG_ERROR("handler_ is nullptr"); + return; + } + handler_->PostTask([=]() { + sptr accountData = GetCurrentAccountData(); + if (accountData == nullptr) { + HILOG_ERROR("accountData is nullptr"); + return; + } + + AccessibilitySettingObserver::UpdateFunc func = [ = ](const std::string &state) { + Singleton::GetInstance().OnVoiceRecognitionChanged(); + }; + + if (accountData->GetConfig()->GetDbHandle()) { + accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_KEY, func); + accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_TYPES, func); + } + }, "REGISTER_VOICE_RECOGNITION"); +} \ No newline at end of file From 33b0974b4c4ab2c88b55e86d6eeb88b56d298efd Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 13:24:36 +0000 Subject: [PATCH 07/22] 6 Signed-off-by: qianchuang --- services/aams/src/aaa.cpp | 85 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/services/aams/src/aaa.cpp b/services/aams/src/aaa.cpp index c600879d7..e90a68a49 100644 --- a/services/aams/src/aaa.cpp +++ b/services/aams/src/aaa.cpp @@ -86,4 +86,87 @@ void AccessibleAbilityManagerService::RegisterVoiceRecognitionState() accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_TYPES, func); } }, "REGISTER_VOICE_RECOGNITION"); -} \ No newline at end of file +} + + + +#include "ability_info.h" +#include "accessibility_event_info.h" +#ifdef OHOS_BUILD_ENABLE_POWER_MANAGER +#include "accessibility_power_manager.h" +#endif +#include "accessibility_short_key_dialog.h" +#include "accessibility_window_manager.h" +#include "hilog_wrapper.h" +#include "input_manager.h" +#include "iservice_registry.h" +#include "os_account_manager.h" +#include "parameter.h" +#include "parameters.h" +#include "system_ability_definition.h" +#include "utils.h" +#include "xcollie_helper.h" +#include +#include "transaction/rs_interfaces.h" +#include "resource_manager.h" +#include "res_config.h" +#include "bundle_info.h" +#include "locale_config.h" +#include "locale_info.h" +#include "accesstoken_kit.h" +#include "tokenid_kit.h" +#include "accessibility_caption.h" +#include "accessibility_settings_connection.h" +#include "user_status_client.h" + +using namespace std; +using namespace OHOS::Security::AccessToken; +using namespace OHOS::AccessibilityConfig; + +namespace OHOS { +namespace Accessibility { +namespace { + const std::string AAMS_SERVICE_NAME = "AccessibleAbilityManagerService"; + const std::string AAMS_ACTION_RUNNER_NAME = "AamsActionRunner"; + const std::string AAMS_SEND_EVENT_RUNNER_NAME = "AamsSendEventRunner"; + const std::string AAMS_CHANNEL_RUNNER_NAME = "AamsChannelRunner"; + const std::string AAMS_INPUT_MANAGER_RUNNER_NAME = "AamsInputManagerRunner"; + const std::string AAMS_GESTURE_RUNNER_NAME = "AamsGestureRunner"; + const std::string AAMS_HOVER_ENTER_RUNNER_NAME = "AamsHoverEnterRunner"; + const std::string AAMS_REGISTER_RUNNER_NAME = "AamsRegisterRunner"; + const std::string UI_TEST_BUNDLE_NAME = "ohos.uitest"; + const std::string UI_TEST_ABILITY_NAME = "uitestability"; + const std::string SYSTEM_PARAMETER_AAMS_NAME = "accessibility.config.ready"; + const std::string GRAPHIC_ANIMATION_SCALE_NAME = "persist.sys.graphic.animationscale"; + const std::string ARKUI_ANIMATION_SCALE_NAME = "persist.sys.arkui.animationscale"; + const std::string SCREEN_READER_BUNDLE_ABILITY_NAME = "com.huawei.hmos.screenreader/AccessibilityExtAbility"; + const std::string DEVICE_PROVISIONED = "device_provisioned"; + const std::string SCREEN_MAGNIFICATION_KEY = "accessibility_display_magnification_enabled"; + const std::string SCREEN_MAGNIFICATION_TYPE = "accessibility_magnification_capability"; + const std::string VOICE_RECOGNITION_KEY = "accessibility_sound_recognition_switch"; + const std::string VOICE_RECOGNITION_TYPES = "accessibility_sound_recognition_enabled"; + const std::string DELAY_UNLOAD_TASK = "TASK_UNLOAD_ACCESSIBILITY_SA"; + const std::string USER_SETUP_COMPLETED = "user_setup_complete"; + const std::string ACCESSIBILITY_CLONE_FLAG = "accessibility_config_clone"; + const std::string SHORTCUT_ENABLED = "accessibility_shortcut_enabled"; + constexpr int32_t INVALID_SHORTCUT_STATE = 2; + constexpr int32_t QUERY_USER_ID_RETRY_COUNT = 600; + constexpr int32_t QUERY_USER_ID_SLEEP_TIME = 50; + constexpr int32_t REQUEST_ID_MAX = 0xFFFFFFFF; + constexpr int32_t REQUEST_ID_MIN = 0x0000FFFF; + constexpr int32_t DEFAULT_ACCOUNT_ID = 100; + constexpr int32_t ROOT_UID = 0; + constexpr int32_t UNLOAD_TASK_INTERNAL = 3 * 60 * 1000; // ms + constexpr int32_t TREE_ID_INVALID = 0; + constexpr uint32_t ELEMENT_MOVE_BIT = 40; + constexpr int32_t SINGLE_TREE_ID = 0; + constexpr int32_t SHORT_KEY_TIMEOUT_BEFORE_USE = 3000; // ms + constexpr int32_t SHORT_KEY_TIMEOUT_AFTER_USE = 1000; // ms + constexpr int32_t WINDOW_ID_INVALID = -1; + constexpr int32_t FEATURE_VOICE_RECOGNITION = 17; + constexpr int64_t ELEMENT_ID_INVALID = -1; + enum SCREENREADER_STATE : int32_t { + UNINIT = -1, + OFF = 0, + ON = 1, + }; \ No newline at end of file From 70526c2060629e5287c7e903cc76a84180c48929 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 21:36:16 +0800 Subject: [PATCH 08/22] voice revognition Signed-off-by: qianchuang --- .../accessible_ability_manager_service.cpp | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index c6ce289c1..386773e3d 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -51,6 +51,8 @@ #include "accesstoken_kit.h" #include "tokenid_kit.h" #include "accessibility_caption.h" +#include "accessibility_settings_connection.h" +#include "user_status_client.h" using namespace std; using namespace OHOS::Security::AccessToken; @@ -76,6 +78,8 @@ namespace { const std::string DEVICE_PROVISIONED = "device_provisioned"; const std::string SCREEN_MAGNIFICATION_KEY = "accessibility_display_magnification_enabled"; const std::string SCREEN_MAGNIFICATION_TYPE = "accessibility_magnification_capability"; + const std::string VOICE_RECOGNITION_KEY = "accessibility_sound_recognition_switch"; + const std::string VOICE_RECOGNITION_TYPES = "accessibility_sound_recognition_enabled"; const std::string DELAY_UNLOAD_TASK = "TASK_UNLOAD_ACCESSIBILITY_SA"; const std::string USER_SETUP_COMPLETED = "user_setup_complete"; const std::string ACCESSIBILITY_CLONE_FLAG = "accessibility_config_clone"; @@ -94,6 +98,7 @@ namespace { constexpr int32_t SHORT_KEY_TIMEOUT_BEFORE_USE = 3000; // ms constexpr int32_t SHORT_KEY_TIMEOUT_AFTER_USE = 1000; // ms constexpr int32_t WINDOW_ID_INVALID = -1; + constexpr int32_t FEATURE_VOICE_RECOGNITION = 17; constexpr int64_t ELEMENT_ID_INVALID = -1; enum SCREENREADER_STATE : int32_t { UNINIT = -1, @@ -138,6 +143,7 @@ AccessibleAbilityManagerService::AccessibleAbilityManagerService() dependentServicesStatus_[SUBSYS_ACCOUNT_SYS_ABILITY_ID_BEGIN] = false; dependentServicesStatus_[WINDOW_MANAGER_SERVICE_ID] = false; dependentServicesStatus_[DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID] = false; + dependentServicesStatus_[MSDP_USER_STATUS_SERVICE_ID] = false; accessibilitySettings_ = std::make_shared(); accessibilityShortKey_ = std::make_shared(); @@ -317,6 +323,7 @@ void AccessibleAbilityManagerService::OnStart() AddSystemAbilityListener(SUBSYS_ACCOUNT_SYS_ABILITY_ID_BEGIN); AddSystemAbilityListener(WINDOW_MANAGER_SERVICE_ID); AddSystemAbilityListener(DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID); + AddSystemAbilityListener(MSDP_USER_STATUS_SERVICE_ID); accessibilitySettings_->RegisterSettingsHandler(handler_); } @@ -409,6 +416,7 @@ void AccessibleAbilityManagerService::OnAddSystemAbility(int32_t systemAbilityId PostDelayUnloadTask(); RegisterScreenMagnificationState(); RegisterScreenMagnificationType(); + RegisterVoiceRecognitionState(); }, "OnAddSystemAbility"); } @@ -1946,9 +1954,11 @@ void AccessibleAbilityManagerService::SwitchedUser(int32_t accountId) } UpdateAllSetting(); UpdateAutoStartAbilities(); + UpdateVoiceRecognitionState(); RegisterShortKeyEvent(); RegisterScreenMagnificationState(); RegisterScreenMagnificationType(); + RegisterVoiceRecognitionState(); } void AccessibleAbilityManagerService::PackageRemoved(const std::string &bundleName) @@ -3437,6 +3447,94 @@ void AccessibleAbilityManagerService::RegisterScreenMagnificationType() }, "REGISTER_SCREEN_ZOOM_TYPE_OBSERVER"); } +void AccessibleAbilityManagerService::UpdateVoiceRecognitionState() +{ + HILOG_INFO(); + { + std::lock_guard lock(subscribeMSDPMutex_); + if (isSubscribeMSDPCallback_) { + auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); + userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); + isSubscribeMSDPCallback_ = false; + HILOG_INFO("userstatusClient.Unsubscribe"); + } + } + OnVoiceRecognitionChanged(); +} + +void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() +{ + HILOG_INFO(); + sptr accountData = GetCurrentAccountData(); + if (accountData == nullptr) { + HILOG_ERROR("accountData is nullptr"); + return; + } + + std::shared_ptr config = accountData->GetConfig(); + if (config == nullptr) { + HILOG_ERROR("config is nullptr"); + return; + } + + if (config->GetDbHandle() == nullptr) { + HILOG_ERROR("datashareHelper is nullptr"); + return; + } + + bool voiceRecognitionEnabled = config->GetDbHandle()->GetBoolValue(VOICE_RECOGNITION_KEY, false); + std::string voiceRecognitionTypes = config->GetDbHandle()->GetStringValue(VOICE_RECOGNITION_TYPES, ""); + auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); + + std::lock_guard lock(subscribeMSDPMutex_); + if (!isSubscribeMSDPCallback_ && voiceRecognitionEnabled && !voiceRecognitionTypes.empty()) { + std::function)> func = [ = ]( + int32_t callbackId, std::shared_ptr userStatusData) { + HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", + callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); + // 通知到设置 + AccessibilitySettingsManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); + }; + int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); + userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); + isSubscribeMSDPCallback_ = true; + HILOG_INFO("userstatusClient.SubscribeCallback RET: %{public}d", ret); + return; + } + + if (isSubscribeMSDPCallback_ && (!voiceRecognitionEnabled || voiceRecognitionTypes.empty())) { + userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); + isSubscribeMSDPCallback_ = false; + HILOG_INFO("userstatusClient.Unsubscribe"); + return; + } +} + +void AccessibleAbilityManagerService::RegisterVoiceRecognitionState() +{ + HILOG_INFO(); + if (handler_ == nullptr) { + HILOG_ERROR("handler_ is nullptr"); + return; + } + handler_->PostTask([=]() { + sptr accountData = GetCurrentAccountData(); + if (accountData == nullptr) { + HILOG_ERROR("accountData is nullptr"); + return; + } + + AccessibilitySettingObserver::UpdateFunc func = [ = ](const std::string &state) { + Singleton::GetInstance().OnVoiceRecognitionChanged(); + }; + + if (accountData->GetConfig()->GetDbHandle()) { + accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_KEY, func); + accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_TYPES, func); + } + }, "REGISTER_VOICE_RECOGNITION"); +} + void AccessibleAbilityManagerService::PostDelayUnloadTask() { #ifdef ACCESSIBILITY_WATCH_FEATURE @@ -3627,6 +3725,7 @@ void AccessibleAbilityManagerService::OnDataClone() UpdateAllSetting(); UpdateAutoStartAbilities(); UpdateInputFilter(); + UpdateVoiceRecognitionState(); HILOG_INFO("accessibility reload config."); } else { HILOG_WARN("config_ is nullptr"); From eca9688d71094b8db12ce0d1ef8836c8498f3e2f Mon Sep 17 00:00:00 2001 From: qianchuang Date: Thu, 15 May 2025 21:38:01 +0800 Subject: [PATCH 09/22] voice revognition Signed-off-by: qianchuang --- services/aams/src/aaa.cpp | 172 -------------------------------------- 1 file changed, 172 deletions(-) delete mode 100644 services/aams/src/aaa.cpp diff --git a/services/aams/src/aaa.cpp b/services/aams/src/aaa.cpp deleted file mode 100644 index e90a68a49..000000000 --- a/services/aams/src/aaa.cpp +++ /dev/null @@ -1,172 +0,0 @@ -void AccessibleAbilityManagerService::UpdateVoiceRecognitionState() -{ - - HILOG_INFO(); - { - std::lock_guard lock(subscribeMSDPMutex_); - if (isSubscribeMSDPCallback_) { - auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); - userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); - isSubscribeMSDPCallback_ = false; - HILOG_INFO("userstatusClient.Unsubscribe"); - } - } - - OnVoiceRecognitionChanged(); -} - -void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() -{ - HILOG_INFO(); - sptr accountData = GetCurrentAccountData(); - if (accountData == nullptr) { - HILOG_ERROR("accountData is nullptr"); - return; - } - - std::shared_ptr config = accountData->GetConfig(); - if (config == nullptr) { - HILOG_ERROR("config is nullptr"); - return; - } - - if (config->GetDbHandle() == nullptr) { - HILOG_ERROR("datashareHelper is nullptr"); - return; - } - - bool voiceRecognitionEnabled = config->GetDbHandle()->GetBoolValue(VOICE_RECOGNITION_KEY, false); - std::string voiceRecognitionTypes = config->GetDbHandle()->GetStringValue(VOICE_RECOGNITION_TYPES, ""); - auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); - - std::lock_guard lock(subscribeMSDPMutex_); - if (!isSubscribeMSDPCallback_ && voiceRecognitionEnabled && !voiceRecognitionTypes.empty()) { - std::function)> func = [ = ]( - int32_t callbackId, std::shared_ptr userStatusData) { - HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", - callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); - // 通知到设置 - AccessibilitySettingsManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); - }; - int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); - userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); - isSubscribeMSDPCallback_ = true; - HILOG_INFO("userstatusClient.SubscribeCallback RET: %{public}d", ret); - return; - } - - if (isSubscribeMSDPCallback_ && (!voiceRecognitionEnabled || voiceRecognitionTypes.empty())) { - userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); - isSubscribeMSDPCallback_ = false; - HILOG_INFO("userstatusClient.Unsubscribe"); - return; - } -} - -void AccessibleAbilityManagerService::RegisterVoiceRecognitionState() -{ - HILOG_INFO(); - if (handler_ == nullptr) { - HILOG_ERROR("handler_ is nullptr"); - return; - } - handler_->PostTask([=]() { - sptr accountData = GetCurrentAccountData(); - if (accountData == nullptr) { - HILOG_ERROR("accountData is nullptr"); - return; - } - - AccessibilitySettingObserver::UpdateFunc func = [ = ](const std::string &state) { - Singleton::GetInstance().OnVoiceRecognitionChanged(); - }; - - if (accountData->GetConfig()->GetDbHandle()) { - accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_KEY, func); - accountData->GetConfig()->GetDbHandle()->RegisterObserver(VOICE_RECOGNITION_TYPES, func); - } - }, "REGISTER_VOICE_RECOGNITION"); -} - - - -#include "ability_info.h" -#include "accessibility_event_info.h" -#ifdef OHOS_BUILD_ENABLE_POWER_MANAGER -#include "accessibility_power_manager.h" -#endif -#include "accessibility_short_key_dialog.h" -#include "accessibility_window_manager.h" -#include "hilog_wrapper.h" -#include "input_manager.h" -#include "iservice_registry.h" -#include "os_account_manager.h" -#include "parameter.h" -#include "parameters.h" -#include "system_ability_definition.h" -#include "utils.h" -#include "xcollie_helper.h" -#include -#include "transaction/rs_interfaces.h" -#include "resource_manager.h" -#include "res_config.h" -#include "bundle_info.h" -#include "locale_config.h" -#include "locale_info.h" -#include "accesstoken_kit.h" -#include "tokenid_kit.h" -#include "accessibility_caption.h" -#include "accessibility_settings_connection.h" -#include "user_status_client.h" - -using namespace std; -using namespace OHOS::Security::AccessToken; -using namespace OHOS::AccessibilityConfig; - -namespace OHOS { -namespace Accessibility { -namespace { - const std::string AAMS_SERVICE_NAME = "AccessibleAbilityManagerService"; - const std::string AAMS_ACTION_RUNNER_NAME = "AamsActionRunner"; - const std::string AAMS_SEND_EVENT_RUNNER_NAME = "AamsSendEventRunner"; - const std::string AAMS_CHANNEL_RUNNER_NAME = "AamsChannelRunner"; - const std::string AAMS_INPUT_MANAGER_RUNNER_NAME = "AamsInputManagerRunner"; - const std::string AAMS_GESTURE_RUNNER_NAME = "AamsGestureRunner"; - const std::string AAMS_HOVER_ENTER_RUNNER_NAME = "AamsHoverEnterRunner"; - const std::string AAMS_REGISTER_RUNNER_NAME = "AamsRegisterRunner"; - const std::string UI_TEST_BUNDLE_NAME = "ohos.uitest"; - const std::string UI_TEST_ABILITY_NAME = "uitestability"; - const std::string SYSTEM_PARAMETER_AAMS_NAME = "accessibility.config.ready"; - const std::string GRAPHIC_ANIMATION_SCALE_NAME = "persist.sys.graphic.animationscale"; - const std::string ARKUI_ANIMATION_SCALE_NAME = "persist.sys.arkui.animationscale"; - const std::string SCREEN_READER_BUNDLE_ABILITY_NAME = "com.huawei.hmos.screenreader/AccessibilityExtAbility"; - const std::string DEVICE_PROVISIONED = "device_provisioned"; - const std::string SCREEN_MAGNIFICATION_KEY = "accessibility_display_magnification_enabled"; - const std::string SCREEN_MAGNIFICATION_TYPE = "accessibility_magnification_capability"; - const std::string VOICE_RECOGNITION_KEY = "accessibility_sound_recognition_switch"; - const std::string VOICE_RECOGNITION_TYPES = "accessibility_sound_recognition_enabled"; - const std::string DELAY_UNLOAD_TASK = "TASK_UNLOAD_ACCESSIBILITY_SA"; - const std::string USER_SETUP_COMPLETED = "user_setup_complete"; - const std::string ACCESSIBILITY_CLONE_FLAG = "accessibility_config_clone"; - const std::string SHORTCUT_ENABLED = "accessibility_shortcut_enabled"; - constexpr int32_t INVALID_SHORTCUT_STATE = 2; - constexpr int32_t QUERY_USER_ID_RETRY_COUNT = 600; - constexpr int32_t QUERY_USER_ID_SLEEP_TIME = 50; - constexpr int32_t REQUEST_ID_MAX = 0xFFFFFFFF; - constexpr int32_t REQUEST_ID_MIN = 0x0000FFFF; - constexpr int32_t DEFAULT_ACCOUNT_ID = 100; - constexpr int32_t ROOT_UID = 0; - constexpr int32_t UNLOAD_TASK_INTERNAL = 3 * 60 * 1000; // ms - constexpr int32_t TREE_ID_INVALID = 0; - constexpr uint32_t ELEMENT_MOVE_BIT = 40; - constexpr int32_t SINGLE_TREE_ID = 0; - constexpr int32_t SHORT_KEY_TIMEOUT_BEFORE_USE = 3000; // ms - constexpr int32_t SHORT_KEY_TIMEOUT_AFTER_USE = 1000; // ms - constexpr int32_t WINDOW_ID_INVALID = -1; - constexpr int32_t FEATURE_VOICE_RECOGNITION = 17; - constexpr int64_t ELEMENT_ID_INVALID = -1; - enum SCREENREADER_STATE : int32_t { - UNINIT = -1, - OFF = 0, - ON = 1, - }; \ No newline at end of file From 62e876c0cd6e90800c23edf2e665bec009bf3416 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Fri, 16 May 2025 10:24:33 +0000 Subject: [PATCH 10/22] 12 Signed-off-by: qianchuang --- accessibility_manager_service.gni | 11 +++++++++++ services/aams/BUILD.gn | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/accessibility_manager_service.gni b/accessibility_manager_service.gni index c7d547994..23d4cef7d 100644 --- a/accessibility_manager_service.gni +++ b/accessibility_manager_service.gni @@ -22,6 +22,7 @@ declare_args() { accessibility_feature_hiviewdfx_hitrace = true accessibility_feature_hiviewdfx_hisysevent = true accessibility_dynamic_support = false + accessibility_user_status_awareness = false if (defined(global_parts_info) && !defined(global_parts_info.powermgr_display_manager)) { accessibility_feature_display_manager = false @@ -49,6 +50,10 @@ declare_args() { !defined(global_parts_info.hiviewdfx_hisysevent)) { accessibility_feature_hiviewdfx_hisysevent = false } + + if (defined(global_parts_info) && defined(global_parts_info.msdp_user_status_awareness)) { + accessibility_user_status_awareness = true + } } print( @@ -61,6 +66,8 @@ print( "accessibility_feature_hiviewdfx_hitrace = ${accessibility_feature_hiviewdfx_hitrace}") print( "accessibility_feature_hiviewdfx_hisysevent = ${accessibility_feature_hiviewdfx_hisysevent}") +print( + "accessibility_user_status_awareness = ${accessibility_user_status_awareness}") accessibility_default_defines = [] @@ -95,3 +102,7 @@ if (accessibility_feature_hiviewdfx_hisysevent) { if (product_name != "qemu-arm-linux-min") { accessibility_default_defines += [ "ACCESSIBILITY_EMULATOR_DEFINED" ] } + +if (accessibility_user_status_awareness) { + accessibility_default_defines += [ "ACCESSIBILITY_USER_STATUS_AWARENESS" ] +} diff --git a/services/aams/BUILD.gn b/services/aams/BUILD.gn index 06ee62a12..764c295e9 100644 --- a/services/aams/BUILD.gn +++ b/services/aams/BUILD.gn @@ -139,7 +139,6 @@ ohos_shared_library("accessibleabilityms") { "samgr:samgr_proxy", "window_manager:libdm", "graphic_2d:librender_service_base", - "user_status_awareness:user_status_client", ] if (accessibility_feature_power_manager) { @@ -166,6 +165,10 @@ ohos_shared_library("accessibleabilityms") { external_deps += [ "resource_schedule_service:ressched_client" ] } + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } + install_enable = true subsystem_name = "barrierfree" From 4a59209205157c0c3a0cfe0acac382b8e035bcc1 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Fri, 16 May 2025 18:31:25 +0800 Subject: [PATCH 11/22] voice recognition Signed-off-by: qianchuang --- .../aams/src/accessible_ability_manager_service.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index 386773e3d..f84187262 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -52,7 +52,9 @@ #include "tokenid_kit.h" #include "accessibility_caption.h" #include "accessibility_settings_connection.h" +#ifdef ACCESSIBILITY_USER_STATUS_AWARENESS #include "user_status_client.h" +#endif // ACCESSIBILITY_USER_STATUS_AWARENESS using namespace std; using namespace OHOS::Security::AccessToken; @@ -143,7 +145,9 @@ AccessibleAbilityManagerService::AccessibleAbilityManagerService() dependentServicesStatus_[SUBSYS_ACCOUNT_SYS_ABILITY_ID_BEGIN] = false; dependentServicesStatus_[WINDOW_MANAGER_SERVICE_ID] = false; dependentServicesStatus_[DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID] = false; + #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS dependentServicesStatus_[MSDP_USER_STATUS_SERVICE_ID] = false; + #endif // ACCESSIBILITY_USER_STATUS_AWARENESS accessibilitySettings_ = std::make_shared(); accessibilityShortKey_ = std::make_shared(); @@ -323,7 +327,9 @@ void AccessibleAbilityManagerService::OnStart() AddSystemAbilityListener(SUBSYS_ACCOUNT_SYS_ABILITY_ID_BEGIN); AddSystemAbilityListener(WINDOW_MANAGER_SERVICE_ID); AddSystemAbilityListener(DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID); + #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS AddSystemAbilityListener(MSDP_USER_STATUS_SERVICE_ID); + #endif // ACCESSIBILITY_USER_STATUS_AWARENESS accessibilitySettings_->RegisterSettingsHandler(handler_); } @@ -3450,6 +3456,7 @@ void AccessibleAbilityManagerService::RegisterScreenMagnificationType() void AccessibleAbilityManagerService::UpdateVoiceRecognitionState() { HILOG_INFO(); + #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS { std::lock_guard lock(subscribeMSDPMutex_); if (isSubscribeMSDPCallback_) { @@ -3460,11 +3467,13 @@ void AccessibleAbilityManagerService::UpdateVoiceRecognitionState() } } OnVoiceRecognitionChanged(); + #endif // ACCESSIBILITY_USER_STATUS_AWARENESS } void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() { HILOG_INFO(); + #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS sptr accountData = GetCurrentAccountData(); if (accountData == nullptr) { HILOG_ERROR("accountData is nullptr"); @@ -3508,6 +3517,7 @@ void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() HILOG_INFO("userstatusClient.Unsubscribe"); return; } + #endif // ACCESSIBILITY_USER_STATUS_AWARENESS } void AccessibleAbilityManagerService::RegisterVoiceRecognitionState() From 16cf4a4274bd4639bb9926f57ad243a7f4e4a3eb Mon Sep 17 00:00:00 2001 From: qianchuang Date: Fri, 16 May 2025 14:22:02 +0000 Subject: [PATCH 12/22] 11 Signed-off-by: qianchuang --- frameworks/aafwk/test/BUILD.gn | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frameworks/aafwk/test/BUILD.gn b/frameworks/aafwk/test/BUILD.gn index 95c6fc89d..c8de70122 100755 --- a/frameworks/aafwk/test/BUILD.gn +++ b/frameworks/aafwk/test/BUILD.gn @@ -120,6 +120,7 @@ ohos_unittest("accessible_ability_test") { "../../../services/aams/src/accessibility_setting_observer.cpp", "../../../services/aams/src/accessibility_settings.cpp", "../../../services/aams/src/accessibility_settings_config.cpp", + "../../../services/aams/src/accessibility_settings_connection.cpp", "../../../services/aams/src/accessible_ability_manager_service.cpp", "../../../services/aams/src/accessible_ability_manager_service_event_handler.cpp", "../../../services/aams/src/utils.cpp", @@ -202,6 +203,10 @@ ohos_unittest("accessible_ability_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ############################################################################### From 022894ef3c63b457686219f5c5d0c4e70f9e6323 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Fri, 16 May 2025 14:22:09 +0000 Subject: [PATCH 13/22] 12 Signed-off-by: qianchuang --- services/aams/test/BUILD.gn | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/services/aams/test/BUILD.gn b/services/aams/test/BUILD.gn index fcb05e4ea..dfd8f38e8 100644 --- a/services/aams/test/BUILD.gn +++ b/services/aams/test/BUILD.gn @@ -69,6 +69,7 @@ ohos_unittest("accessibility_account_data_test") { "../src/accessibility_screen_touch.cpp", "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", + "../src/accessibility_settings_connection.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -140,6 +141,10 @@ ohos_unittest("accessibility_account_data_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -179,6 +184,7 @@ ohos_unittest("accessible_ability_manager_service_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", + "../src/accessibility_settings_connection.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", "../src/accessibility_window_connection.cpp", @@ -255,6 +261,10 @@ ohos_unittest("accessible_ability_manager_service_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -745,6 +755,7 @@ ohos_unittest("accessible_ability_connection_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", + "../src/accessibility_settings_connection.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", "../src/accessibility_window_connection.cpp", @@ -824,6 +835,10 @@ ohos_unittest("accessible_ability_connection_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -1162,6 +1177,7 @@ ohos_unittest("accessibility_mouse_autoclick_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", + "../src/accessibility_settings_connection.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -1233,6 +1249,10 @@ ohos_unittest("accessibility_mouse_autoclick_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -1593,6 +1613,7 @@ ohos_unittest("accessibility_settings_config_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", + "../src/accessibility_settings_connection.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -1662,6 +1683,10 @@ ohos_unittest("accessibility_settings_config_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ From 65687ab32f9cef0ce405e10ff299bf07d74513e8 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Fri, 16 May 2025 14:22:13 +0000 Subject: [PATCH 14/22] 12 Signed-off-by: qianchuang --- services/test/BUILD.gn | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/services/test/BUILD.gn b/services/test/BUILD.gn index 4937abee6..a2f89bda6 100644 --- a/services/test/BUILD.gn +++ b/services/test/BUILD.gn @@ -77,6 +77,7 @@ ohos_moduletest("aams_accessibility_touch_exploration_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", + "../aams/src/accessibility_settings_connection.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -162,6 +163,10 @@ ohos_moduletest("aams_accessibility_touch_exploration_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -186,6 +191,7 @@ ohos_moduletest("aams_accessibility_touchEvent_injector_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", + "../aams/src/accessibility_settings_connection.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -272,6 +278,10 @@ ohos_moduletest("aams_accessibility_touchEvent_injector_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -296,6 +306,7 @@ ohos_moduletest("aams_accessible_ability_channel_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", + "../aams/src/accessibility_settings_connection.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -381,6 +392,10 @@ ohos_moduletest("aams_accessible_ability_channel_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -405,6 +420,7 @@ ohos_moduletest("aams_server_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", + "../aams/src/accessibility_settings_connection.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -488,6 +504,10 @@ ohos_moduletest("aams_server_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -512,6 +532,7 @@ ohos_moduletest("aams_accessibility_keyevent_filter_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", + "../aams/src/accessibility_settings_connection.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -596,6 +617,10 @@ ohos_moduletest("aams_accessibility_keyevent_filter_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ @@ -620,6 +645,7 @@ ohos_moduletest("aams_common_event_registry_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", + "../aams/src/accessibility_settings_connection.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -709,6 +735,10 @@ ohos_moduletest("aams_common_event_registry_test") { "window_manager:libdm", "window_manager:libwm", ] + + if (accessibility_user_status_awareness) { + external_deps += [ "user_status_awareness:user_status_client" ] + } } ################################################################################ From 213dbdee409f3610ef214f96de675ac71fec1b80 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Fri, 16 May 2025 14:22:17 +0000 Subject: [PATCH 15/22] 12 Signed-off-by: qianchuang --- services/aams/src/accessibility_settings_connection.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/services/aams/src/accessibility_settings_connection.cpp b/services/aams/src/accessibility_settings_connection.cpp index 9f1d0ad9f..a3ebb01e7 100644 --- a/services/aams/src/accessibility_settings_connection.cpp +++ b/services/aams/src/accessibility_settings_connection.cpp @@ -160,6 +160,5 @@ void AccessibilitySettingsManager::SendRequestToSetting(const sptr Date: Fri, 16 May 2025 22:25:28 +0800 Subject: [PATCH 16/22] voice recognition Signed-off-by: qianchuang --- services/aams/src/accessible_ability_manager_service.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index f84187262..bf32a8f97 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -3501,7 +3501,7 @@ void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() int32_t callbackId, std::shared_ptr userStatusData) { HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); - // 通知到设置 + AccessibilitySettingsManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); }; int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); From 3d8f49f26d563fa1185f798ebc7c53c91e905655 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Sat, 17 May 2025 09:55:58 +0800 Subject: [PATCH 17/22] voice recognition Signed-off-by: qianchuang --- frameworks/aafwk/test/BUILD.gn | 2 +- services/aams/BUILD.gn | 2 +- ...nnection.h => extension_ability_manager.h} | 26 +++++++-------- .../accessible_ability_manager_service.cpp | 4 +-- ...tion.cpp => extension_ability_manager.cpp} | 32 +++++++++---------- services/aams/test/BUILD.gn | 10 +++--- services/test/BUILD.gn | 12 +++---- 7 files changed, 44 insertions(+), 44 deletions(-) rename services/aams/include/{accessibility_settings_connection.h => extension_ability_manager.h} (65%) rename services/aams/src/{accessibility_settings_connection.cpp => extension_ability_manager.cpp} (76%) diff --git a/frameworks/aafwk/test/BUILD.gn b/frameworks/aafwk/test/BUILD.gn index c8de70122..fe73a1a65 100755 --- a/frameworks/aafwk/test/BUILD.gn +++ b/frameworks/aafwk/test/BUILD.gn @@ -120,7 +120,7 @@ ohos_unittest("accessible_ability_test") { "../../../services/aams/src/accessibility_setting_observer.cpp", "../../../services/aams/src/accessibility_settings.cpp", "../../../services/aams/src/accessibility_settings_config.cpp", - "../../../services/aams/src/accessibility_settings_connection.cpp", + "../../../services/aams/src/extension_ability_manager.cpp", "../../../services/aams/src/accessible_ability_manager_service.cpp", "../../../services/aams/src/accessible_ability_manager_service_event_handler.cpp", "../../../services/aams/src/utils.cpp", diff --git a/services/aams/BUILD.gn b/services/aams/BUILD.gn index 764c295e9..b273d52ff 100644 --- a/services/aams/BUILD.gn +++ b/services/aams/BUILD.gn @@ -68,7 +68,7 @@ accessibleabilityms_files = [ "${services_path}/src/accessibility_resource_bundle_manager.cpp", "${services_path}/src/accessibility_setting_observer.cpp", "${services_path}/src/accessibility_setting_provider.cpp", - "${services_path}/src/accessibility_settings_connection.cpp", + "${services_path}/src/extension_ability_manager.cpp", "${services_path}/src/accessibility_short_key_dialog.cpp", "${services_path}/src/accessibility_datashare_helper.cpp", "${services_path}/src/touch_exploration_multi_finger_gesture.cpp", diff --git a/services/aams/include/accessibility_settings_connection.h b/services/aams/include/extension_ability_manager.h similarity index 65% rename from services/aams/include/accessibility_settings_connection.h rename to services/aams/include/extension_ability_manager.h index fe664d1d9..5e33905ab 100644 --- a/services/aams/include/accessibility_settings_connection.h +++ b/services/aams/include/extension_ability_manager.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef ACCESSIBILITY_SETTINGS_CONNECTION_H -#define ACCESSIBILITY_SETTINGS_CONNECTION_H +#ifndef EXTENSION_ABILITY_CONNECTION_H +#define EXTENSION_ABILITY_CONNECTION_H #include #include "ability_connect_callback_stub.h" @@ -23,7 +23,7 @@ namespace OHOS { namespace Accessibility { using namespace OHOS::AppExecFwk; -class AccessibilitySettingsConnection : public AAFwk::AbilityConnectionStub { +class ExtensionAbilityConnection : public AAFwk::AbilityConnectionStub { public: void OnAbilityConnectDone(const AppExecFwk::ElementName &element, const sptr &remoteObject, int32_t resultCode) override; @@ -39,24 +39,24 @@ private: bool waitFlag_ = false; }; -class AccessibilitySettingsManager { +class ExtensionAbilityManager { public: - static AccessibilitySettingsManager &GetInstance(); + static ExtensionAbilityManager &GetInstance(); void VoiceRecognize(int32_t soundType); - AccessibilitySettingsManager(const AccessibilitySettingsManager&) = delete; + ExtensionAbilityManager(const ExtensionAbilityManager&) = delete; - AccessibilitySettingsManager(AccessibilitySettingsManager&&) = delete; + ExtensionAbilityManager(ExtensionAbilityManager&&) = delete; - AccessibilitySettingsManager& operator=(const AccessibilitySettingsManager&) = delete; + ExtensionAbilityManager& operator=(const ExtensionAbilityManager&) = delete; - AccessibilitySettingsManager& operator=(AccessibilitySettingsManager&&) = delete; + ExtensionAbilityManager& operator=(ExtensionAbilityManager&&) = delete; private: - AccessibilitySettingsManager(); + ExtensionAbilityManager(); - ~AccessibilitySettingsManager() = default; + ~ExtensionAbilityManager() = default; int32_t ConnectSettingsExtService(); @@ -68,8 +68,8 @@ private: void SendRequestToSetting(const sptr &remoteObject, const std::string &message); - sptr connection_; + sptr connection_; }; } // namespace Accessibility } // namespace OHOS -#endif // ACCESSIBILITY_SETTINGS_CONNECTION_H +#endif // EXTENSION_ABILITY_CONNECTION_H diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index bf32a8f97..4aa38bbbb 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -51,7 +51,7 @@ #include "accesstoken_kit.h" #include "tokenid_kit.h" #include "accessibility_caption.h" -#include "accessibility_settings_connection.h" +#include "extension_ability_manager.h" #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS #include "user_status_client.h" #endif // ACCESSIBILITY_USER_STATUS_AWARENESS @@ -3502,7 +3502,7 @@ void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); - AccessibilitySettingsManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); + ExtensionAbilityManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); }; int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); diff --git a/services/aams/src/accessibility_settings_connection.cpp b/services/aams/src/extension_ability_manager.cpp similarity index 76% rename from services/aams/src/accessibility_settings_connection.cpp rename to services/aams/src/extension_ability_manager.cpp index a3ebb01e7..6baf65f4d 100644 --- a/services/aams/src/accessibility_settings_connection.cpp +++ b/services/aams/src/extension_ability_manager.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "accessibility_settings_connection.h" +#include "extension_ability_manager.h" #include #include "message_parcel.h" @@ -28,13 +28,13 @@ const int64_t WAIT_INTERVAL = 5000; // 5s constexpr int32_t DEFAULT_USER_ID = -1; const std::string SETTINGS_BUNDLE_NAME = "com.huawei.hmos.settings"; const std::string SERVICE_EXTENSION_ABILITY_NAME = "SettingsExtService"; -const std::string VOICE_RECOGNITION = "voiceRecognition"; const std::string METHOD_KEY = "method"; const std::string EXTRA_KEY = "extra"; +const std::string METHOD_VOICE_RECOGNITION = "voiceRecognition"; const std::string EXTRA_VALUE_KEY = "soundType"; constexpr int32_t SETTINGS_VOICE_RECOGNITION_CODE = 7; -void AccessibilitySettingsConnection::OnAbilityConnectDone(const AppExecFwk::ElementName &element, +void ExtensionAbilityConnection::OnAbilityConnectDone(const AppExecFwk::ElementName &element, const sptr &remoteObject, int32_t resultCode) { HILOG_INFO("on ability connected done"); @@ -53,7 +53,7 @@ void AccessibilitySettingsConnection::OnAbilityConnectDone(const AppExecFwk::Ele cv_.notify_all(); } -void AccessibilitySettingsConnection::OnAbilityDisconnectDone(const AppExecFwk::ElementName &element, int resultCode) +void ExtensionAbilityConnection::OnAbilityDisconnectDone(const AppExecFwk::ElementName &element, int resultCode) { HILOG_INFO("on ability disconnected done"); std::unique_lock lock(mutex_); @@ -61,7 +61,7 @@ void AccessibilitySettingsConnection::OnAbilityDisconnectDone(const AppExecFwk:: remoteObject_ = nullptr; } -sptr AccessibilitySettingsConnection::GetRemoteObject() +sptr ExtensionAbilityConnection::GetRemoteObject() { std::unique_lock lock(mutex_); if (!cv_.wait_for(lock, std::chrono::milliseconds(WAIT_INTERVAL), [this]() { return waitFlag_; })) { @@ -71,18 +71,18 @@ sptr AccessibilitySettingsConnection::GetRemoteObject() return remoteObject_; } -AccessibilitySettingsManager::AccessibilitySettingsManager() +ExtensionAbilityManager::ExtensionAbilityManager() { - connection_ = sptr (new (std::nothrow) AccessibilitySettingsConnection()); + connection_ = sptr (new (std::nothrow) ExtensionAbilityConnection()); } -AccessibilitySettingsManager& AccessibilitySettingsManager::GetInstance() +ExtensionAbilityManager& ExtensionAbilityManager::GetInstance() { - static AccessibilitySettingsManager instance; + static ExtensionAbilityManager instance; return instance; } -void AccessibilitySettingsManager::VoiceRecognize(int32_t soundType) +void ExtensionAbilityManager::VoiceRecognize(int32_t soundType) { HILOG_INFO("called, soundType=%{public}d", soundType); sptr remote = GetRemoteObject(); @@ -95,7 +95,7 @@ void AccessibilitySettingsManager::VoiceRecognize(int32_t soundType) DisconnectSettingsExtService(); } -int32_t AccessibilitySettingsManager::ConnectSettingsExtService() +int32_t ExtensionAbilityManager::ConnectSettingsExtService() { HILOG_INFO("called"); AAFwk::Want want; @@ -105,7 +105,7 @@ int32_t AccessibilitySettingsManager::ConnectSettingsExtService() return ret; } -void AccessibilitySettingsManager::DisconnectSettingsExtService() +void ExtensionAbilityManager::DisconnectSettingsExtService() { auto disconnectResult = AAFwk::ExtensionManagerClient::GetInstance().DisconnectAbility(connection_); if (disconnectResult != ERR_OK) { @@ -113,7 +113,7 @@ void AccessibilitySettingsManager::DisconnectSettingsExtService() } } -sptr AccessibilitySettingsManager::GetRemoteObject() +sptr ExtensionAbilityManager::GetRemoteObject() { int32_t connectResult = ConnectSettingsExtService(); if (connectResult != ERR_OK) { @@ -124,19 +124,19 @@ sptr AccessibilitySettingsManager::GetRemoteObject() return connection_->GetRemoteObject(); } -std::string AccessibilitySettingsManager::CreateJsonMessage(int32_t soundType) +std::string ExtensionAbilityManager::CreateJsonMessage(int32_t soundType) { nlohmann::json jsonMessageObj; nlohmann::json jsonExtraValue; jsonExtraValue[EXTRA_VALUE_KEY] = soundType; - jsonMessageObj[METHOD_KEY] = VOICE_RECOGNITION; + jsonMessageObj[METHOD_KEY] = METHOD_VOICE_RECOGNITION; jsonMessageObj[EXTRA_KEY] = jsonExtraValue; return jsonMessageObj.dump(); } -void AccessibilitySettingsManager::SendRequestToSetting(const sptr &remoteObject, +void ExtensionAbilityManager::SendRequestToSetting(const sptr &remoteObject, const std::string &message) { if (message.empty()) { diff --git a/services/aams/test/BUILD.gn b/services/aams/test/BUILD.gn index dfd8f38e8..eb645141e 100644 --- a/services/aams/test/BUILD.gn +++ b/services/aams/test/BUILD.gn @@ -69,7 +69,7 @@ ohos_unittest("accessibility_account_data_test") { "../src/accessibility_screen_touch.cpp", "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", - "../src/accessibility_settings_connection.cpp", + "../src/extension_ability_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -184,7 +184,7 @@ ohos_unittest("accessible_ability_manager_service_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", - "../src/accessibility_settings_connection.cpp", + "../src/extension_ability_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", "../src/accessibility_window_connection.cpp", @@ -755,7 +755,7 @@ ohos_unittest("accessible_ability_connection_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", - "../src/accessibility_settings_connection.cpp", + "../src/extension_ability_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", "../src/accessibility_window_connection.cpp", @@ -1177,7 +1177,7 @@ ohos_unittest("accessibility_mouse_autoclick_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", - "../src/accessibility_settings_connection.cpp", + "../src/extension_ability_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -1613,7 +1613,7 @@ ohos_unittest("accessibility_settings_config_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", - "../src/accessibility_settings_connection.cpp", + "../src/extension_ability_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", diff --git a/services/test/BUILD.gn b/services/test/BUILD.gn index a2f89bda6..6a0cc0280 100644 --- a/services/test/BUILD.gn +++ b/services/test/BUILD.gn @@ -77,7 +77,7 @@ ohos_moduletest("aams_accessibility_touch_exploration_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/accessibility_settings_connection.cpp", + "../aams/src/extension_ability_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -191,7 +191,7 @@ ohos_moduletest("aams_accessibility_touchEvent_injector_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/accessibility_settings_connection.cpp", + "../aams/src/extension_ability_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -306,7 +306,7 @@ ohos_moduletest("aams_accessible_ability_channel_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/accessibility_settings_connection.cpp", + "../aams/src/extension_ability_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -420,7 +420,7 @@ ohos_moduletest("aams_server_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/accessibility_settings_connection.cpp", + "../aams/src/extension_ability_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -532,7 +532,7 @@ ohos_moduletest("aams_accessibility_keyevent_filter_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/accessibility_settings_connection.cpp", + "../aams/src/extension_ability_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -645,7 +645,7 @@ ohos_moduletest("aams_common_event_registry_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/accessibility_settings_connection.cpp", + "../aams/src/extension_ability_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", From 80536766d6a21e9b2584b214c68681f68552701e Mon Sep 17 00:00:00 2001 From: qianchuang Date: Sat, 17 May 2025 10:27:49 +0800 Subject: [PATCH 18/22] voice recognition Signed-off-by: qianchuang --- services/aams/src/extension_ability_manager.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/services/aams/src/extension_ability_manager.cpp b/services/aams/src/extension_ability_manager.cpp index 6baf65f4d..599b955c1 100644 --- a/services/aams/src/extension_ability_manager.cpp +++ b/services/aams/src/extension_ability_manager.cpp @@ -49,7 +49,6 @@ void ExtensionAbilityConnection::OnAbilityConnectDone(const AppExecFwk::ElementN HILOG_INFO("got remoteObject"); std::unique_lock lock(mutex_); remoteObject_ = remoteObject; - waitFlag_ = true; cv_.notify_all(); } @@ -57,14 +56,13 @@ void ExtensionAbilityConnection::OnAbilityDisconnectDone(const AppExecFwk::Eleme { HILOG_INFO("on ability disconnected done"); std::unique_lock lock(mutex_); - waitFlag_ = false; remoteObject_ = nullptr; } sptr ExtensionAbilityConnection::GetRemoteObject() { std::unique_lock lock(mutex_); - if (!cv_.wait_for(lock, std::chrono::milliseconds(WAIT_INTERVAL), [this]() { return waitFlag_; })) { + if (!cv_.wait_for(lock, std::chrono::milliseconds(WAIT_INTERVAL), [this]() { return remoteObject_ != nullptr; })) { HILOG_ERROR("wait for remote object timeout"); return nullptr; } @@ -139,6 +137,10 @@ std::string ExtensionAbilityManager::CreateJsonMessage(int32_t soundType) void ExtensionAbilityManager::SendRequestToSetting(const sptr &remoteObject, const std::string &message) { + if (remoteObject == nullptr) { + HILOG_ERROR("remoteObject is nullptr!"); + return; + } if (message.empty()) { HILOG_ERROR("send message is empty!"); return; @@ -152,10 +154,6 @@ void ExtensionAbilityManager::SendRequestToSetting(const sptr &re HILOG_ERROR("write message failed!"); return; } - if (remoteObject == nullptr) { - HILOG_ERROR("remoteObject is nullptr!"); - return; - } int32_t ret = remoteObject->SendRequest(SETTINGS_VOICE_RECOGNITION_CODE, data, reply, option); auto replyCode = reply.ReadInt32(); HILOG_INFO("sendRequest ret=%{public}d, replyCode=%{public}d", ret, replyCode); From 12f6019a9031d62fed51edb1c46eec90917866f4 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Sat, 17 May 2025 10:47:11 +0800 Subject: [PATCH 19/22] voice recognition Signed-off-by: qianchuang --- frameworks/aafwk/test/BUILD.gn | 1 + services/aams/BUILD.gn | 1 + services/aams/include/msdp_manager.h | 28 ++++++++++ .../accessible_ability_manager_service.cpp | 34 +++-------- services/aams/src/msdp_manager.cpp | 56 +++++++++++++++++++ services/aams/test/BUILD.gn | 5 ++ services/test/BUILD.gn | 6 ++ 7 files changed, 105 insertions(+), 26 deletions(-) create mode 100644 services/aams/include/msdp_manager.h create mode 100644 services/aams/src/msdp_manager.cpp diff --git a/frameworks/aafwk/test/BUILD.gn b/frameworks/aafwk/test/BUILD.gn index fe73a1a65..8273c5883 100755 --- a/frameworks/aafwk/test/BUILD.gn +++ b/frameworks/aafwk/test/BUILD.gn @@ -121,6 +121,7 @@ ohos_unittest("accessible_ability_test") { "../../../services/aams/src/accessibility_settings.cpp", "../../../services/aams/src/accessibility_settings_config.cpp", "../../../services/aams/src/extension_ability_manager.cpp", + "../../../services/aams/src/msdp_manager.cpp", "../../../services/aams/src/accessible_ability_manager_service.cpp", "../../../services/aams/src/accessible_ability_manager_service_event_handler.cpp", "../../../services/aams/src/utils.cpp", diff --git a/services/aams/BUILD.gn b/services/aams/BUILD.gn index b273d52ff..656d9f51b 100644 --- a/services/aams/BUILD.gn +++ b/services/aams/BUILD.gn @@ -69,6 +69,7 @@ accessibleabilityms_files = [ "${services_path}/src/accessibility_setting_observer.cpp", "${services_path}/src/accessibility_setting_provider.cpp", "${services_path}/src/extension_ability_manager.cpp", + "${services_path}/src/msdp_manager.cpp", "${services_path}/src/accessibility_short_key_dialog.cpp", "${services_path}/src/accessibility_datashare_helper.cpp", "${services_path}/src/touch_exploration_multi_finger_gesture.cpp", diff --git a/services/aams/include/msdp_manager.h b/services/aams/include/msdp_manager.h new file mode 100644 index 000000000..c5e4e8ee6 --- /dev/null +++ b/services/aams/include/msdp_manager.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MSDP_MANAGER_H +#define MSDP_MANAGER_H + +namespace OHOS { +namespace Accessibility { +class MsdpManager { +public: + static int32_t SubscribeVoiceRecognition(); + static void UnSubscribeVoiceRecognition(); +}; +} // namespace Accessibility +} // namespace OHOS +#endif // MSDP_MANAGER_H \ No newline at end of file diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index 4aa38bbbb..09e6b20c1 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -51,10 +51,7 @@ #include "accesstoken_kit.h" #include "tokenid_kit.h" #include "accessibility_caption.h" -#include "extension_ability_manager.h" -#ifdef ACCESSIBILITY_USER_STATUS_AWARENESS -#include "user_status_client.h" -#endif // ACCESSIBILITY_USER_STATUS_AWARENESS +#include "msdp_manager.h" using namespace std; using namespace OHOS::Security::AccessToken; @@ -100,7 +97,6 @@ namespace { constexpr int32_t SHORT_KEY_TIMEOUT_BEFORE_USE = 3000; // ms constexpr int32_t SHORT_KEY_TIMEOUT_AFTER_USE = 1000; // ms constexpr int32_t WINDOW_ID_INVALID = -1; - constexpr int32_t FEATURE_VOICE_RECOGNITION = 17; constexpr int64_t ELEMENT_ID_INVALID = -1; enum SCREENREADER_STATE : int32_t { UNINIT = -1, @@ -3456,24 +3452,19 @@ void AccessibleAbilityManagerService::RegisterScreenMagnificationType() void AccessibleAbilityManagerService::UpdateVoiceRecognitionState() { HILOG_INFO(); - #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS { std::lock_guard lock(subscribeMSDPMutex_); if (isSubscribeMSDPCallback_) { - auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); - userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); - isSubscribeMSDPCallback_ = false; + MsdpManager::UnSubscribeVoiceRecognition(); HILOG_INFO("userstatusClient.Unsubscribe"); } } OnVoiceRecognitionChanged(); - #endif // ACCESSIBILITY_USER_STATUS_AWARENESS } void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() { HILOG_INFO(); - #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS sptr accountData = GetCurrentAccountData(); if (accountData == nullptr) { HILOG_ERROR("accountData is nullptr"); @@ -3493,31 +3484,22 @@ void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() bool voiceRecognitionEnabled = config->GetDbHandle()->GetBoolValue(VOICE_RECOGNITION_KEY, false); std::string voiceRecognitionTypes = config->GetDbHandle()->GetStringValue(VOICE_RECOGNITION_TYPES, ""); - auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); std::lock_guard lock(subscribeMSDPMutex_); if (!isSubscribeMSDPCallback_ && voiceRecognitionEnabled && !voiceRecognitionTypes.empty()) { - std::function)> func = [ = ]( - int32_t callbackId, std::shared_ptr userStatusData) { - HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", - callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); - - ExtensionAbilityManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); - }; - int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); - userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); - isSubscribeMSDPCallback_ = true; - HILOG_INFO("userstatusClient.SubscribeCallback RET: %{public}d", ret); + if (MsdpManager::SubscribeVoiceRecognition() > 0) { + isSubscribeMSDPCallback_ = true; + } else { + HILOG_ERROR("SubscribeVoiceRecognition error: %{public}d", ret); + } return; } if (isSubscribeMSDPCallback_ && (!voiceRecognitionEnabled || voiceRecognitionTypes.empty())) { - userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); + MsdpManager::UnSubscribeVoiceRecognition(); isSubscribeMSDPCallback_ = false; - HILOG_INFO("userstatusClient.Unsubscribe"); return; } - #endif // ACCESSIBILITY_USER_STATUS_AWARENESS } void AccessibleAbilityManagerService::RegisterVoiceRecognitionState() diff --git a/services/aams/src/msdp_manager.cpp b/services/aams/src/msdp_manager.cpp new file mode 100644 index 000000000..d2dc29a3e --- /dev/null +++ b/services/aams/src/msdp_manager.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef ACCESSIBILITY_USER_STATUS_AWARENESS +#include "user_status_client.h" +#endif // ACCESSIBILITY_USER_STATUS_AWARENESS +#include "msdp_manager.h" +#include "extension_ability_manager.cpp" + +namespace OHOS { +namespace Accessibility { + +const int32_t FEATURE_VOICE_RECOGNITION = 17; + +int32_t MsdpManager::SubscribeVoiceRecognition() +{ + HILOG_INFO(); + #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS + std::function)> func = [ = ]( + int32_t callbackId, std::shared_ptr userStatusData) { + HILOG_INFO("voice recognition callback, Id: %{public}d, GetFeature: %{public}d, GetResult: %{public}d", + callbackId, userStatusData->GetFeature(), userStatusData->GetResult()); + + ExtensionAbilityManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); + }; + auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); + int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); + userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); + HILOG_INFO("userstatusClient.SubscribeCallback RET: %{public}d", ret); + return ret; + #endif // ACCESSIBILITY_USER_STATUS_AWARENESS +} + +void MsdpManager::UnSubscribeVoiceRecognition() +{ + HILOG_INFO(); + #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS + auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); + userstatusClient.Unsubscribe(FEATURE_VOICE_RECOGNITION); + HILOG_INFO("msdp userstatusClient.Unsubscribe"); + #endif // ACCESSIBILITY_USER_STATUS_AWARENESS +} +} // namespace Accessibility +} // namespace OHOS diff --git a/services/aams/test/BUILD.gn b/services/aams/test/BUILD.gn index eb645141e..cd58038d6 100644 --- a/services/aams/test/BUILD.gn +++ b/services/aams/test/BUILD.gn @@ -70,6 +70,7 @@ ohos_unittest("accessibility_account_data_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", "../src/extension_ability_manager.cpp", + "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -185,6 +186,7 @@ ohos_unittest("accessible_ability_manager_service_test") { "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", "../src/extension_ability_manager.cpp", + "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", "../src/accessibility_window_connection.cpp", @@ -756,6 +758,7 @@ ohos_unittest("accessible_ability_connection_test") { "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", "../src/extension_ability_manager.cpp", + "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", "../src/accessibility_window_connection.cpp", @@ -1178,6 +1181,7 @@ ohos_unittest("accessibility_mouse_autoclick_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/extension_ability_manager.cpp", + "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -1614,6 +1618,7 @@ ohos_unittest("accessibility_settings_config_test") { "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", "../src/extension_ability_manager.cpp", + "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", "../src/accessibility_touchEvent_injector.cpp", diff --git a/services/test/BUILD.gn b/services/test/BUILD.gn index 6a0cc0280..87807e738 100644 --- a/services/test/BUILD.gn +++ b/services/test/BUILD.gn @@ -78,6 +78,7 @@ ohos_moduletest("aams_accessibility_touch_exploration_test") { "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", "../aams/src/extension_ability_manager.cpp", + "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -192,6 +193,7 @@ ohos_moduletest("aams_accessibility_touchEvent_injector_test") { "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", "../aams/src/extension_ability_manager.cpp", + "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -307,6 +309,7 @@ ohos_moduletest("aams_accessible_ability_channel_test") { "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", "../aams/src/extension_ability_manager.cpp", + "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -421,6 +424,7 @@ ohos_moduletest("aams_server_test") { "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", "../aams/src/extension_ability_manager.cpp", + "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -533,6 +537,7 @@ ohos_moduletest("aams_accessibility_keyevent_filter_test") { "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", "../aams/src/extension_ability_manager.cpp", + "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", @@ -646,6 +651,7 @@ ohos_moduletest("aams_common_event_registry_test") { "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", "../aams/src/extension_ability_manager.cpp", + "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", "../aams/src/accessibility_window_connection.cpp", From 652cd2ccff9ecdb60819b218f5b647b392a0311d Mon Sep 17 00:00:00 2001 From: qianchuang Date: Sat, 17 May 2025 11:22:27 +0800 Subject: [PATCH 20/22] voice recognition Signed-off-by: qianchuang --- frameworks/aafwk/test/BUILD.gn | 1 - services/aams/BUILD.gn | 1 - services/aams/src/accessible_ability_manager_service.cpp | 2 +- services/aams/test/BUILD.gn | 5 ----- services/test/BUILD.gn | 6 ------ 5 files changed, 1 insertion(+), 14 deletions(-) diff --git a/frameworks/aafwk/test/BUILD.gn b/frameworks/aafwk/test/BUILD.gn index 8273c5883..8f2b68b34 100755 --- a/frameworks/aafwk/test/BUILD.gn +++ b/frameworks/aafwk/test/BUILD.gn @@ -120,7 +120,6 @@ ohos_unittest("accessible_ability_test") { "../../../services/aams/src/accessibility_setting_observer.cpp", "../../../services/aams/src/accessibility_settings.cpp", "../../../services/aams/src/accessibility_settings_config.cpp", - "../../../services/aams/src/extension_ability_manager.cpp", "../../../services/aams/src/msdp_manager.cpp", "../../../services/aams/src/accessible_ability_manager_service.cpp", "../../../services/aams/src/accessible_ability_manager_service_event_handler.cpp", diff --git a/services/aams/BUILD.gn b/services/aams/BUILD.gn index 656d9f51b..b1167d9c4 100644 --- a/services/aams/BUILD.gn +++ b/services/aams/BUILD.gn @@ -68,7 +68,6 @@ accessibleabilityms_files = [ "${services_path}/src/accessibility_resource_bundle_manager.cpp", "${services_path}/src/accessibility_setting_observer.cpp", "${services_path}/src/accessibility_setting_provider.cpp", - "${services_path}/src/extension_ability_manager.cpp", "${services_path}/src/msdp_manager.cpp", "${services_path}/src/accessibility_short_key_dialog.cpp", "${services_path}/src/accessibility_datashare_helper.cpp", diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index 09e6b20c1..acecead94 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -3490,7 +3490,7 @@ void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() if (MsdpManager::SubscribeVoiceRecognition() > 0) { isSubscribeMSDPCallback_ = true; } else { - HILOG_ERROR("SubscribeVoiceRecognition error: %{public}d", ret); + HILOG_ERROR("SubscribeVoiceRecognition error"); } return; } diff --git a/services/aams/test/BUILD.gn b/services/aams/test/BUILD.gn index cd58038d6..88aec0c53 100644 --- a/services/aams/test/BUILD.gn +++ b/services/aams/test/BUILD.gn @@ -69,7 +69,6 @@ ohos_unittest("accessibility_account_data_test") { "../src/accessibility_screen_touch.cpp", "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", - "../src/extension_ability_manager.cpp", "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", @@ -185,7 +184,6 @@ ohos_unittest("accessible_ability_manager_service_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", - "../src/extension_ability_manager.cpp", "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -757,7 +755,6 @@ ohos_unittest("accessible_ability_connection_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", - "../src/extension_ability_manager.cpp", "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_touchEvent_injector.cpp", @@ -1180,7 +1177,6 @@ ohos_unittest("accessibility_mouse_autoclick_test") { "../src/accessibility_setting_observer.cpp", "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", - "../src/extension_ability_manager.cpp", "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", @@ -1617,7 +1613,6 @@ ohos_unittest("accessibility_settings_config_test") { "../src/accessibility_setting_provider.cpp", "../src/accessibility_settings.cpp", "../src/accessibility_settings_config.cpp", - "../src/extension_ability_manager.cpp", "../src/msdp_manager.cpp", "../src/accessibility_short_key.cpp", "../src/accessibility_short_key_dialog.cpp", diff --git a/services/test/BUILD.gn b/services/test/BUILD.gn index 87807e738..2846762a8 100644 --- a/services/test/BUILD.gn +++ b/services/test/BUILD.gn @@ -77,7 +77,6 @@ ohos_moduletest("aams_accessibility_touch_exploration_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/extension_ability_manager.cpp", "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", @@ -192,7 +191,6 @@ ohos_moduletest("aams_accessibility_touchEvent_injector_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/extension_ability_manager.cpp", "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", @@ -308,7 +306,6 @@ ohos_moduletest("aams_accessible_ability_channel_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/extension_ability_manager.cpp", "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", @@ -423,7 +420,6 @@ ohos_moduletest("aams_server_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/extension_ability_manager.cpp", "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", @@ -536,7 +532,6 @@ ohos_moduletest("aams_accessibility_keyevent_filter_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/extension_ability_manager.cpp", "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", @@ -650,7 +645,6 @@ ohos_moduletest("aams_common_event_registry_test") { "../aams/src/accessibility_setting_observer.cpp", "../aams/src/accessibility_settings.cpp", "../aams/src/accessibility_settings_config.cpp", - "../aams/src/extension_ability_manager.cpp", "../aams/src/msdp_manager.cpp", "../aams/src/accessibility_short_key.cpp", "../aams/src/accessibility_touchEvent_injector.cpp", From 90bb6a033096db9f2a96c9e8748051a4f63543f2 Mon Sep 17 00:00:00 2001 From: qianchuang Date: Sat, 17 May 2025 11:41:58 +0800 Subject: [PATCH 21/22] voice recognition Signed-off-by: qianchuang --- services/aams/src/accessible_ability_manager_service.cpp | 8 +++----- services/aams/src/msdp_manager.cpp | 5 +++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index acecead94..a10bc796a 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -3487,11 +3487,9 @@ void AccessibleAbilityManagerService::OnVoiceRecognitionChanged() std::lock_guard lock(subscribeMSDPMutex_); if (!isSubscribeMSDPCallback_ && voiceRecognitionEnabled && !voiceRecognitionTypes.empty()) { - if (MsdpManager::SubscribeVoiceRecognition() > 0) { - isSubscribeMSDPCallback_ = true; - } else { - HILOG_ERROR("SubscribeVoiceRecognition error"); - } + int32_t ret = MsdpManager::SubscribeVoiceRecognition(); + isSubscribeMSDPCallback_ = true; + HILOG_INFO("SubscribeVoiceRecognition ret: %{public}d", ret); return; } diff --git a/services/aams/src/msdp_manager.cpp b/services/aams/src/msdp_manager.cpp index d2dc29a3e..c9c06dce2 100644 --- a/services/aams/src/msdp_manager.cpp +++ b/services/aams/src/msdp_manager.cpp @@ -27,6 +27,7 @@ const int32_t FEATURE_VOICE_RECOGNITION = 17; int32_t MsdpManager::SubscribeVoiceRecognition() { HILOG_INFO(); + int32_t ret = 0; #ifdef ACCESSIBILITY_USER_STATUS_AWARENESS std::function)> func = [ = ]( int32_t callbackId, std::shared_ptr userStatusData) { @@ -36,11 +37,11 @@ int32_t MsdpManager::SubscribeVoiceRecognition() ExtensionAbilityManager::GetInstance().VoiceRecognize(userStatusData->GetResult()); }; auto &userstatusClient = Msdp::UserStatusAwareness::UserStatusClient::GetInstance(); - int32_t ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); + ret = userstatusClient.SubscribeCallback(FEATURE_VOICE_RECOGNITION, func); userstatusClient.Subscribe(FEATURE_VOICE_RECOGNITION, {}); HILOG_INFO("userstatusClient.SubscribeCallback RET: %{public}d", ret); - return ret; #endif // ACCESSIBILITY_USER_STATUS_AWARENESS + return ret; } void MsdpManager::UnSubscribeVoiceRecognition() From 682105ada356a2e5662f4bf28710a93baf1c59fd Mon Sep 17 00:00:00 2001 From: qianchuang Date: Sat, 17 May 2025 04:45:04 +0000 Subject: [PATCH 22/22] 12 Signed-off-by: qianchuang --- services/aams/include/msdp_manager.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/aams/include/msdp_manager.h b/services/aams/include/msdp_manager.h index c5e4e8ee6..e95142c1f 100644 --- a/services/aams/include/msdp_manager.h +++ b/services/aams/include/msdp_manager.h @@ -16,6 +16,8 @@ #ifndef MSDP_MANAGER_H #define MSDP_MANAGER_H +#include + namespace OHOS { namespace Accessibility { class MsdpManager {