修改Android的开关机铃声、Android开关机画面与动画(附代码流程)

本文详细介绍了如何修改Android设备的开关机铃声和画面。包括开机画面的三个步骤:bootloader画面、Android系统init时的开机画面和最后的开机动画。重点讲解了如何转换和替换initlogo.rle文件,以及如何创建和配置bootanimation.zip以实现自定义开机动画。
摘要由CSDN通过智能技术生成

/********************************************************************************************
 * author:conowen@大钟                                                                                                                          
 * E-mail:conowen@hotmail.com                                                                                                             
 * http://blog.csdn.net/conowen                                                                                                              
 * 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。      

 ********************************************************************************************/


1、修改Android的开关机铃声


待续……


2、修改Android开关机画面


开机画面包括三个过程

2.1、bootloader的开机画面

待续……


2.2、Android系统init时的开机画面








2.2.1、Android系统init时,装载initlogo.rle的简单流程。

Androidinit时,会读取 /initlogo.rle文件,如果读取成功,就会在/dev/graphics/fb0显示initlogo.rle;如果读取失败,打开/dev/tty0,输出文本“A N D R I O D”字样。

相关代码:

/system/core/init/init.c
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c 


@/system/core/init/init.c

static int console_init_action(int nargs, char **args)
{
    int fd;
    char tmp[PROP_VALUE_MAX];

    if (console[0]) {
        snprintf(tmp, sizeof(tmp), "/dev/%s", console);
        console_name = strdup(tmp);
    }

    fd = open(console_name, O_RDWR);
    if (fd >= 0)
        have_console = 1;
    close(fd);

    if( load_565rle_image(INIT_IMAGE_FILE) ) {//在init.h文件定义
        

   //#define INIT_IMAGE_FILE    "/initlogo.rle"


        fd = open("/dev/tty0", O_WRONLY);         
        if (fd >= 0) {//如果找不到initlog.rle图片,则打开TEXT模式,
            const char *msg;
                msg = "\n"
            "\n"
            "\n"
            "\n"
            "\n"
            "\n"
            "\n"  // console is 40 cols x 30 lines
            "\n"
            "\n"
            "\n"
            "\n"
            "\n"
            "\n"
            "\n"
            "             A N D R O I D ";//打印ANDROID字样的问题。
            write(fd, msg, strlen(msg));
            close(fd);
        }
    }
    return 0;
}


@/system/core/init/logo.c

static int fb_open(struct FB *fb)
{
    fb->fd = open("/dev/graphics/fb0", O_RDWR);//会在/dev/graphics/fb0显示initlogo.rle
    if (fb->fd < 0)
        return -1;

    if (ioctl(fb->fd, FBIOGET_FSCREENINFO, &fb->fi) < 0)
        goto fail;
    if (ioctl(fb->fd, FBIOGET_VSCREENINFO, &fb->vi) < 0)
        goto fail;

    fb->bits = mmap(0, fb_size(fb), PROT_READ | PROT_WRITE, 
                    MAP_SHARED, fb->fd, 0);
    if (fb->bits == MAP_FAILED)
        goto fail;

    return 0;

fail:
    close(fb-&
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值