1. 程式人生 > >Android N預設鎖屏桌布的實現

Android N預設鎖屏桌布的實現

從Android N開始,原生系統增加了鎖屏桌布開關:

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

    /** If true, the lockscreen will show a distinct wallpaper */
    private static final boolean ENABLE_LOCKSCREEN_WALLPAPER = true;

要設定出廠預設鎖屏桌布,修改如下程式碼即可實現:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java

    public Bitmap getBitmap() {
        if (mCached) {
            return mCache;
        }
        if (!mWallpaperManager.isWallpaperSupported()) {
            mCached = true;
            mCache = null;
            return null;
        }

        LoaderResult result = loadBitmap(mCurrentUserId, mSelectedUser);
        if
(result.success) { mCached = true; mUpdateMonitor.setHasLockscreenWallpaper(result.bitmap != null); mCache = result.bitmap; } //add begin : 第一次開機載入失敗,嘗試讀取系統資源default_lock_wallpaper.jpg,然後寫入到鎖屏桌布檔案中,並重新loadBitmap if (mCache == null) { try
{ mWallpaperManager.setStream( mContext.getResources().openRawResource(com.android.internal.R.drawable.default_lock_wallpaper), null, true, WallpaperManager.FLAG_LOCK); result = loadBitmap(mCurrentUserId, mSelectedUser); if (result.success) { mCached = true; mUpdateMonitor.setHasLockscreenWallpaper(result.bitmap != null); mCache = result.bitmap; } } catch (IOException e) { Log.e(TAG, "can not set default lockscreen wallpaper"); } } //add end return mCache; }

然後放入系統資源圖片default_lock_wallpaper即可。