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()方法。

  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()

  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()方法

  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.rle
fd = 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/目录下

[置顶] Android资源文件分析的更多相关文章

  1. [置顶] [Android源码分析]inquiry result引起的上层变化分析

    在上一篇文章中,我们详细分析了android是如何解析蓝牙反馈上来的搜索到的设备信息,本文将会继续分析这些信息到了上层之后是如何处理. 8.inquiry result引起的上层变化 我们知道inqu ...

  2. [置顶] Android安全机制分析

    Android系统是基于Linux内核开发的,因此,Android系统不仅保留和继承了Linux操作系统的安全机制,而且其系统架构的各个层次都有独特的安全特性[2] . 1. Linux内核层安全机制 ...

  3. [置顶] Android源码分析-点击事件派发机制

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857 概述 一直想写篇关于Android事件派发机制的文章,却一直没 ...

  4. Android资源文件简介

    Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源 ...

  5. 【转】关于Android资源文件中出现百分号的问题

    关于Android资源文件中出现百分号的问题 分类: Android JAVA2014-08-01 16:53 1345人阅读 评论(0) 收藏 举报 ANDROID格式化资源文件   目录(?)[+ ...

  6. ANDROID资源文件【转】

    1.  资源包括:文本字符串.图像和图标.音频文件.视频和其他应用程序使用的组件. 2.  在Android工程中,Android资源文件是同Java类文件分开存储的,大多数常见的资源类型存储在XML ...

  7. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

  8. Android 资源文件命名与使用

    [推荐]资源文件需带模块前缀 [推荐]layout 文件的命名方式 Activity 的 layout 以 module_activity 开头 Fragment 的 layout 以 module_ ...

  9. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

随机推荐

  1. STL模板_概念

    模板和STL一.模板的背景知识1.针对不同的类型定义不同函数版本.2.借助参数宏摆脱类型的限制,同时也因为失去的类型检查而引 入风险.3.借助于编译预处理器根据函数宏框架,扩展为针对不同类型的 具体函 ...

  2. php-fpm 开启错误日志

    #php-fpm.conf #open catch_workers_output = yes #php.ini log_errors = On error_log=/data/logs/php-fpm ...

  3. C学习之结构体

    结构体(struct) 结构体是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合,结构体中可以使用不同的数据类型. 1. 结构体说明和结构体变量定义 在Turbo C中, 结构体也是一种数据 ...

  4. 通过class类来实例化其他类的对象(使用有参构造函数)

    import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; class Pers ...

  5. poj 1966 Cable TV Network 顶点连通度

    题目链接 给一个图, n个点m条边, 求至少去掉多少个点可以使得图不再联通.随便指定一个点为源点, 枚举其他点为汇点的情况, 跑网络流, 求其中最小的情况. 如果最后ans为inf, 说明是一个完全图 ...

  6. 【LeetCode题意分析&解答】35. Search Insert Position

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  7. cocos2dx 坐标和锚点

    cocos2dx中使用opengl坐标系,左下角为坐标原点,在大部分情况下,都是使用这种坐标系的. 当我们创建了一个渲染对象到窗口后,那么这个对象本身也是也是有自己的坐标系的,这种坐标系是节点自己的坐 ...

  8. Linux特殊权限:SUID、SGID、SBIT

    SUID:      只对二进制程序有效      执行者对于程序需要有x权限      在程序运行过程中,执行者拥有程序拥有者的权限      例如:      普通用户执行passwd命令.   ...

  9. ADO.NET详解----核心对象的使用

    一.Connection对象 指定某个具体数据源以及提供登陆方式及用户名与密码. Connection对象的主要成员: 1.ConnectionString属性:连接字符串,指定要操作的数据库以及登录 ...

  10. ##DAY1 UI、frame、center、bounds、UIVIew

    ##DAY1 UI.frame.center.bounds.UIVIew #pragma mark ———————UI——————————— UI的本意是用户界面,是英文User和 Interface ...