diff --git a/core/api/current.txt b/core/api/current.txt index 2e821b3080af4..9f497932ed1a7 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -8909,6 +8909,8 @@ package android.bluetooth { method public int getConnectionState(android.bluetooth.BluetoothDevice); method public java.util.List getDevicesMatchingConnectionStates(int[]); method public boolean isAudioConnected(android.bluetooth.BluetoothDevice); + method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isNoiseReductionSupported(@NonNull android.bluetooth.BluetoothDevice); + method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isVoiceRecognitionSupported(@NonNull android.bluetooth.BluetoothDevice); method public boolean sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, String, String); method public boolean startVoiceRecognition(android.bluetooth.BluetoothDevice); method public boolean stopVoiceRecognition(android.bluetooth.BluetoothDevice); diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java index adb7e2f773a94..f59ae338ee2fa 100644 --- a/core/java/android/bluetooth/BluetoothHeadset.java +++ b/core/java/android/bluetooth/BluetoothHeadset.java @@ -681,6 +681,48 @@ public final class BluetoothHeadset implements BluetoothProfile { return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN; } + /** + * Checks whether the headset supports some form of noise reduction + * + * @param device Bluetooth device + * @return true if echo cancellation and/or noise reduction is supported, false otherwise + */ + @RequiresPermission(Manifest.permission.BLUETOOTH) + public boolean isNoiseReductionSupported(@NonNull BluetoothDevice device) { + if (DBG) log("isNoiseReductionSupported()"); + final IBluetoothHeadset service = mService; + if (service != null && isEnabled() && isValidDevice(device)) { + try { + return service.isNoiseReductionSupported(device); + } catch (RemoteException e) { + Log.e(TAG, Log.getStackTraceString(new Throwable())); + } + } + if (service == null) Log.w(TAG, "Proxy not attached to service"); + return false; + } + + /** + * Checks whether the headset supports voice recognition + * + * @param device Bluetooth device + * @return true if voice recognition is supported, false otherwise + */ + @RequiresPermission(Manifest.permission.BLUETOOTH) + public boolean isVoiceRecognitionSupported(@NonNull BluetoothDevice device) { + if (DBG) log("isVoiceRecognitionSupported()"); + final IBluetoothHeadset service = mService; + if (service != null && isEnabled() && isValidDevice(device)) { + try { + return service.isVoiceRecognitionSupported(device); + } catch (RemoteException e) { + Log.e(TAG, Log.getStackTraceString(new Throwable())); + } + } + if (service == null) Log.w(TAG, "Proxy not attached to service"); + return false; + } + /** * Start Bluetooth voice recognition. This methods sends the voice * recognition AT command to the headset and establishes the