Merge "Add data collection and metrics for Media Output Switcher - 1/n" into rvc-dev

This commit is contained in:
Robert Luo
2020-05-21 14:56:53 +00:00
committed by Android (Google) Code Review
4 changed files with 113 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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();
}

View File

@@ -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;