summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robert Luo <robertluo@google.com> 2020-05-21 14:56:53 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-05-21 14:56:53 +0000
commit82c49a95cd61a109c1e05c57d8ecf51b111ed640 (patch)
tree88d48d20feca218e1db9f472a1ed5f0bf968226e
parenta04008425f224abe2df545ce9d097daf2c040433 (diff)
parent2f52f04fdd7be10a47d2507020aa8fbda2dea2b1 (diff)
Merge "Add data collection and metrics for Media Output Switcher - 1/n" into rvc-dev
-rw-r--r--cmds/statsd/src/atoms.proto40
-rw-r--r--core/proto/android/app/media_output_enum.proto65
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java4
4 files changed, 113 insertions, 1 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 12158b318676..c6e9e01cc0d7 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -24,6 +24,7 @@ import "frameworks/base/cmds/statsd/src/atom_field_options.proto";
import "frameworks/base/core/proto/android/app/enums.proto";
import "frameworks/base/core/proto/android/app/job/enums.proto";
import "frameworks/base/core/proto/android/app/settings_enums.proto";
+import "frameworks/base/core/proto/android/app/media_output_enum.proto";
import "frameworks/base/core/proto/android/app/tvsettings_enums.proto";
import "frameworks/base/core/proto/android/bluetooth/a2dp/enums.proto";
import "frameworks/base/core/proto/android/bluetooth/enums.proto";
@@ -441,6 +442,8 @@ message Atom {
EvsUsageStatsReported evs_usage_stats_reported = 274 [(module) = "evs"];
AudioPowerUsageDataReported audio_power_usage_data_reported = 275;
TvTunerStateChanged tv_tuner_state_changed = 276 [(module) = "framework"];
+ MediaOutputOpSwitchReported mediaoutput_op_switch_reported =
+ 277 [(module) = "settings"];
SdkExtensionStatus sdk_extension_status = 354;
// StatsdStats tracks platform atoms with ids upto 500.
@@ -9867,3 +9870,40 @@ message BytesTransferByTagAndMetered {
optional int64 tx_packets = 7;
}
+
+/*
+ * Logs when the Media Output Switcher finishes a media switch operation.
+ *
+ * Logged from:
+ * packages/apps/Settings/src/com/android/settings/media/MediaOutputSliceWorker.java
+ */
+message MediaOutputOpSwitchReported {
+ // Source medium type before switching.
+ optional android.app.settings.mediaoutput.MediumType source = 1;
+
+ // Target medium type after switching.
+ optional android.app.settings.mediaoutput.MediumType target = 2;
+
+ // The result of switching.
+ optional android.app.settings.mediaoutput.SwitchResult result = 3;
+
+ // The detail code of a switching result.
+ optional android.app.settings.mediaoutput.SubResult subresult = 4;
+
+ /*
+ * The package name of a pre-installed app, whose media session is being switched.
+ */
+ optional string media_session_package_name = 5;
+
+ // The amount of available wired devices when a switching is being performed.
+ optional int32 available_wired_device_count = 6;
+
+ // The amount of available Bluetooth devices a switching is being performed.
+ optional int32 available_bt_device_count = 7;
+
+ // The amount of available remote devices when a switching is being performed.
+ optional int32 available_remote_device_count = 8;
+
+ // The amount of applied devices within a remote dynamic group after a switching is done.
+ optional int32 applied_device_count_within_remote_group = 9;
+}
diff --git a/core/proto/android/app/media_output_enum.proto b/core/proto/android/app/media_output_enum.proto
new file mode 100644
index 000000000000..0d42fb77025a
--- /dev/null
+++ b/core/proto/android/app/media_output_enum.proto
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2020 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.app.settings.mediaoutput;
+option java_multiple_files = true;
+
+/**
+ * The medium type specified in an output switching operation.
+ */
+enum MediumType {
+ UNKNOWN_TYPE = 0;
+ BUILTIN_SPEAKER = 1;
+ WIRED_3POINT5_MM_AUDIO = 100;
+ WIRED_3POINT5_MM_HEADSET = 101;
+ WIRED_3POINT5_MM_HEADPHONES = 102;
+ USB_C_AUDIO = 200;
+ USB_C_DEVICE = 201;
+ USB_C_HEADSET = 202;
+ USB_C_ACCESSORY = 203;
+ USB_C_DOCK = 204;
+ USB_C_HDMI = 205;
+ BLUETOOTH = 300;
+ BLUETOOTH_HEARING_AID = 301;
+ BLUETOOTH_A2DP = 302;
+ REMOTE_SINGLE = 400;
+ REMOTE_TV = 401;
+ REMOTE_SPEAKER = 402;
+ REMOTE_GROUP = 500;
+ REMOTE_DYNAMIC_GROUP = 501;
+};
+
+/**
+ * The result of an output switching operation.
+ */
+enum SwitchResult {
+ ERROR = 0;
+ OK = 1;
+};
+
+/**
+ * The sub result of an output switching operation.
+ */
+enum SubResult {
+ UNKNOWN_ERROR = 0;
+ NO_ERROR = 1;
+ REJECTED = 2;
+ NETWORK_ERROR = 3;
+ ROUTE_NOT_AVAILABLE = 4;
+ INVALID_COMMAND = 5;
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
index 197e34df22a8..7d95f1992aaf 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
@@ -15,6 +15,8 @@
*/
package com.android.settingslib.media;
+import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR;
+
import android.app.Notification;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@@ -448,6 +450,8 @@ public class LocalMediaManager implements BluetoothCallback {
if (mOnTransferBluetoothDevice != null && mOnTransferBluetoothDevice.isConnected()) {
connectDevice(mOnTransferBluetoothDevice);
mOnTransferBluetoothDevice.setState(MediaDeviceState.STATE_CONNECTED);
+ dispatchSelectedDeviceStateChanged(mOnTransferBluetoothDevice,
+ MediaDeviceState.STATE_CONNECTED);
mOnTransferBluetoothDevice = null;
}
}
@@ -626,6 +630,7 @@ public class LocalMediaManager implements BluetoothCallback {
// Failed to connect
mOnTransferBluetoothDevice.setState(MediaDeviceState.STATE_DISCONNECTED);
mOnTransferBluetoothDevice = null;
+ dispatchOnRequestFailed(REASON_UNKNOWN_ERROR);
}
dispatchDeviceAttributesChanged();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
index 139a12c44e0f..8a178a9a81f2 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
@@ -49,7 +49,8 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
private static final String TAG = "MediaDevice";
@Retention(RetentionPolicy.SOURCE)
- @IntDef({MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE,
+ @IntDef({MediaDeviceType.TYPE_UNKNOWN,
+ MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE,
MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE,
MediaDeviceType.TYPE_FAST_PAIR_BLUETOOTH_DEVICE,
MediaDeviceType.TYPE_BLUETOOTH_DEVICE,
@@ -57,6 +58,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
MediaDeviceType.TYPE_CAST_GROUP_DEVICE,
MediaDeviceType.TYPE_PHONE_DEVICE})
public @interface MediaDeviceType {
+ int TYPE_UNKNOWN = 0;
int TYPE_USB_C_AUDIO_DEVICE = 1;
int TYPE_3POINT5_MM_AUDIO_DEVICE = 2;
int TYPE_FAST_PAIR_BLUETOOTH_DEVICE = 3;