Refactor car mode.
Extract all UI behavior from dock observer and ACTION_DOCK_EVENT. Also introduce a desk type to go along with the car type all through the resource system, since we now need to have corresponding high-level broadcasts for desk dock mode. As part of that I also reworked some of the logic for switching modes to all funnel through a single update() call that looks all of the current state to decide what to do next, and fixed various locking issues. In addition I found there were bugs in the configuration change handling causing us to only switch into the car mode config and then never get out of it. Unfortunately now that we are actually changing the configuration for each mode change, the transitions between them are really crummy as we restart all kinds of activities. :(
This commit is contained in:
@@ -97,6 +97,7 @@ class ServerThread extends Thread {
|
||||
BluetoothA2dpService bluetoothA2dp = null;
|
||||
HeadsetObserver headset = null;
|
||||
DockObserver dock = null;
|
||||
UiModeManagerService uiMode = null;
|
||||
RecognitionManagerService recognition = null;
|
||||
|
||||
// Critical services...
|
||||
@@ -362,6 +363,14 @@ class ServerThread extends Thread {
|
||||
Slog.e(TAG, "Failure starting DockObserver", e);
|
||||
}
|
||||
|
||||
try {
|
||||
Slog.i(TAG, "UI Mode Manager Service");
|
||||
// Listen for dock station changes
|
||||
uiMode = new UiModeManagerService(context);
|
||||
} catch (Throwable e) {
|
||||
Slog.e(TAG, "Failure starting UiModeManagerService", e);
|
||||
}
|
||||
|
||||
try {
|
||||
Slog.i(TAG, "Backup Service");
|
||||
ServiceManager.addService(Context.BACKUP_SERVICE,
|
||||
@@ -441,6 +450,7 @@ class ServerThread extends Thread {
|
||||
final BatteryService batteryF = battery;
|
||||
final ConnectivityService connectivityF = connectivity;
|
||||
final DockObserver dockF = dock;
|
||||
final UiModeManagerService uiModeF = uiMode;
|
||||
final AppWidgetService appWidgetF = appWidget;
|
||||
final WallpaperManagerService wallpaperF = wallpaper;
|
||||
final InputMethodManagerService immF = imm;
|
||||
@@ -460,6 +470,7 @@ class ServerThread extends Thread {
|
||||
if (batteryF != null) batteryF.systemReady();
|
||||
if (connectivityF != null) connectivityF.systemReady();
|
||||
if (dockF != null) dockF.systemReady();
|
||||
if (uiModeF != null) uiModeF.systemReady();
|
||||
if (recognitionF != null) recognitionF.systemReady();
|
||||
Watchdog.getInstance().start();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user