1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.cts.verifier.audio.audiolib; 18 19 import android.media.AudioDeviceInfo; 20 21 import java.util.HashMap; 22 23 /** 24 * Utility methods for AudioDevices 25 */ 26 public class AudioDeviceUtils { 27 /* 28 * Channel Mask Utilities 29 */ 30 private static final HashMap<Integer, String> sDeviceTypeStrings = 31 new HashMap<Integer, String>(); 32 initDeviceTypeStrings()33 private static void initDeviceTypeStrings() { 34 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_UNKNOWN, "TYPE_UNKNOWN"); 35 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BUILTIN_EARPIECE, "TYPE_BUILTIN_EARPIECE"); 36 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER, "TYPE_BUILTIN_SPEAKER"); 37 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_WIRED_HEADSET, "TYPE_WIRED_HEADSET"); 38 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_WIRED_HEADPHONES, "TYPE_WIRED_HEADPHONES"); 39 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_LINE_ANALOG, "TYPE_LINE_ANALOG"); 40 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_LINE_DIGITAL, "TYPE_LINE_DIGITAL"); 41 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BLUETOOTH_SCO, "TYPE_BLUETOOTH_SCO"); 42 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP, "TYPE_BLUETOOTH_A2DP"); 43 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_HDMI, "TYPE_HDMI"); 44 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_HDMI_ARC, "TYPE_HDMI_ARC"); 45 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_USB_DEVICE, "TYPE_USB_DEVICE"); 46 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_USB_ACCESSORY, "TYPE_USB_ACCESSORY"); 47 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_DOCK, "TYPE_DOCK"); 48 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_FM, "TYPE_FM"); 49 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BUILTIN_MIC, "TYPE_BUILTIN_MIC"); 50 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_FM_TUNER, "TYPE_FM_TUNER"); 51 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_TV_TUNER, "TYPE_TV_TUNER"); 52 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_TELEPHONY, "TYPE_TELEPHONY"); 53 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_AUX_LINE, "TYPE_AUX_LINE"); 54 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_IP, "TYPE_IP"); 55 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BUS, "TYPE_BUS"); 56 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_USB_HEADSET, "TYPE_USB_HEADSET"); 57 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_HEARING_AID, "TYPE_HEARING_AID"); 58 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER_SAFE, 59 "TYPE_BUILTIN_SPEAKER_SAFE"); 60 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_REMOTE_SUBMIX, "TYPE_REMOTE_SUBMIX"); 61 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BLE_HEADSET, "TYPE_BLE_HEADSET"); 62 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BLE_SPEAKER, "TYPE_BLE_SPEAKER"); 63 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_ECHO_REFERENCE, "TYPE_ECHO_REFERENCE"); 64 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_HDMI_EARC, "TYPE_HDMI_EARC"); 65 sDeviceTypeStrings.put(AudioDeviceInfo.TYPE_BLE_BROADCAST, "TYPE_BLE_BROADCAST"); 66 } 67 68 static { initDeviceTypeStrings()69 initDeviceTypeStrings(); 70 } 71 72 /** 73 * @param deviceType 74 * @return a human-readable device type name. 75 */ getDeviceTypeName(int deviceType)76 public static String getDeviceTypeName(int deviceType) { 77 String typeName = sDeviceTypeStrings.get(deviceType); 78 return typeName != null ? typeName : "invalid type"; 79 } 80 81 /** 82 * @param deviceInfo 83 * @return A human-readable description of the specified DeviceInfo 84 */ formatDeviceName(AudioDeviceInfo deviceInfo)85 public static String formatDeviceName(AudioDeviceInfo deviceInfo) { 86 StringBuilder sb = new StringBuilder(); 87 sb.append(deviceInfo.getProductName()); 88 sb.append(" - " + getDeviceTypeName(deviceInfo.getType())); 89 return sb.toString(); 90 } 91 } 92