#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 if ro.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图片显示,以便在系统初始化时,进行更人性化的等待,更加漂亮个性。

Android培训班(12)相关推荐

  1. 一起Talk Android吧(第三百九十回:关于Android版本12适配蓝牙权限的问题)

    文章目录 1 背景知识 第一阶段 第二阶段 第三阶段 2 权限申请方法 配置文件中的内容 代码中动态申请 各位看官们,大家好,上一回中咱们说的是实现倒计时的例子,这一回中咱们介绍的例子是"A ...

  2. 【Android】12.3 在当前Activity中获取另一个Activity的返回值

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...

  3. android studio3.12,Android Studio V3.12环境下TV开发教程(六)提供卡片视图

    Android Studio V3.12环境下TV开发教程 文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619656 在上一课 ...

  4. Android培训班(62)dex文件格式3

    SHA-1签名字段    从dex文件头里,已经看到前面有一个4字节的字段检验码了,那为什么又需要一个SHA-1签名字段呢? 这不是重复了吗?起初始看来,好像是有点重复,可是仔细考虑一下,这样设计,还 ...

  5. android 开源_适用于Android的12个开源游戏

    android 开源 智能手机使用户可以触手可及的丰富游戏,但是许多专有游戏中都充斥着广告,应用内购买以及其他功能,这些功能创造了不那么出色的游戏体验. 虽然开源世界并不是以其游戏质量而著称,但F-D ...

  6. Android培训班(1)

    Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机操作系统平台,早期由Google开发,后期由开放手机联盟(Open Handset Allianc ...

  7. Android培训班 1

    Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机操作系统平台,早期由Google开发,后期由开放手机联盟(Open Handset Allianc ...

  8. Android复习12【广播接收者-BroadcastReceiver(简单案例-发送广播、静态注册、动态注册、本地广播、代码示例(别处登陆踢用户下线)、常用系统广播总结、音乐播放器)】

    2020-04-28[11周-周二] 音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目   录 简单案例-发送广播 2)动态注册实例(监听网 ...

  9. android (12) Fragment使用

    一.Fragment概要: 于Fragment经,布局更好地适应各种尺寸的android打电话,加方便的实现不同页面的切换,就不像曾经activity的跳转那样的麻烦了.能够在activity中嵌套不 ...

最新文章

  1. 构建之法——软件工程概论、团队组织管理及开发流程
  2. javascript 数组和对象的浅复制和深度复制 assign/slice/concat/JSON.parse(JSON.stringify())...
  3. JZOJ 3808. 【NOIP2014模拟8.25】道路值守
  4. android 消除标题,Android Activity 去掉标题栏及全屏显示
  5. python模块离线安装_离线安装db2的python模块ibm_db
  6. .NET高级代码审计(第三课)Fastjson反序列化漏洞
  7. Activiti工作流学习笔记01
  8. matlab中 编程如和隐藏,在matlab中编程(如何实时处理)
  9. python日志记录_Python日志记录
  10. java跳跳球代码,README.md
  11. C语言线性表学生管理系统,c语言 学生信息管理系统(线性表版)
  12. 易语言注册机:界面绘制及皮肤模块的引用
  13. fan4801开关电源原理图_全面解析开关电源各功能电路(附原理图)
  14. 个计算机语言使用人数排行,语言使用人数排行_世界语言使用人数排名
  15. 第十七周助教工作总结——NWNU李泓毅
  16. Android低版本程序升级方法,安卓版本太低又无法升级,部分软件运行不了?
  17. oracle 查询带引号,oracle查询带有单引号的 -电脑资料
  18. 阿克曼转向几何的设计原理及解决的问题
  19. fpga/嵌入式硬件初级工程师必备链接(不定时更新)
  20. win7系统计算机打不开6,Win7系统打不开ppt文件的六种原因和解决方法

热门文章

  1. ORACLE RAC ONE NODE技术介绍
  2. mini-spinner格式化
  3. Protoshares 和 Angelshares介绍
  4. ladder network不完全汇总
  5. 积分第一中值定理习题
  6. ElasticSearch三种分页对比
  7. BATJ面试总结:30天狂拿5个offer,回馈发一波面经(长文详细)
  8. 上海交通大学计算机学院mem,上海交通大学机动学院MEM项目老师张文光:上海交大机动学院MEM的最全面的介绍...
  9. E:大疆M300二次开发PSDKV2.1.0。无法识别无人机型号。一直出现 aircraft type 0
  10. system()与WIFEXITED/WEXITSTATUS/WIFSIGNALED