diff options
| author | 2020-05-21 14:56:53 +0000 | |
|---|---|---|
| committer | 2020-05-21 14:56:53 +0000 | |
| commit | 82c49a95cd61a109c1e05c57d8ecf51b111ed640 (patch) | |
| tree | 88d48d20feca218e1db9f472a1ed5f0bf968226e | |
| parent | a04008425f224abe2df545ce9d097daf2c040433 (diff) | |
| parent | 2f52f04fdd7be10a47d2507020aa8fbda2dea2b1 (diff) | |
Merge "Add data collection and metrics for Media Output Switcher - 1/n" into rvc-dev
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; |