summaryrefslogtreecommitdiff
path: root/service/java/com/android/server/bluetooth/BluetoothManagerService.java
diff options
context:
space:
mode:
authorMiao Chou <mcchou@google.com>2015-06-26 17:14:35 -0700
committerAndre Eisenbach <eisenbach@google.com>2015-07-01 19:09:44 +0000
commit1e7ac062da74127adf1a5e7a1f5fb74bb493fdeb (patch)
treec6990c5cd78c613a13afceb0fbd2d91ec02535ae /service/java/com/android/server/bluetooth/BluetoothManagerService.java
parente65babd4df9b3f9a0ade1f375e143f17191c928b (diff)
Add BluetoothService to reduce resuming time after reboot
As a subclass of SystemService, BluetoothService wraps around BluetoothManagerService to unlock Auto-enabling Bluetooth earlier by overriding onBootPhase() and removes the need to wait for BOOT_COMPLETED message. Bug:21705209 Change-Id: I2acc41370a750d8416e11e662e06392326741d2c
Diffstat (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java')
-rw-r--r--service/java/com/android/server/bluetooth/BluetoothManagerService.java49
1 files changed, 27 insertions, 22 deletions
diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java
index 25f8872fa5..b9f62e6785 100644
--- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java
+++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java
@@ -60,6 +60,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
+
class BluetoothManagerService extends IBluetoothManager.Stub {
private static final String TAG = "BluetoothManagerService";
private static final boolean DBG = false;
@@ -234,25 +235,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
sendEnableMsg(mQuietEnableExternal);
}
}
- } else if (Intent.ACTION_USER_SWITCHED.equals(action)) {
- if (DBG) Log.d(TAG, "Bluetooth user switched");
- mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_USER_SWITCHED,
- intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0), 0));
- } else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
- if (DBG) Log.d(TAG, "Bluetooth boot completed");
- synchronized(mReceiver) {
- if (mEnableExternal && isBluetoothPersistedStateOnBluetooth()) {
- //Enable
- if (DBG) Log.d(TAG, "Auto-enabling Bluetooth.");
- sendEnableMsg(mQuietEnableExternal);
- }
- if (!isNameAndAddressSet()) {
- // Sync the Bluetooth name and address from the
- // Bluetooth Adapter
- if (DBG) Log.d(TAG, "Retrieving Bluetooth Adapter name and address...");
- getNameAndAddress();
- }
- }
}
}
};
@@ -277,9 +259,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
registerForBleScanModeChange();
mCallbacks = new RemoteCallbackList<IBluetoothManagerCallback>();
mStateChangeCallbacks = new RemoteCallbackList<IBluetoothStateChangeCallback>();
- IntentFilter filter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
- filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
- filter.addAction(Intent.ACTION_USER_SWITCHED);
+ IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
registerForAirplaneMode(filter);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiver(mReceiver, filter);
@@ -790,6 +770,31 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
}
/**
+ * Send enable message and set adapter name and address. Called when the boot phase becomes
+ * PHASE_SYSTEM_SERVICES_READY.
+ */
+ public void handleOnBootPhase() {
+ if (DBG) Log.d(TAG, "Bluetooth boot completed");
+ if (mEnableExternal && isBluetoothPersistedStateOnBluetooth()) {
+ if (DBG) Log.d(TAG, "Auto-enabling Bluetooth.");
+ sendEnableMsg(mQuietEnableExternal);
+ }
+ if (!isNameAndAddressSet()) {
+ // Sync the Bluetooth name and address from the Bluetooth Adapter
+ if (DBG) Log.d(TAG, "Retrieving Bluetooth Adapter name and address...");
+ getNameAndAddress();
+ }
+ }
+
+ /**
+ * Called when switching to a different foreground user.
+ */
+ public void handleOnSwitchUser(int userHandle) {
+ if (DBG) Log.d(TAG, "Bluetooth user switched");
+ mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_USER_SWITCHED, userHandle, 0));
+ }
+
+ /**
* This class manages the clients connected to a given ProfileService
* and maintains the connection with that service.
*/