From 570cc5302a2e076f2b6ce810f9ac6f3c53bcd125 Mon Sep 17 00:00:00 2001 From: Andre Eisenbach Date: Tue, 28 Oct 2014 17:03:18 -0700 Subject: [PATCH] Fix exception in AudioService when no BT Headset is connected. If AudioManager.startBluetoothSco() is invoked with no Bluetooth Headset connected, a NullPointerException will ensue. Added check to make sure mBluetoothHeadsetDevice is set before accessing it. Bug: 17601845 Change-Id: Ia00bfffbea5484230b11a74787fe3309c18f824d --- media/java/android/media/AudioService.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index a84fe440736ea..6a695170f3c0d 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -2574,13 +2574,17 @@ public class AudioService extends IAudioService.Stub { if (mScoAudioState == SCO_STATE_INACTIVE) { mScoAudioMode = scoAudioMode; if (scoAudioMode == SCO_MODE_UNDEFINED) { - mScoAudioMode = new Integer(Settings.Global.getInt( - mContentResolver, - "bluetooth_sco_channel_"+ - mBluetoothHeadsetDevice.getAddress(), - SCO_MODE_VIRTUAL_CALL)); - if (mScoAudioMode > SCO_MODE_MAX || mScoAudioMode < 0) { - mScoAudioMode = SCO_MODE_VIRTUAL_CALL; + if (mBluetoothHeadsetDevice != null) { + mScoAudioMode = new Integer(Settings.Global.getInt( + mContentResolver, + "bluetooth_sco_channel_"+ + mBluetoothHeadsetDevice.getAddress(), + SCO_MODE_VIRTUAL_CALL)); + if (mScoAudioMode > SCO_MODE_MAX || mScoAudioMode < 0) { + mScoAudioMode = SCO_MODE_VIRTUAL_CALL; + } + } else { + mScoAudioMode = SCO_MODE_RAW; } } if (mBluetoothHeadset != null && mBluetoothHeadsetDevice != null) {