Loading core/res/res/values/config.xml +3 −3 Original line number Diff line number Diff line Loading @@ -650,9 +650,9 @@ speech --> <bool name="config_bluetooth_wide_band_speech">true</bool> <!-- Boolean indicating if current platform supports quick switch-on/off of Bluetooth Module --> <bool name="config_bluetooth_adapter_quick_switch">true</bool> <!-- Boolean indicating if current platform need do one-time bluetooth address re-validation --> <bool name="config_bluetooth_address_validation">false</bool> <!-- The default data-use polling period. --> <integer name="config_datause_polling_period_sec">600</integer> Loading core/res/res/values/symbols.xml +1 −1 Original line number Diff line number Diff line Loading @@ -245,7 +245,7 @@ <java-symbol type="bool" name="action_bar_embed_tabs_pre_jb" /> <java-symbol type="bool" name="action_bar_expanded_action_views_exclusive" /> <java-symbol type="bool" name="config_allowActionMenuItemTextWithIcon" /> <java-symbol type="bool" name="config_bluetooth_adapter_quick_switch" /> <java-symbol type="bool" name="config_bluetooth_address_validation" /> <java-symbol type="bool" name="config_bluetooth_sco_off_call" /> <java-symbol type="bool" name="config_cellBroadcastAppLinks" /> <java-symbol type="bool" name="config_duplicate_port_omadm_wappush" /> Loading services/java/com/android/server/BluetoothManagerService.java +40 −22 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub { private static final String BLUETOOTH_PERM = android.Manifest.permission.BLUETOOTH; private static final String ACTION_SERVICE_STATE_CHANGED="com.android.bluetooth.btservice.action.STATE_CHANGED"; private static final String EXTRA_ACTION="action"; private static final String SECURE_SETTINGS_BLUETOOTH_ADDR_VALID="bluetooth_addr_valid"; private static final String SECURE_SETTINGS_BLUETOOTH_ADDRESS="bluetooth_address"; private static final String SECURE_SETTINGS_BLUETOOTH_NAME="bluetooth_name"; private static final int TIMEOUT_BIND_MS = 3000; //Maximum msec to wait for a bind Loading Loading @@ -174,7 +175,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub { //Enable if (DBG) Log.d(TAG, "Auto-enabling Bluetooth."); enableHelper(); } else if (!isNameAndAddressSet()) { } if (!isNameAndAddressSet()) { //Sync the Bluetooth name and address from the Bluetooth Adapter if (DBG) Log.d(TAG,"Retrieving Bluetooth Adapter name and address..."); getNameAndAddress(); Loading Loading @@ -222,11 +225,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub { */ private void loadStoredNameAndAddress() { if (DBG) Log.d(TAG, "Loading stored name and address"); if (mContext.getResources().getBoolean (com.android.internal.R.bool.config_bluetooth_address_validation) && Settings.Secure.getInt(mContentResolver, SECURE_SETTINGS_BLUETOOTH_ADDR_VALID, 0) == 0) { // if the valid flag is not set, don't load the address and name if (DBG) Log.d(TAG, "invalid bluetooth name and address stored"); return; } mName = Settings.Secure.getString(mContentResolver, SECURE_SETTINGS_BLUETOOTH_NAME); mAddress = Settings.Secure.getString(mContentResolver, SECURE_SETTINGS_BLUETOOTH_ADDRESS); if (mName == null || mAddress == null) { if (DBG) Log.d(TAG, "Name or address not cached..."); } if (DBG) Log.d(TAG, "Stored bluetooth Name=" + mName + ",Address=" + mAddress); } /** Loading @@ -249,6 +257,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (DBG) Log.d(TAG,"Stored Bluetoothaddress: " + Settings.Secure.getString(mContentResolver,SECURE_SETTINGS_BLUETOOTH_ADDRESS)); } if ((name != null) && (address != null)) { Settings.Secure.putInt(mContentResolver, SECURE_SETTINGS_BLUETOOTH_ADDR_VALID, 1); } } public IBluetooth registerAdapter(IBluetoothManagerCallback callback){ Loading Loading @@ -560,7 +572,18 @@ class BluetoothManagerService extends IBluetoothManager.Stub { break; } case MESSAGE_SAVE_NAME_AND_ADDRESS: { boolean unbind = false; if (DBG) Log.d(TAG,"MESSAGE_SAVE_NAME_AND_ADDRESS"); synchronized(mConnection) { if (!mEnable && mBluetooth != null) { try { mBluetooth.enable(); } catch (RemoteException e) { Log.e(TAG,"Unable to call enable()",e); } } } if (mBluetooth != null) waitForOnOff(true, false); synchronized(mConnection) { if (mBluetooth != null) { String name = null; Loading @@ -575,7 +598,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (name != null && address != null) { storeNameAndAddress(name,address); if (mConnection.isGetNameAddressOnly()) { unbindAndFinish(); unbind = true; } } else { if (msg.arg1 < MAX_SAVE_RETRIES) { Loading @@ -586,10 +609,17 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } else { Log.w(TAG,"Maximum name/address remote retrieval retry exceeded"); if (mConnection.isGetNameAddressOnly()) { unbindAndFinish(); unbind = true; } } } if (!mEnable) { try { mBluetooth.disable(); } catch (RemoteException e) { Log.e(TAG,"Unable to call disable()",e); } } } else { // rebind service by Request GET NAME AND ADDRESS // if service is unbinded by disable or Loading @@ -598,6 +628,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mHandler.sendMessage(getMsg); } } if (!mEnable && mBluetooth != null) waitForOnOff(false, true); if (unbind) { unbindAndFinish(); } break; } case MESSAGE_ENABLE: Loading Loading @@ -677,14 +711,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { //Inform BluetoothAdapter instances that service is up sendBluetoothServiceUpCallback(); //Check if name and address is loaded if not get it first. if (!isNameAndAddressSet()) { try { storeNameAndAddress(mBluetooth.getName(), mBluetooth.getAddress()); } catch (RemoteException e) {Log.e(TAG, "", e);}; } //Do enable request try { if (mQuietEnable == false) { Loading Loading @@ -873,14 +899,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { sendBluetoothServiceUpCallback(); } //Check if name and address is loaded if not get it first. if (!isNameAndAddressSet()) { try { if (DBG) Log.d(TAG,"Getting and storing Bluetooth name and address prior to enable."); storeNameAndAddress(mBluetooth.getName(),mBluetooth.getAddress()); } catch (RemoteException e) {Log.e(TAG, "", e);}; } //Enable bluetooth try { if (!mQuietEnable) { Loading Loading
core/res/res/values/config.xml +3 −3 Original line number Diff line number Diff line Loading @@ -650,9 +650,9 @@ speech --> <bool name="config_bluetooth_wide_band_speech">true</bool> <!-- Boolean indicating if current platform supports quick switch-on/off of Bluetooth Module --> <bool name="config_bluetooth_adapter_quick_switch">true</bool> <!-- Boolean indicating if current platform need do one-time bluetooth address re-validation --> <bool name="config_bluetooth_address_validation">false</bool> <!-- The default data-use polling period. --> <integer name="config_datause_polling_period_sec">600</integer> Loading
core/res/res/values/symbols.xml +1 −1 Original line number Diff line number Diff line Loading @@ -245,7 +245,7 @@ <java-symbol type="bool" name="action_bar_embed_tabs_pre_jb" /> <java-symbol type="bool" name="action_bar_expanded_action_views_exclusive" /> <java-symbol type="bool" name="config_allowActionMenuItemTextWithIcon" /> <java-symbol type="bool" name="config_bluetooth_adapter_quick_switch" /> <java-symbol type="bool" name="config_bluetooth_address_validation" /> <java-symbol type="bool" name="config_bluetooth_sco_off_call" /> <java-symbol type="bool" name="config_cellBroadcastAppLinks" /> <java-symbol type="bool" name="config_duplicate_port_omadm_wappush" /> Loading
services/java/com/android/server/BluetoothManagerService.java +40 −22 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub { private static final String BLUETOOTH_PERM = android.Manifest.permission.BLUETOOTH; private static final String ACTION_SERVICE_STATE_CHANGED="com.android.bluetooth.btservice.action.STATE_CHANGED"; private static final String EXTRA_ACTION="action"; private static final String SECURE_SETTINGS_BLUETOOTH_ADDR_VALID="bluetooth_addr_valid"; private static final String SECURE_SETTINGS_BLUETOOTH_ADDRESS="bluetooth_address"; private static final String SECURE_SETTINGS_BLUETOOTH_NAME="bluetooth_name"; private static final int TIMEOUT_BIND_MS = 3000; //Maximum msec to wait for a bind Loading Loading @@ -174,7 +175,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub { //Enable if (DBG) Log.d(TAG, "Auto-enabling Bluetooth."); enableHelper(); } else if (!isNameAndAddressSet()) { } if (!isNameAndAddressSet()) { //Sync the Bluetooth name and address from the Bluetooth Adapter if (DBG) Log.d(TAG,"Retrieving Bluetooth Adapter name and address..."); getNameAndAddress(); Loading Loading @@ -222,11 +225,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub { */ private void loadStoredNameAndAddress() { if (DBG) Log.d(TAG, "Loading stored name and address"); if (mContext.getResources().getBoolean (com.android.internal.R.bool.config_bluetooth_address_validation) && Settings.Secure.getInt(mContentResolver, SECURE_SETTINGS_BLUETOOTH_ADDR_VALID, 0) == 0) { // if the valid flag is not set, don't load the address and name if (DBG) Log.d(TAG, "invalid bluetooth name and address stored"); return; } mName = Settings.Secure.getString(mContentResolver, SECURE_SETTINGS_BLUETOOTH_NAME); mAddress = Settings.Secure.getString(mContentResolver, SECURE_SETTINGS_BLUETOOTH_ADDRESS); if (mName == null || mAddress == null) { if (DBG) Log.d(TAG, "Name or address not cached..."); } if (DBG) Log.d(TAG, "Stored bluetooth Name=" + mName + ",Address=" + mAddress); } /** Loading @@ -249,6 +257,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (DBG) Log.d(TAG,"Stored Bluetoothaddress: " + Settings.Secure.getString(mContentResolver,SECURE_SETTINGS_BLUETOOTH_ADDRESS)); } if ((name != null) && (address != null)) { Settings.Secure.putInt(mContentResolver, SECURE_SETTINGS_BLUETOOTH_ADDR_VALID, 1); } } public IBluetooth registerAdapter(IBluetoothManagerCallback callback){ Loading Loading @@ -560,7 +572,18 @@ class BluetoothManagerService extends IBluetoothManager.Stub { break; } case MESSAGE_SAVE_NAME_AND_ADDRESS: { boolean unbind = false; if (DBG) Log.d(TAG,"MESSAGE_SAVE_NAME_AND_ADDRESS"); synchronized(mConnection) { if (!mEnable && mBluetooth != null) { try { mBluetooth.enable(); } catch (RemoteException e) { Log.e(TAG,"Unable to call enable()",e); } } } if (mBluetooth != null) waitForOnOff(true, false); synchronized(mConnection) { if (mBluetooth != null) { String name = null; Loading @@ -575,7 +598,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (name != null && address != null) { storeNameAndAddress(name,address); if (mConnection.isGetNameAddressOnly()) { unbindAndFinish(); unbind = true; } } else { if (msg.arg1 < MAX_SAVE_RETRIES) { Loading @@ -586,10 +609,17 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } else { Log.w(TAG,"Maximum name/address remote retrieval retry exceeded"); if (mConnection.isGetNameAddressOnly()) { unbindAndFinish(); unbind = true; } } } if (!mEnable) { try { mBluetooth.disable(); } catch (RemoteException e) { Log.e(TAG,"Unable to call disable()",e); } } } else { // rebind service by Request GET NAME AND ADDRESS // if service is unbinded by disable or Loading @@ -598,6 +628,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mHandler.sendMessage(getMsg); } } if (!mEnable && mBluetooth != null) waitForOnOff(false, true); if (unbind) { unbindAndFinish(); } break; } case MESSAGE_ENABLE: Loading Loading @@ -677,14 +711,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { //Inform BluetoothAdapter instances that service is up sendBluetoothServiceUpCallback(); //Check if name and address is loaded if not get it first. if (!isNameAndAddressSet()) { try { storeNameAndAddress(mBluetooth.getName(), mBluetooth.getAddress()); } catch (RemoteException e) {Log.e(TAG, "", e);}; } //Do enable request try { if (mQuietEnable == false) { Loading Loading @@ -873,14 +899,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { sendBluetoothServiceUpCallback(); } //Check if name and address is loaded if not get it first. if (!isNameAndAddressSet()) { try { if (DBG) Log.d(TAG,"Getting and storing Bluetooth name and address prior to enable."); storeNameAndAddress(mBluetooth.getName(),mBluetooth.getAddress()); } catch (RemoteException e) {Log.e(TAG, "", e);}; } //Enable bluetooth try { if (!mQuietEnable) { Loading