Android N預設鎖屏桌布的實現
阿新 • • 發佈:2019-02-18
從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即可。