Add new atoms for trusted hotword
These atoms will be logged immediately when
(1)HotwordDetectorCreateRequested:The assistant app created a
hotword detector.
(2)HotwordDetectionServiceInitResultReported:Received the
hotword detection service init result.
(3)HotwordDetectionServiceRestarted:The hotword detection
service is restarted.
(4)HotwordDetectorKeyphraseTriggered:Received the keyphrase
trigger and the result of handling this keyphrase trigger.
(5)HotwordDetectorEvents:Related to hotword detector events.
Ex:The status of the hotword detection service
Android Metrics Design Review : eldar/276723226
Bug: 207717787
Change-Id: I70c652f891cae5fbefb4cb113469cd7fa38565d1
Merged-in: Ide26a38be15dab3f284fc3975a5e331f45b508db
Test: build pass
(cherry picked from commit f7996fc5027b278a28dc76726b3fd377f014ed7f)
diff --git a/stats/atoms.proto b/stats/atoms.proto
index 32b7629..c6779d7 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -34,6 +34,7 @@
import "frameworks/proto_logging/stats/enums/debug/enums.proto";
import "frameworks/proto_logging/stats/enums/hardware/biometrics/enums.proto";
import "frameworks/proto_logging/stats/enums/hardware/sensor/assist/enums.proto";
+import "frameworks/proto_logging/stats/enums/hotword/enums.proto";
import "frameworks/proto_logging/stats/enums/net/enums.proto";
import "frameworks/proto_logging/stats/enums/os/enums.proto";
import "frameworks/proto_logging/stats/enums/server/connectivity/data_stall_event.proto";
@@ -583,6 +584,16 @@
SplitscreenUIChanged splitscreen_ui_changed = 388 [(module) = "framework"];
AccessibilityFloatingMenuUIChanged accessibility_floating_menu_ui_changed = 393 [(module) = "sysui"];
CameraCompatControlEventReported camera_compat_control_event_reported = 411 [(module) = "framework"];
+ HotwordDetectorCreateRequested hotword_detector_create_requested = 430
+ [(module) = "framework"];
+ HotwordDetectionServiceInitResultReported hotword_detection_service_init_result_reported = 431
+ [(module) = "framework"];
+ HotwordDetectionServiceRestarted hotword_detection_service_restarted = 432
+ [(module) = "framework"];
+ HotwordDetectorKeyphraseTriggered hotword_detector_keyphrase_triggered = 433
+ [(module) = "framework"];
+ HotwordDetectorEvents hotword_detector_events = 434
+ [(module) = "framework"];
// StatsdStats tracks platform atoms with ids upto 500.
// Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
@@ -17548,3 +17559,140 @@
optional int32 count = 5;
}
+/**
+ * Logs information related to creating hotword detector.
+ */
+message HotwordDetectorCreateRequested {
+ // The type of detector.
+ optional android.hotword.HotwordDetectorType detector_type = 1;
+
+ // True if the detector is created successfully.
+ optional bool is_created_done = 2;
+
+ // The UID for which assistant application is active.
+ optional int32 uid = 3 [(is_uid) = true];
+}
+
+/**
+ * Logs information related to hotword detection service init result.
+ */
+message HotwordDetectionServiceInitResultReported {
+ // The type of detector.
+ optional android.hotword.HotwordDetectorType detector_type = 1;
+
+ // The result of initialization.
+ enum Result {
+ // Indicates that the service was initialized successfully.
+ CALLBACK_INIT_STATE_SUCCESS = 0;
+
+ // Indicates that the service was not initialized successfully.
+ CALLBACK_INIT_STATE_ERROR = 1;
+
+ // Indicates that the callback was invoked without init state.
+ CALLBACK_INIT_STATE_UNKNOWN_NO_VALUE = 2;
+
+ // Indicates that the callback was invoked, but the init state value exceeded
+ // the defined maximum.
+ CALLBACK_INIT_STATE_UNKNOWN_OVER_MAX_CUSTOM_VALUE = 3;
+
+ // Indicates that the callback was not invoked within timeout.
+ CALLBACK_INIT_STATE_UNKNOWN_TIMEOUT = 4;
+ }
+ optional Result result = 2;
+}
+
+/**
+ * Logs information related to restarting hotword detection service.
+ */
+message HotwordDetectionServiceRestarted {
+ // The type of detector.
+ optional android.hotword.HotwordDetectorType detector_type = 1;
+
+ // The reason for restarting service.
+ enum Reason {
+ // UNKNOWN value.
+ UNKNOWN = 0;
+
+ // Indicates that the service was restarted due to audio service died.
+ AUDIO_SERVICE_DIED = 1;
+
+ // Indicates that the service was restarted regularly.
+ SCHEDULE = 2;
+
+ // Indicates that the service was restarted due to service crashed.
+ CRASH = 3;
+ }
+ optional Reason reason = 2;
+}
+
+/**
+ * Logs information related to keyphrase trigger.
+ */
+message HotwordDetectorKeyphraseTriggered {
+ // The type of detector.
+ optional android.hotword.HotwordDetectorType detector_type = 1;
+
+ // The result of detection.
+ enum Result {
+ // Indicates that the system got the keyphrase from DSP.
+ KEYPHRASE_TRIGGER = 0;
+
+ // Indicates that the system can not inform the service to verify the keyphrase.
+ FAILED_TO_INFORM_SERVICE = 1;
+
+ // Indicates that the callback was not invoked within timeout after informing
+ // the service.
+ DETECT_TIMEOUT = 2;
+
+ // Indicates that the system got the exception after informing the service.
+ DETECT_EXCEPTION = 3;
+
+ // Indicates that the service crashed.
+ SERVICE_CRASH = 4;
+
+ // Indicates that the keyphrase was detected.
+ DETECTED = 5;
+
+ // Indicates that the keyphrase was not detected.
+ REJECTED = 6;
+ }
+ // What result after detecting.
+ optional Result result = 2;
+}
+
+/**
+ * Logs information related to hotword detector events.
+ */
+message HotwordDetectorEvents {
+ // The type of detector.
+ optional android.hotword.HotwordDetectorType detector_type = 1;
+
+ // The type of event.
+ enum Event {
+ // UNKNOWN value.
+ UNKNOWN = 0;
+
+ // Indicates that the system requested to bind the service.
+ REQUEST_BIND_SERVICE = 1;
+
+ // Indicates that the system connected the service successfully.
+ ON_CONNECTED = 2;
+
+ // Indicates that the system failed to bind the service.
+ REQUEST_BIND_SERVICE_FAIL = 3;
+
+ // Indicates that the system called the updateState function of service.
+ REQUEST_UPDATE_STATE = 4;
+
+ // Indicates that the callback was not invoked within timeout after calling
+ // the updateState function of service.
+ CALLBACK_UPDATE_STATE_AFTER_TIMEOUT = 5;
+
+ // Indicates that no starting recognition after creating the detector.
+ DID_NOT_CALL_START_RECOGNITION = 6;
+ }
+ optional Event event = 2;
+
+ // The UID for which assistant application is active.
+ optional int32 uid = 3 [(is_uid) = true];
+}
diff --git a/stats/enums/hotword/enums.proto b/stats/enums/hotword/enums.proto
new file mode 100644
index 0000000..b9ae9ed
--- /dev/null
+++ b/stats/enums/hotword/enums.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * 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.
+ */
+
+syntax = "proto2";
+
+package android.hotword;
+
+/**
+ * The type of hotword detector
+ */
+enum HotwordDetectorType {
+ // Indicates that it is a non-trusted hotword detector.
+ NORMAL_DETECTOR = 0;
+ // Indicates that it is a DSP trusted hotword detector.
+ TRUSTED_DETECTOR_DSP = 1;
+ // Indicates that it is a software trusted hotword detector.
+ TRUSTED_DETECTOR_SOFTWARE = 2;
+}