Android MTK平臺預置多張靜態壁紙

執行?adb shell pm list package -f wallpaper? 命令,查看壁紙應用路徑:

/product/app/MtkWallpaperPicker/MtkWallpaperPicker.apk=com.android.wallpaperpicker

結果中帶 Mtk 就可確定MTK有對應用進行重構。其源碼路徑在

vendor/mediatek/proprietary/packages/apps/WallpaperPicker

查看?WallpaperPickerActivity.java?

這里加載了多種不同來源的壁紙資源。

  protected void init() {setContentView(R.layout.wallpaper_picker);mCropView = (CropView) findViewById(R.id.cropView);mCropView.setVisibility(View.INVISIBLE);mProgressView = findViewById(R.id.loading);mWallpaperScrollContainer = (HorizontalScrollView) findViewById(R.id.wallpaper_scroll_container);mWallpaperStrip = findViewById(R.id.wallpaper_strip);mCropView.setTouchCallback(new ToggleOnTapCallback(mWallpaperStrip));mWallpaperParallaxOffset = getIntent().getFloatExtra(WallpaperUtils.EXTRA_WALLPAPER_OFFSET, 0);mWallpapersView = (LinearLayout) findViewById(R.id.wallpaper_list);// Populate the saved wallpapersmSavedImages = new SavedWallpaperImages(this);populateWallpapers(mWallpapersView, mSavedImages.loadThumbnailsAndImageIdList(), true);// Populate the built-in wallpapers.  這里是加載預置壁紙的地方。ArrayList<WallpaperTileInfo> wallpapers = findBundledWallpapers();populateWallpapers(mWallpapersView, wallpapers, false);// Load live wallpapers asynchronouslynew LiveWallpaperInfo.LoaderTask(this) {@Overrideprotected void onPostExecute(List<LiveWallpaperInfo> result) {populateWallpapers((LinearLayout) findViewById(R.id.live_wallpaper_list),result, false);initializeScrollForRtl();updateTileIndices();}}.execute();// Populate the third-party wallpaper pickerspopulateWallpapers((LinearLayout) findViewById(R.id.third_party_wallpaper_list),ThirdPartyWallpaperInfo.getAll(this), false /* addLongPressHandler */);// Add a tile for the GalleryLinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list);masterWallpaperList.addView(createTileView(masterWallpaperList, new PickImageInfo(), false), 0);// Select the first item; wait for a layout pass so that we initialize the dimensions of// cropView or the defaultWallpaperView firstmCropView.addOnLayoutChangeListener(new OnLayoutChangeListener() {@Overridepublic void onLayoutChange(View v, int left, int top, int right, int bottom,int oldLeft, int oldTop, int oldRight, int oldBottom) {if ((right - left) > 0 && (bottom - top) > 0) {if (mSelectedIndex >= 0 && mSelectedIndex < mWallpapersView.getChildCount()) {onClick(mWallpapersView.getChildAt(mSelectedIndex));setSystemWallpaperVisiblity(false);}v.removeOnLayoutChangeListener(this);}}});

    public ArrayList<WallpaperTileInfo> findBundledWallpapers() {final ArrayList<WallpaperTileInfo> bundled = new ArrayList<WallpaperTileInfo>(24);//這里是根據xml中的配置加載資源,我們改這里。Pair<ApplicationInfo, Integer> r = getWallpaperArrayResourceId();if (r != null) {try {Resources wallpaperRes = getPackageManager().getResourcesForApplication(r.first);addWallpapers(bundled, wallpaperRes, r.first.packageName, r.second);} catch (PackageManager.NameNotFoundException e) {}}// Add an entry for the default wallpaper (stored in system resources)
//這里是默認的那張WallpaperTileInfo defaultWallpaperInfo = DefaultWallpaperInfo.get(this);if (defaultWallpaperInfo != null) {bundled.add(0, defaultWallpaperInfo);}return bundled;}

參考:android WallpaperPicker7.0源碼分析_com.android.wallpaperpicker-CSDN博客

  public Pair<ApplicationInfo, Integer> getWallpaperArrayResourceId() {return new Pair<>(getApplicationInfo(), R.array.wallpapers);}

查詢xml中wallpapers 配置。

? <string-array name="wallpapers" translatable="false">

<item>wp1</item>

? ? ? ? </string-array>

可以在此處添加多張圖片

把圖片放到?drawable 下,這里要注意需要同時配置*_small.jpg圖片;

如?wp1.jpg,?wp1_small.jpg.

編譯?MtkWallpaperPicker 模塊,然后push到機器中,殺死wallpaper進程即可。


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92207.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Django的個人博客系統開發(開題報告)

畢業論文(設計)開題報告論文(設計)題目 基于Django的個人博客系統開發 1.選題目的和意義 隨著云服務器的普及化以及編程培訓機構大量涌現,學習網站開發技術以及編程技術,通過租用個人云服務器部署代碼,構建個人博客網站,創建學習文檔,記錄學習過程,與他人交流技術學…

C++ 分配內存釋放內存

C 分配內存釋放內存一、new、delete、malloc和free最簡單的分配內存自定義對象分配和釋放內存二、new、delete與虛析構的問題三、一維、二維、多維數值創建和釋放一維二維多維四、new的缺點以及連續內存的優點一、new、delete、malloc和free 最簡單的分配內存 int* p_m (int*…

奧比中光深度相機開發

一、開發環境準備 1.1 硬件要求 奧比中光深度相機&#xff08;如Astra Pro、Gemini等&#xff09;USB 3.0接口&#xff08;確保數據傳輸穩定&#xff09;支持OpenGL的顯卡&#xff08;可選&#xff0c;用于點云可視化&#xff09; 1.2 軟件環境 SDK安裝&#xff1a; 從奧比…

標題 “Python 網絡爬蟲 —— selenium庫驅動瀏覽器

一、Selenium 庫核心認知 Selenium 庫是 Web 應用程序測試與自動化操作的利器 &#xff0c;能驅動瀏覽器&#xff08;如 Edge、Firefox 等&#xff09;執行點擊、輸入、打開、驗證等操作 。與 Requests 庫差異顯著&#xff1a;Requests 庫僅能獲取網頁原始代碼&#xff0c;而 …

從實踐出發--探究C/C++空類的大小,真的是1嗎?

文章目錄測試代碼VS2022正常運行編譯失敗GCC總結Author: NemaleSu Data: 2025/07/21 測試環境&#xff1a; Win11&#xff1a;VS2022Ubuntu22.04&#xff1a;gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 相信眾多cpper聽過太多書籍、視頻、文檔、博客等資料&#xff0c;說C/C…

數據結構自學Day11-- 排序算法

一、排序算法的概念排序&#xff08;Sorting&#xff09;是指&#xff1a;將一組“無序”的數據&#xff0c;按照某種“順序規則”排列成“有序”的過程。1、按排序順序分類&#xff1a;升序&#xff1a;從小到大排列&#xff0c;如 1, 3, 5, 7, 9降序&#xff1a;從大到小排列…

電子元器件—三極管(一篇文章搞懂電路中的三極管)(筆記)(面試考試必備知識點)

三極管的定義及工作原理1. 定義三極管&#xff08;Transistor&#xff09;是一種具有三層半導體材料&#xff08;P-N-P 或 N-P-N&#xff09;構成的半導體器件&#xff0c;用于信號放大、開關控制和信號調制等應用。三極管有三個引腳&#xff1a;發射極&#xff08;Emitter&…

數據結構之克魯斯卡爾算法

前言&#xff1a;和Prim算法一樣&#xff0c;Kruskal 算法也是用來生成最小生成樹的&#xff0c;這篇文章來學習一下Kruskal算法的實現 一、實現流程 初始化的時候&#xff0c;將所有的邊用一個數組存儲&#xff0c;并且按權值從小到大進行排序&#xff0c;每次選一個權值最小的…

MongoDB 查詢時區問題

MongoDB默認時區是UTC&#xff0c;比北京時區晚八小時&#xff0c;北京時間UTC8h。 // 北京時間的 2024-10-01 08:00:00 // (>) 大于 - $gt // (<) 小于 - $lt // (>) 大于等于 - $gte // (< ) 小于等于 - $lte// Z代表UTC時區1、{"gmtCreate":{"$…

Windows VS2019 編譯 Apache Thrift 0.15.0

隨著微服務架構的普及,高效的跨語言遠程過程調用(RPC) 成為了構建分布式系統的重要基礎。Apache Thrift 是 Facebook 開源的一個輕量級、高性能的 RPC 框架,它允許開發者通過一個通用的接口定義語言(IDL)來定義服務接口和數據結構,并自動生成多種語言的客戶端和服務端代…

搭建種草商城框架指南

一、引言在當今電商市場&#xff0c;種草商城以其獨特的社交化購物模式受到越來越多用戶的喜愛。搭建一個功能完善、體驗良好的種草商城框架&#xff0c;需要綜合考慮前端界面、后端服務、數據庫設計等多個方面。本文將為你詳細介紹搭建種草商城框架的關鍵要點和技術選型。二、…

docker--掛載

設置容器的掛載 需要注意 掛載行為會覆蓋容器目標目錄的原有內容(未驗證)。 查看容器的掛載情況 在容器外部查看: docker inspect <容器名或容器ID> | grep -A n "Mounts" -A n 的含義 -A 是 --after-context 的縮寫,表示顯示匹配行及其后 n 行。 "Mo…

以Streamable HTTP方式訪問mcp server的過程

一、mcp server 部署 使用fastmcp框架 部署 mcp server&#xff0c; 以下是源代碼 # 引入 fastmcp 依賴包 from fastmcp import FastMCP# 新建fastmcp實例&#xff0c; 名字叫做 weather mcp FastMCP("weather")mcp.tool(name"weather", tags{"weath…

二次元 IP 虛擬數字人宣傳:漫畫角色動態直播與衍生周邊預售聯動

當漫畫角色從靜態畫稿中走出&#xff0c;以動態直播的形式與粉絲實時互動&#xff0c;再順勢開啟衍生周邊預售 —— 虛擬數字人技術正重塑二次元 IP 的宣傳邏輯。這種 “動態直播 周邊預售” 的聯動模式&#xff0c;不僅打破了次元壁&#xff0c;更讓 IP 熱度高效轉化為商業價…

如何在服務器上獲取Linux目錄大小

目前我在管理一臺hostease的服務器時遇到服務器磁盤空間不足的情況。隨著在系統中添加更多文件&#xff0c;這些系統文件目錄也變得越來越大。過大的目錄也消耗了系統資源&#xff0c;導致系統運行緩慢。后來我通過下列的方法對服務器上的磁盤空間使用進行了逐一檢查。在這篇綜…

來伊份養饞記社區零售 4.0 上海首店落滬:重構 “家門口” 的生活服務生態

7 月 19 日&#xff0c;來伊份與養饞記戰略合作的首個 “社區零售 4.0” 門店在上海松江泗涇鎮泗寶路正式開業。這不僅是雙方自今年 1 月達成戰略合作后的實質性落地&#xff0c;更是 3 月 “社區生活新生態” 構想的首次規模化實踐&#xff0c;標志著零食行業巨頭與社區零售新…

從C++開始的編程生活(3)——引用類型、內聯inline和nullptr

前言 本系列文章承接C語言的學習&#xff0c;需要有C語言的基礎才能學會哦~ 第3篇主要講的是有關于C的引用類型、內聯inline和nullptr。 C才起步&#xff0c;都很簡單呢&#xff01; 目錄 前言 引用類型 基本語法 特性 應用 const引用 基本語法 引用與指針的關系 內聯…

makefile-- 其他函數

fuctionsjoin?$(join <list1>,<list2>)連接函數把list2 中單詞對應的添加到list1 的后面若list1 的單詞個數> list2 &#xff0c;多出的list1 保持不變若list2 的單詞個數> list21&#xff0c;多出的list2 添加到list1 后面foreach?$(foreach <var>…

【unity實戰】使用unity的Navigation+LineRenderer實現一個3D人物尋路提前指示預測移動軌跡的效果,并可以適配不同的地形

文章目錄 前言 實戰 1、實現要點 1.1 NavMesh.CalculatePath方法計算兩個點之間的導航路徑 1.2 尋找投射的地面點 2、代碼實現如下 3、烘培地面導航網格 4、添加導航玩家代理,并掛載前面的腳本 5、創建Line Renderer,并放在角色下面作為子物體 6、運行游戲查看效果 專欄推薦 …

寶塔申請證書錯誤,提示 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘

遇到"module OpenSSL.crypto has no attribute sign"錯誤時&#xff0c;通常是由于pyOpenSSL版本兼容性問題導致的?。以下是解決方案&#xff1a;通過SSH連接到服務器&#xff0c;執行以下命令安裝指定版本的pyOpenSSL&#xff1a;btpip install pyOpenSSL24.2.1-U然…