1)修改开机默认壁纸

Android开机默认资源文件为:frameworks/base/core/res/res/values/config.xml

我们找到wallpaper行:

<string name="default_wallpaper_component">@null</string>

系统默认壁纸一般是一张静态图片,这里设置的静态图片为@null空,那么壁纸到底在什么地方设置的呢?

系统是在packages/apps/Launcher2/res 目录下根据配置文件找到静态壁纸进行设置的。

修改静态默认壁纸:

直接替换frameworks/base/core/res/res/drawable-nodpi/目录下的default_wallpaper.jpg文件即可。

最后编译出来的apk文件:out/target/product/xx/system/framework/framework-res.apk

修改动态桌面壁纸:

Android的动态壁纸不是GIF图片,而是一个应用程序apk。其本质是一个Service,这个Service能够被主界面Launcher加载,那么Launcher

又是如何识别这个包含动态壁纸的Service的apk的呢?

例如:packages/wallpapers/PhaseBeam/AndroidManifest.xml

<action Android:name="android.service.wallpaper.WallpaperService" />

这里系统是通过APK的这个action把其当作一个动态墙纸加载进LivePicker列表,然后用户就可以在LivePicker列表里选择自己喜欢的墙纸设置,进而将动态墙纸显示进Launcher的背后。

所以如果需要设置默认墙纸为动态墙纸的话,直接设置上面的frameworks/base/core/res/res/values/config.xml文件:

<string name="default_wallpaper_component">com.android.phasebeam/com.android.phasebeam.PhaseBeamWallpaper</string>

packages/wallpapers/PhaseBeam目录下的AndroidManifes.xml文件中:

这里com.android.phasebeam对应着包名字

com.android.phasebeam.PhaseBeamWallpaper 对应着Service的名字

2)软件设置壁纸:

设置壁纸的方法总结。

壁纸设置方法有三种

第一 通过WallpaperManager方法中的 setBitmap()

第二 通过WallpaperManager方法中的 setResource()

第三 通过ContextWrapper 类中提供的setWallpaper()方法

由于 Activity 继承ContextThemeWrapper ,ContextThemeWrapper继承 ContextWrapper.

1)通过实例化WallpaperManager 类调用单例类中setBitmap()方法。

Java代码
  1. WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
  2. Resources res = getResources();
  3. Bitmap bitmap=BitmapFactory.decodeResource(res, getResources().getIdentifier("wallpaper" + imagePosition,"drawable", "com.ch"));
  4. wallpaperManager.setBitmap(bitmap);
  5. Toast.makeText(this,"设置成功", Toast.LENGTH_SHORT).show();

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); Resources res = getResources(); Bitmap bitmap=BitmapFactory.decodeResource(res, getResources().getIdentifier("wallpaper" + imagePosition, "drawable", "com.ch")); wallpaperManager.setBitmap(bitmap);Toast.makeText(this, "设置成功", Toast.LENGTH_SHORT).show();

2)第二 通过WallpaperManager方法中的 setResource()

Java代码
  1. WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
  2. try {
  3. wallpaperManager.setResource(getResources().getIdentifier("wallpaper" + imagePosition,"drawable", "com.ch"));
  4. Toast.makeText(this,"设置成功", Toast.LENGTH_SHORT).show();
  5. } catch (IOException e) {
  6. e.printStackTrace();
  7. }

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);try {wallpaperManager.setResource(getResources().getIdentifier("wallpaper" + imagePosition, "drawable", "com.ch"));Toast.makeText(this, "设置成功", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();}
3)第三 通过ContextWrapper 类中提供的setWallpaper()方法 Java代码
  1. //重写ContextWrapper中setWallpaper()方法
  2. public void setWallpaper(InputStream paramInputStream)throws IOException {
  3. super.setWallpaper(paramInputStream);
  4. Toast.makeText(this,"设置成功", 1).show();
  5. }
  6. //设置壁纸代码
  7. Resources localResources = getBaseContext().getResources();
  8. InputStream localInputStream2 = localResources
  9. .openRawResource(getResources().getIdentifier(
  10. "wallpaper" + imagePosition, "drawable","com.ch"));
  11. try {
  12. setWallpaper(localInputStream2);
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. }

3)修改默认语言、时区、型号等:

out/target/product/xx/system/build.prop

ro.product.model=G-BOX

ro.product.local.language=zh

ro.product.local.region=BJ

persist.sys.timezone=Asiz/Shanghai

4)修改Android开机的时候应用Logo

源码:system/core/init/init.c

system/core/init/logo.c

init.c文件中:

static int console_init_action(int nargs, char **args){...if( load_565rle_image(INIT_IMAGE_FILE)) {// INIT_IMAGE_FILE = /initlogo.rlefd = open("dev/ttyp0", O_WRONLY);if(fd >= 0) {const char *msg;msg = "\n""\n""\n""A N D R O I D";write(fd, msg, strlen(msg));close(fd);}}reurn 0;}


这里首先会通过load_565rle_image()函数去打开/initlogo.rle文件,如果打开失败,则直接显示输出ANDROID这个”图像“。

所以这里我们有两种方法修改这个logo,一个是直接修改ANDROID字符串。另外一个是生成initlogo.rle文件

方法1:修改console_init_action函数中ANDROID字符

方法2:制作rle各式图片文件

1) 使用linux下ImageMagick自带命令convert进行raw各式转换

convert -depth 8 android_logo.png rgb:android_logo.raw

2) 进入out/host/linux-x86/bin目录下找到rgb2565可执行文件

3) 将需要转换的raw文件拷贝到同一目录,执行rgb2565 -rle <android_logo.raw> initlogo.rle生成initlogo.rle文件

4)再将initlogog.rle 拷贝到out/target/product/xx/root/initlogo.rle编译生成img镜像文件即可

5)修改Android动态logo

frameworks/base/core/res/assets/images目录下

android-logo-mask.png 和 android-log-shine.png

bootanimation开机动画:

源码frameworks/base/cmds/bootanimation/目录下

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android完全退出应用程序的方法
  5. Android(安卓)PreferenceActivity的介绍
  6. view-ListView学习
  7. Android欢迎界面的创建方法
  8. android 设置全屏的两种方法
  9. android light

随机推荐

  1. 【故障处理】DBCA建库报错CRS-2566 PRCR-
  2. C语言进阶(六)--自定义类型详解(结构体+枚
  3. C语言之漫谈指针(上)
  4. java jdbc数据库五种连接方式
  5. C语言编程入门训练(一)
  6. 【博客大赛】一篇文章了解CI/CD管道全流
  7. 【DB笔试面试244】在Oracle中,什么是Quote
  8. C语言之数据在内存中的存储
  9. C语言进阶(五)——字符串+内存函数的介绍
  10. 【DB笔试面试737】在Oracle中,将单实例备