@RequiresApi(Build.VERSION_CODES.M) @Override public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) { for (AudioDeviceInfo info : addedDevices) { if (!info.isSink()) continue; long encodingFlags = getEncodingFlags(info.getEncodings()); if (encodingFlags != 0) mEncodedDevices.put(info.getId(), encodingFlags); } onAudioDevicesChanged(); }
if (addedDevices[i].getType() == AudioDeviceInfo.TYPE_WIRED_HEADSET) { AudioDeviceInfo audioDeviceInfo = addedDevices[i]; int microphone = audioDeviceInfo.getType(); String headsetName = "DCS"; String headsetAddress = ""; try { Method method = audioDeviceInfo.getClass().getMethod("getAddress"); method.setAccessible(true); headsetAddress = (String) method.invoke(audioDeviceInfo);
public boolean canPlayAudio(Context context) { PackageManager packageManager = context.getPackageManager(); AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); // Check whether the device has a speaker. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // Check FEATURE_AUDIO_OUTPUT to guard against false positives. if (!packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) { return false; } AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); for (AudioDeviceInfo device : devices) { if (device.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { return true; } } } return false; }
AudioDeviceInfo[] audioDevices = audioManager.getDevices(AudioManager.GET_DEVICES_ALL); for (AudioDeviceInfo deviceInfo : audioDevices) { if (deviceInfo.getType() == AudioDeviceInfo.TYPE_WIRED_HEADPHONES || deviceInfo.getType() == AudioDeviceInfo.TYPE_WIRED_HEADSET) { plugged_in = true; has_microphone = deviceInfo.isSource();
/** * Return true if audio would play through the speaker. */ @SuppressWarnings("deprecation") private boolean isSpeakerOn() { // Devices we consider to not be speakers. final Integer[] headsetTypes = { AudioDeviceInfo.TYPE_BLUETOOTH_A2DP, AudioDeviceInfo.TYPE_BLUETOOTH_SCO, AudioDeviceInfo.TYPE_WIRED_HEADSET, AudioDeviceInfo.TYPE_WIRED_HEADPHONES, AudioDeviceInfo.TYPE_USB_HEADSET, AudioDeviceInfo.TYPE_USB_DEVICE }; boolean result = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { AudioDeviceInfo[] devices = mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); for (AudioDeviceInfo device: devices) { Log.v("VanillaMusic", "AudioDeviceInfo type = " + device.getType()); if (Arrays.asList(headsetTypes).contains(device.getType())) { result = false; break; } } } else { result = !mAudioManager.isWiredHeadsetOn() && !mAudioManager.isBluetoothA2dpOn() && !mAudioManager.isBluetoothScoOn(); } return result; }
@RequiresApi(Build.VERSION_CODES.M) @Override public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) { for (AudioDeviceInfo info : addedDevices) { if (!info.isSink()) continue; long encodingFlags = getEncodingFlags(info.getEncodings()); if (encodingFlags != 0) mEncodedDevices.put(info.getId(), encodingFlags); } onAudioDevicesChanged(); }
for (AudioDeviceInfo devInfo : devices) { if (devInfo.getType() != AudioDeviceInfo.TYPE_BUILTIN_MIC && devInfo.getType() != AudioDeviceInfo.TYPE_TELEPHONY) { log(" USB Check iteration: " + String.valueOf(iter)); log(" USB Check get type: " + String.valueOf(devInfo.getType())); if (devInfo.getType() == AudioDeviceInfo.TYPE_USB_DEVICE || devInfo.getType() == AudioDeviceInfo.TYPE_USB_HEADSET) { log(" USB Headset detected, continue test"); usb_available = true;
@RequiresApi(Build.VERSION_CODES.M) @Override public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) { for (AudioDeviceInfo info : addedDevices) { if (!info.isSink()) continue; long encodingFlags = getEncodingFlags(info.getEncodings()); if (encodingFlags != 0) mEncodedDevices.put(info.getId(), encodingFlags); } onAudioDevicesChanged(); }