diff options
-rw-r--r-- | cmds/bootanimation/BootAnimation.cpp | 7 | ||||
-rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 31 |
2 files changed, 36 insertions, 2 deletions
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index 8e7277c55ed8..16af0719d9dd 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -66,6 +66,7 @@ namespace android { static const char OEM_BOOTANIMATION_FILE[] = "/oem/media/bootanimation.zip"; +static const char PRODUCT_BOOTANIMATION_DARK_FILE[] = "/product/media/bootanimation-dark.zip"; static const char PRODUCT_BOOTANIMATION_FILE[] = "/product/media/bootanimation.zip"; static const char SYSTEM_BOOTANIMATION_FILE[] = "/system/media/bootanimation.zip"; static const char PRODUCT_ENCRYPTED_BOOTANIMATION_FILE[] = "/product/media/bootanimation-encrypted.zip"; @@ -141,7 +142,6 @@ sp<SurfaceComposerClient> BootAnimation::session() const { return mSession; } - void BootAnimation::binderDied(const wp<IBinder>&) { // woah, surfaceflinger died! @@ -355,8 +355,11 @@ void BootAnimation::findBootAnimationFile() { } } } + + const bool playDarkAnim = android::base::GetIntProperty("ro.boot.theme", 0) == 1; static const char* bootFiles[] = - {PRODUCT_BOOTANIMATION_FILE, OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE}; + {playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE, + OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE}; static const char* shutdownFiles[] = {PRODUCT_SHUTDOWNANIMATION_FILE, OEM_SHUTDOWNANIMATION_FILE, SYSTEM_SHUTDOWNANIMATION_FILE}; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index ea71a3b2e17e..2d38bcf27e94 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -406,6 +406,9 @@ public class ActivityManagerService extends IActivityManager.Stub */ public static final int TOP_APP_PRIORITY_BOOST = -10; + private static final String SYSTEM_PROPERTY_DEVICE_PROVISIONED = + "persist.sys.device_provisioned"; + static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityManagerService" : TAG_AM; static final String TAG_BACKUP = TAG + POSTFIX_BACKUP; private static final String TAG_BROADCAST = TAG + POSTFIX_BROADCAST; @@ -8893,6 +8896,8 @@ public class ActivityManagerService extends IActivityManager.Stub mAtmInternal.updateTopComponentForFactoryTest(); + watchDeviceProvisioning(mContext); + retrieveSettings(); mUgmInternal.onSystemReady(); @@ -9008,6 +9013,32 @@ public class ActivityManagerService extends IActivityManager.Stub } } + private void watchDeviceProvisioning(Context context) { + // setting system property based on whether device is provisioned + + if (isDeviceProvisioned(context)) { + SystemProperties.set(SYSTEM_PROPERTY_DEVICE_PROVISIONED, "1"); + } else { + // watch for device provisioning change + context.getContentResolver().registerContentObserver( + Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), false, + new ContentObserver(new Handler(Looper.getMainLooper())) { + @Override + public void onChange(boolean selfChange) { + if (isDeviceProvisioned(context)) { + SystemProperties.set(SYSTEM_PROPERTY_DEVICE_PROVISIONED, "1"); + context.getContentResolver().unregisterContentObserver(this); + } + } + }); + } + } + + private boolean isDeviceProvisioned(Context context) { + return Settings.Global.getInt(context.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0) != 0; + } + private void startBroadcastObservers() { for (BroadcastQueue queue : mBroadcastQueues) { queue.start(mContext.getContentResolver()); |