Android培训班(12)
#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)相关推荐
- 一起Talk Android吧(第三百九十回:关于Android版本12适配蓝牙权限的问题)
文章目录 1 背景知识 第一阶段 第二阶段 第三阶段 2 权限申请方法 配置文件中的内容 代码中动态申请 各位看官们,大家好,上一回中咱们说的是实现倒计时的例子,这一回中咱们介绍的例子是"A ...
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- android studio3.12,Android Studio V3.12环境下TV开发教程(六)提供卡片视图
Android Studio V3.12环境下TV开发教程 文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619656 在上一课 ...
- Android培训班(62)dex文件格式3
SHA-1签名字段 从dex文件头里,已经看到前面有一个4字节的字段检验码了,那为什么又需要一个SHA-1签名字段呢? 这不是重复了吗?起初始看来,好像是有点重复,可是仔细考虑一下,这样设计,还 ...
- android 开源_适用于Android的12个开源游戏
android 开源 智能手机使用户可以触手可及的丰富游戏,但是许多专有游戏中都充斥着广告,应用内购买以及其他功能,这些功能创造了不那么出色的游戏体验. 虽然开源世界并不是以其游戏质量而著称,但F-D ...
- Android培训班(1)
Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机操作系统平台,早期由Google开发,后期由开放手机联盟(Open Handset Allianc ...
- Android培训班 1
Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机操作系统平台,早期由Google开发,后期由开放手机联盟(Open Handset Allianc ...
- Android复习12【广播接收者-BroadcastReceiver(简单案例-发送广播、静态注册、动态注册、本地广播、代码示例(别处登陆踢用户下线)、常用系统广播总结、音乐播放器)】
2020-04-28[11周-周二] 音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目 录 简单案例-发送广播 2)动态注册实例(监听网 ...
- android (12) Fragment使用
一.Fragment概要: 于Fragment经,布局更好地适应各种尺寸的android打电话,加方便的实现不同页面的切换,就不像曾经activity的跳转那样的麻烦了.能够在activity中嵌套不 ...
最新文章
- 构建之法——软件工程概论、团队组织管理及开发流程
- javascript 数组和对象的浅复制和深度复制 assign/slice/concat/JSON.parse(JSON.stringify())...
- JZOJ 3808. 【NOIP2014模拟8.25】道路值守
- android 消除标题,Android Activity 去掉标题栏及全屏显示
- python模块离线安装_离线安装db2的python模块ibm_db
- .NET高级代码审计(第三课)Fastjson反序列化漏洞
- Activiti工作流学习笔记01
- matlab中 编程如和隐藏,在matlab中编程(如何实时处理)
- python日志记录_Python日志记录
- java跳跳球代码,README.md
- C语言线性表学生管理系统,c语言 学生信息管理系统(线性表版)
- 易语言注册机:界面绘制及皮肤模块的引用
- fan4801开关电源原理图_全面解析开关电源各功能电路(附原理图)
- 个计算机语言使用人数排行,语言使用人数排行_世界语言使用人数排名
- 第十七周助教工作总结——NWNU李泓毅
- Android低版本程序升级方法,安卓版本太低又无法升级,部分软件运行不了?
- oracle 查询带引号,oracle查询带有单引号的 -电脑资料
- 阿克曼转向几何的设计原理及解决的问题
- fpga/嵌入式硬件初级工程师必备链接(不定时更新)
- win7系统计算机打不开6,Win7系统打不开ppt文件的六种原因和解决方法
热门文章
- ORACLE RAC ONE NODE技术介绍
- mini-spinner格式化
- Protoshares 和 Angelshares介绍
- ladder network不完全汇总
- 积分第一中值定理习题
- ElasticSearch三种分页对比
- BATJ面试总结:30天狂拿5个offer,回馈发一波面经(长文详细)
- 上海交通大学计算机学院mem,上海交通大学机动学院MEM项目老师张文光:上海交大机动学院MEM的最全面的介绍...
- E:大疆M300二次开发PSDKV2.1.0。无法识别无人机型号。一直出现 aircraft type 0
- system()与WIFEXITED/WEXITSTATUS/WIFSIGNALED