安卓A15系统实现修改锁屏界面默认壁纸功能

news2025/7/15 17:40:14

最近遇到一个A15系统项目,客户要求修改锁屏界面的默认壁纸,客户提供了一张壁纸图片,但是从A15系统的源代码查看时才知道谷歌已经去掉了相关的代码,已经不支持了,A13和A14系统好像是支持的,A15系统的WallpaperManager.java有明显不支持的提示如下:

 所以必须采用其他的方法来实现,具体修改如下:

 1.将客户给的锁屏壁纸图片拷贝到源代码中,然后添加一行拷贝代码将图片拷贝到system/media/目录下即可,如下:

2. 到packages/apps/Settings/src/com/android/settings/SettingsInitialize.java这个类文件中去修改代码,为什么选择在这个文件去修改呢?是因为这个SettingsInitialize.java文件是机器第一次开机进系统时会执行一次,以后的重启或者开机都不会执行了,就不用去添加系统属性标记位去判断是否是第一次开机进系统,具体修改如下:

 

diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 4887e26940c..0b04660c95b 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -46,6 +46,16 @@ import com.android.settingslib.utils.ThreadUtils;
 import java.util.ArrayList;
 import java.util.List;
 
+import android.app.WallpaperManager;
+import android.graphics.Bitmap;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import android.os.Handler;
+import android.content.Context;
+import android.graphics.BitmapFactory;
+import java.io.IOException;
+
+
 /**
  * Listens to {@link Intent.ACTION_PRE_BOOT_COMPLETED} and {@link Intent.ACTION_USER_INITIALIZE}
  * performs setup steps for a managed profile (disables the launcher icon of the Settings app,
@@ -58,6 +68,7 @@ public class SettingsInitialize extends BroadcastReceiver {
     private static final String PRIMARY_PROFILE_SETTING =
             "com.android.settings.PRIMARY_PROFILE_CONTROLLED";
     private static final String WEBVIEW_IMPLEMENTATION_ACTIVITY = ".WebViewImplementation";
+    private Context mContext;
 
     @Override
     public void onReceive(Context context, Intent broadcast) {
@@ -69,8 +80,41 @@ public class SettingsInitialize extends BroadcastReceiver {
         webviewSettingSetup(context, pm, userInfo);
         ThreadUtils.postOnBackgroundThread(() -> refreshExistingShortcuts(context));
         enableTwoPaneDeepLinkActivityIfNecessary(pm, context);
+
+        mContext = context;
+        mLockScreenHandler.removeCallbacks(mLockScreenRunnable);
+        mLockScreenHandler.postDelayed(mLockScreenRunnable,1);
     }
 
+    private Runnable mLockScreenRunnable = new Runnable() {
+        @Override
+        public void run() {
+           setLockScreenWallpaper();
+        }
+    };
+
+    private Handler mLockScreenHandler = new Handler();
+
+    private void setLockScreenWallpaper() {
+        WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext);
+        int FLAG_SET_LOCK = 1 << 1;
+        try {
+            //InputStream inputStream = new InputStream(new File("system/media/default_lock_wallpaper.png"));
+            //Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
+            Bitmap bitmap = BitmapFactory.decodeFile("system/media/default_lock_wallpaper.png");
+            //bitmap.eraseColor(0xFFBB86FC); //设置成紫色,有对应图片的话可以设置成对应图片
+            ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048);
+            if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, tmpOut)) {
+                byte[] outByteArray = tmpOut.toByteArray();
+                wallpaperManager.setStream(new ByteArrayInputStream(outByteArray), null,
+                                true, FLAG_SET_LOCK);
+            }
+        } catch (IOException e) {
+
+		}
+		
+     }
+
     private void managedProfileSetup(Context context, final PackageManager pm, Intent broadcast,
             UserInfo userInfo) {
         if (userInfo == null || !userInfo.isManagedProfile()) {

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2376712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IT系统的基础设施:流量治理、服务治理、资源治理,还有数据治理。

文章目录 引言I IT系统的基础设施流量治理、服务治理、资源治理,还有数据治理。开发语言的选择数据治理(监控系统):整体运维的数据其他II 基础知识的重要性第一,知道原理第二,当遇到一些比较难解的问题时,基础知识就会派上用场。例子III 大公司和小公司的权衡对比大公司…

使用 TypeScript + dhtmlx-gantt 在 Next.js 中实现

1. 安装依赖&#xff08;确保已安装&#xff09; npm install dhtmlx-gantt2. 创建 pages/gantt.tsx use clientimport { useRef, useEffect } from react import { gantt } from dhtmlx-gantt import dhtmlx-gantt/codebase/dhtmlxgantt.cssinterface Task {id: number | st…

解锁健康生活:现代养生实用方案

早上被闹钟惊醒后匆忙灌下咖啡&#xff0c;中午用外卖应付一餐&#xff0c;深夜刷着手机迟迟不肯入睡 —— 这样的生活模式&#xff0c;正在不知不觉侵蚀我们的健康。科学养生并非遥不可及的目标&#xff0c;只需从生活细节入手&#xff0c;就能逐步改善身体状态。​ 饮食管理…

mongodb处理时区转换问题

1. 程序查询直接使用&#xff08;java&#xff09;Date即可, 因为直接支持 2. 若方便查看日期需要进行格式和时区转换 db.task.aggregate([{ $match: {userId: 113633}},{ $project: {userId: 1,endTime: 1,formattedDate: {$dateToString: {format: "%Y-%m-%d %H:%M:%S&…

专项智能练习(定义判断)_DA_01

1. 单选题 热传导是介质内无宏观运动时的传热现象&#xff0c;其在固体、液体和气体中均可发生。但严格而言&#xff0c;只有在固体中才是纯粹的热传导&#xff0c;在流体&#xff08;泛指液体和气体&#xff09;中又是另外一种情况&#xff0c;流体即使处于静止状态&#xff0…

广度和深度优先搜索(BFS和DFS)

1. 广度和深度优先搜索&#xff08;BFS和DFS&#xff09; 1.1. Python实现BFS和DFS from collections import dequeclass Graph:"""无向图类&#xff0c;支持添加边&#xff0c;并实现了 BFS&#xff08;广度优先搜索&#xff09;和 DFS&#xff08;深度优先搜…

【计算机视觉】OpenCV实战项目:Text-Extraction-Table-Image:基于OpenCV与OCR的表格图像文本提取系统深度解析

Text-Extraction-Table-Image&#xff1a;基于OpenCV与OCR的表格图像文本提取系统深度解析 1. 项目概述2. 技术原理与算法设计2.1 图像预处理流水线2.2 表格结构检测算法2.3 OCR优化策略 3. 实战部署指南3.1 环境配置3.2 核心代码解析3.3 执行流程示例 4. 常见问题与解决方案4.…

嵌入式Linux Qt开发:1、搭建基于ubuntu18.04的Qt开发环境及测试(解决Qt creator输入法问题)

一、前言 基本在我职业生涯开始时就已经在使用Qt进行一些上位机开发了&#xff0c;后续也有一些嵌入式设备用Qt开发&#xff0c;但是一直没有完整和系列的总结&#xff0c;包括C也是&#xff0c;这里慢慢补上一些总结&#xff0c;防止很多经验总结和学习过程又遗忘了&#xff…

element-ui的el-cascader增加全选按钮实现(附源码)

最近遇到了在级联选择器上添加全选框的需求 &#xff0c;但是项目使用的是Vue2 Element UI的架构&#xff0c;而我们都知道Element UI提供的级联选择器el-cascader是不支持全选框的&#xff0c;而我又没有在网上找到适合我项目的实现&#xff0c;索性自己实现一个组件&#xf…

Scratch游戏 | 企鹅大乱斗

有没有过无聊到抓狂的时刻&#xff1f;试试这款 企鹅大乱斗 吧&#xff01;超简单的玩法&#xff0c;让你瞬间告别无聊&#xff01; &#x1f3ae; 玩法超简单 等待屏幕出现 ”Go!” 疯狂点击&#xff0c;疯狂拍打企鹅&#xff01; &#x1f4a5; 游戏特色 解压神器&#x…

Uniapp中小程序调用腾讯地图(获取定位地址)

1、先配置权限&#xff1a; 这是上图的代码&#xff1a; "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } } 第二步&#xff1a;写代码&#xff1a; //下面是uniapp的模版代码 主…

2025全网首发:ComfyUI整合GPT-Image-1完全指南 - 8步实现AI图像创作革命

ComfyUI整合GPT-Image-1完全指南&#xff1a;8步实现AI图像创作革命【2025最新】 OpenAI最新发布的GPT-Image-1模型&#xff08;也就是ChatGPT-4o背后的图像生成技术&#xff09;已经通过API开放使用&#xff0c;而令人惊喜的是&#xff0c;ComfyUI已经第一时间提供了完整支持&…

工业4.0神经嫁接术:ethernet ip转profinet协议通信步骤图解

在现代工业自动化领域&#xff0c;不同品牌的设备和协议之间的兼容性问题一直是个挑战。我们的包装线项目就遇到了这样的难题&#xff1a;需要将Rockwell Allen-Bradley的EtherNet/IP伺服系统与西门子PLC的PROFINET主站进行无缝对接。为了解决这一问题&#xff0c;我们采用了et…

【Linux】动静态库的使用

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲Linux——动静态库的使用 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C学习笔记&#xff0c;C语言入门基础&…

Java基础(网络编程)

一、概述 目的&#xff1a;网络通信&#xff1a; 1、设备和设备 2、进程和进程 1&#xff09;不同设备之间 2&#xff09;本地设备之间 需要解决的问题&#xff1a; 如何准确地发送到对方的主机 - IP地址 - 唯一的定位网络中的一台主机 如何准确的发送到对方主机的进程 -…

计量——异方差的检验及其修正

目录 1.异方差的检验 1 BP检验 2white检验 2.异方差的修正 1.异方差的检验 1 BP检验 选择检验方法&#xff1a;BP BP检验的实际步骤&#xff08;非机器&#xff09;&#xff1a; 1.y对所有x进行回归&#xff0c;得到残差u。计算残差的平方u^2 2.u^2对所有x进行回归&#…

学习C++的好书:C++编程之禅

历时四个月&#xff0c;把这本书看了一遍&#xff0c;受益匪浅&#xff0c;推荐给大家&#xff0c;系统的学习一遍C。

OpenCV进阶操作:人脸检测、微笑检测

文章目录 前言一、OpenCV如何实现人脸检测1、haar特征2、级联分类器3、级联分类器的使用 二、人脸检测、微笑检测 案例实现1、预处理2、加载分类器3、标注人脸4、运行结果&#xff1a;4、微笑检测 总结 前言 要实现人脸识别首先要判断当前图像中是否出现了人脸&#xff0c;这就…

车载诊断进阶篇 --- 车载诊断概念

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

制作一款打飞机游戏49:敌人抖动

蛇形敌人 如果你玩过一些射击游戏&#xff08;shmups&#xff09;&#xff0c;尤其是老式的射击游戏&#xff0c;你可能会遇到一种敌人&#xff0c;它们像蛇一样移动。我想在我们的游戏中实现这种效果。这种动态的感觉非常棒&#xff0c;我们完全有能力通过动画来实现它。 方…