diff --git a/res/layout/fallback_home_finishing_boot.xml b/res/layout/fallback_home_finishing_boot.xml new file mode 100644 index 00000000000..4cc526f68a7 --- /dev/null +++ b/res/layout/fallback_home_finishing_boot.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/res/values/themes.xml b/res/values/themes.xml index d1c48900a48..e8611135a50 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -281,7 +281,7 @@ ?android:attr/colorAccent - + diff --git a/src/com/android/settings/FallbackHome.java b/src/com/android/settings/FallbackHome.java index 158f6726c46..f2e8152ae22 100644 --- a/src/com/android/settings/FallbackHome.java +++ b/src/com/android/settings/FallbackHome.java @@ -17,6 +17,7 @@ package com.android.settings; import android.app.Activity; +import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -25,15 +26,37 @@ import android.content.pm.ResolveInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.PowerManager; +import android.os.SystemClock; import android.os.UserManager; import android.provider.Settings; import android.util.Log; import android.view.View; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; +import android.view.animation.AnimationUtils; import java.util.Objects; public class FallbackHome extends Activity { private static final String TAG = "FallbackHome"; + private static final int PROGRESS_TIMEOUT = 2000; + + private boolean mProvisioned; + + private final Runnable mProgressTimeoutRunnable = () -> { + View v = getLayoutInflater().inflate( + R.layout.fallback_home_finishing_boot, null /* root */); + setContentView(v); + v.setAlpha(0f); + v.animate() + .alpha(1f) + .setDuration(500) + .setInterpolator(AnimationUtils.loadInterpolator( + this, android.R.interpolator.fast_out_slow_in)) + .start(); + getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON); + }; @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,11 +64,15 @@ public class FallbackHome extends Activity { // Set ourselves totally black before the device is provisioned so that // we don't flash the wallpaper before SUW - if (Settings.Global.getInt(getContentResolver(), - Settings.Global.DEVICE_PROVISIONED, 0) == 0) { + mProvisioned = Settings.Global.getInt(getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0) != 0; + if (!mProvisioned) { setTheme(R.style.FallbackHome_SetupWizard); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); + } else { + getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); } registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED)); @@ -53,6 +80,19 @@ public class FallbackHome extends Activity { } @Override + protected void onResume() { + super.onResume(); + if (mProvisioned) { + mHandler.postDelayed(mProgressTimeoutRunnable, PROGRESS_TIMEOUT); + } + } + + @Override + protected void onPause() { + super.onPause(); + mHandler.removeCallbacks(mProgressTimeoutRunnable); + } + protected void onDestroy() { super.onDestroy(); unregisterReceiver(mReceiver); @@ -75,6 +115,8 @@ public class FallbackHome extends Activity { mHandler.sendEmptyMessageDelayed(0, 500); } else { Log.d(TAG, "User unlocked and real home found; let's go!"); + getSystemService(PowerManager.class).userActivity( + SystemClock.uptimeMillis(), false); finish(); } }