Android培训班(12)

来源:互联网 发布:电脑软件管家排行榜 编辑:程序博客网 时间:2024/04/28 19:10

#059 

#060      get_hardware_name();

这段代码是获取当前android系统运行的硬件信息,比如硬件的CPU名称。主要从/proc/cpuinfo里读到相关的信息。

 

 

#061      snprintf(tmp, sizeof(tmp),"/init.%s.rc", hardware);

#062      parse_config_file(tmp);

这段代码是从前面获取到的硬件名称,然后以硬件的名称(/init.硬件名称.rc)来获取相应硬件的配置文件,并且把配置文件参数加载到链表里。

 

 

#063 

#064      action_for_each_trigger("early-init",action_add_queue_tail);

#065      drain_action_queue();

这段代码是先把有early-init标识的命令提前添加到一个命令队列,以便函数drain_action_queue一个一个命令地执行配置文件里的函数,这样可以在不同的配置文件里,只要标明是最先执行的函数,就可以优先地运行。

 

#066 

#067      INFO("device init/n");

#068      device_fd = device_init();

这段代码是遍历为/sys,添加设备事件响应,创建设备节点。

 

 

#069 

#070      property_init();

这段代码是进行属性初始化。每个属性都有一个名称和值,它们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。在系统初始化时,Android将分配一个共享内存区来存储的属性,这里主要是从/default.prop属性文件读取属性。这个有点像Windows下的注册表的作用。

 

 

#071 

#072      // only listen for keychords ifro.debuggable is true

#073      debuggable =property_get("ro.debuggable");

#074      if (debuggable &&!strcmp(debuggable, "1")) {

#075          keychord_fd = open_keychord();

#076      }

这段代码是从属性里获取调试标志,如果是可以调试,就打开组合按键输入驱动程序。

 

 

 

#077 

#078      if (console[0]) {

#079          snprintf(tmp, sizeof(tmp),"/dev/%s", console);

#080          console_name = strdup(tmp);

#081      }

#082 

#083      fd = open(console_name, O_RDWR);

#084      if(fd >= 0)

#085          have_console = 1;

#086      close(fd);

这段代码是判断是否有控制台,如果没有,就尝试是否是可以打缺省的控制台。

 

 

#087 

#088      if( load_565rle_image(INIT_IMAGE_FILE) ){

#089      fd = open("/dev/tty0",O_WRONLY);

#090      if (fd >= 0) {

#091          const char *msg;

#092              msg = "/n"

#093          "/n"

#094          "/n"

#095          "/n"

#096          "/n"

#097          "/n"

#098          "/n"  // console is 40 cols x 30 lines

#099          "/n"

#100          "/n"

#101          "/n"

#102          "/n"

#103          "/n"

#104          "/n"

#105          "/n"

#106          "             A N D R O I D ";

#107          write(fd, msg, strlen(msg));

#108          close(fd);

#109      }

#110      }

这段代码是先调用load_565rle_image函数来尝试加载定制的显示的LOGO图片,如果不成功,就直接在屏幕上显示字符串android。通过这里可以定制不同厂家的LOGO图片显示,以便在系统初始化时,进行更人性化的等待,更加漂亮个性。