自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qdb

好好学习,天天向上!

  • 博客(105)
  • 收藏
  • 关注

转载 【6】在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务

我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务呢?在这一篇文章中,我们将在Android系统的应用层增加一个内置的应用程序,这个内置的应用程序通过ServiceManager接口获取指定的服务,然后通过这个服务来获得硬件服务。《Andro

2017-11-21 15:34:49 326

转载 【5】在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务

在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行。今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件。因此,软件和硬件的关系,在一定程度上可以说,硬件是为软件服务的。硬件工程师研发出一款硬件设备,自然少了软件工程师为其编写驱动程序;而驱动程序的最终目的,是为了使得最上层的应用程序能够使用这些硬件提供的服务来为用户提供软件功

2017-11-21 15:33:11 380

转载 【4】在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口

在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口。实现这两者的目的是为了向更上一层提供硬件访问接口,即为Android的Application Frameworks层提供硬件服务。我们知道,Android系统的应用程序是用Java语言编写的,而硬件驱动程序是用C语言来实现的,那么,Java接口如何去访问

2017-11-21 15:31:50 408

转载 【3】在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序

在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法。简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着,在Ubuntu上为Android系统编写Linux内核驱动程序一文中举例子说明了如何在Linux内核编写驱动程序。在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一

2017-11-21 15:30:14 348

转载 【2】在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序

在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/proc/hello和devfs系统属性文件/sys/class/hello/hello/val。进一步,还通过cat命令来直接访问/proc/hello和/

2017-11-21 15:28:52 254

转载 【1】在Ubuntu上为Android系统编写Linux内核驱动程序

在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore。随着Android系统逐步扩大市场占有率

2017-11-21 15:27:19 450

转载 Android硬件抽象层(HAL)概要介绍和学习计划

转载几篇文章,虽然Android版本比较老,但是分析的很透彻,还有参考价值。Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。

2017-11-21 15:25:45 250

转载 Android下uid与多用户释疑

Android是基于Linux的OS,Linux下有一套自己的账户管理体系,而Android对此有一些封装和改动。同时,Android也引进了自己的多用户功能。所以,大量的类似“uid”的概念存在于Android中,让初学者很头痛,有必要整理一下以释疑。1.Linux uid/gid Linux下的用户id(uid)和群组id(gid)。Linux是多用户系统,每个用户都拥有一个uid

2017-09-08 15:26:44 2929

转载 7.0 Activity的启动过程分析

对于该主题的文章,网上泛滥,为了加深印象,最好还是自己跟一遍源码,这样对框架的认识以及对应用的控制都是很有帮助的。推荐老罗的一些列文章:Android应用程序的Activity启动过程简要介绍和学习计划老罗的博客写的非常好,但分析的源码有点老,不过大体思路是不会变的。我这里就基于Android 7.0的源码来跟下这个流程,希望能帮到大家。分析之前,大家一定要对AIDL的使用有个认识

2017-08-10 16:07:11 327

转载 ActivityManager、ActivityManagerService、ActivityManagerNative、ActivityManagerProxy的关系(and5.1)

转载于:http://blog.csdn.net/kc58236582/article/details/50394905由于ActivityManagerService没有使用aidl机制,因此就直接用了代码实现看上去复杂了一些,下面我们来理下ActivityManager、ActivityManagerService、ActivityManagerNative、Activit

2017-07-03 14:23:50 506

转载 【转载两篇关于android按键事件传递的文章,流程非常完整】Android按键事件传递流程(二)

5    应用层如何从Framework层接收按键事件由3.2和4.5.4节可知,当InputDispatcher通过服务端管道向socket文件描述符发送消息后,epoll机制监听到了I/O事件,epoll_wait就会执行返回发生事件的个数给eventCount,主线程开始执行epoll_wait后面的代码:for (int i = 0; i int fd = event

2017-07-01 16:50:36 2087 1

转载 【转载两篇关于android按键事件传递的文章,流程非常完整】Android按键事件传递流程(一)

做Android开发的少不了对触摸、按键事件进行处理,对于手机来说,主要是手势移动、触摸按下等,而TV主要通过遥控器、按键操作,按键事件不同于触摸事件,必须先获得焦点,然后才能移动、选择。android输入设备支持鼠标、键盘(按键)、触摸屏(单点、多点)、轨迹球等,这些设备所产生的输入事件Input Event从底层驱动开始经过input子系统核心层到达Event Handler事件层,最

2017-07-01 16:47:02 695

转载 【转载两篇关于android按键事件传递的文章,流程非常完整】Android按键事件传递流程(一)

做Android开发的少不了对触摸、按键事件进行处理,对于手机来说,主要是手势移动、触摸按下等,而TV主要通过遥控器、按键操作,按键事件不同于触摸事件,必须先获得焦点,然后才能移动、选择。android输入设备支持鼠标、键盘(按键)、触摸屏(单点、多点)、轨迹球等,这些设备所产生的输入事件Input Event从底层驱动开始经过input子系统核心层到达Event Handler事件层,最

2017-07-01 16:45:12 1316

原创 WindowManagerServices Android 7(一)

Window是一个abstact类型,唯一继承Window的类为PhoneWindow,PhoneWindow在Android7 中位于framework/base/core/java/com/android/internal/policy/PhoneWindow.java中。PhoneWindow对象在Activity对象创建以后再创建,ActivityThread.java中 cas

2017-06-30 15:19:43 440

转载 RingerMode 设置和勿扰模式关系

问题引入,在项目中,Android6.0项目中,客户要求去掉勿扰模式,当时我们只是去掉了勿扰模式的界面显示部分,即在SystemUI 的VolumeDialog.java类当中去掉了勿扰模式显示的部分和设置中界面显示部分。而实际的功能并为做修改。这样做之后又出现了新问题。android5.1以后,在按音量下键时,将音量调到0之后,在继续按音量下键,会将情景模式调到勿扰模式,无法直接调到静音

2017-06-29 20:50:39 944

转载 Task(Activity栈) 详解

什么是Android  Application?简单来说,一个apk文件就是一个Application。任何一个android Application基本上是由一些Activities组成,当用户与应用程序交互时其所包含的部分Activities具有紧密的逻辑关系,或者各自独立处理不同的响应。这些Activities捆绑在一起成为了一个处理特定需求的Application,

2017-06-29 15:25:55 1220 3

原创 Android InputMonitor

InputMonitor是InputManagerService和WMS之间的纽带,SystemServer.java中 startOtherServices()方法下进行初始化: inputManager = new InputManagerService(context); Trace.traceEnd(Trace.TRACE_TAG_SYST

2017-06-28 15:02:24 2052

原创 Android watchdog

1. Watchdog 简介Android 为了保证系统的高可用性,设计了Watchdog用以监视系统的一些关键服务的运行状况,如果关键服务出现了死锁,将重启SystemServer;另外,接收系统内部reboot请求,重启系统。总结一下:Watchdog就如下两个主要功能:接收系统内部reboot请求,重启系统;监控系统关键服务,如果关键服务出现了死锁,将重启System

2017-06-28 11:04:54 529

转载 Android7.0启动SystemServer进程

在分析Android系统进入zygote进程一文中知道SystemServer是系统中非常核心的进程 SystemServer在ZygoteInit中进行创建,并且启动起来的.代码位置frameworks/base/core/Java/com/Android/internal/os/ZygoteInit.java[java] view plain copy

2017-06-23 12:21:45 1515

转载 Android7.1勿扰功能简析

Android系统在5.1系统开始增加勿扰模式,渐渐的有着取代静音模式的趋势,最新的系统已经更新到7.1.1,我们来看一下最新的原生勿扰有哪些功能。首先在屏幕下滑出来的快捷开关界面中,我们可以看到勿扰模式。在这里如果我们点击开启勿扰模式,会出现三种勿扰模式供选择。(1)完全静音:这会阻止所有声音和振动(包括闹钟、音乐、视频和游戏)打扰您。您仍然可以拨打电话。这里面也同事可以选择定时

2017-06-23 11:46:19 1657

转载 Android7.0系统进入Zygote进程

SystemServer进程Android用户空间核心的的进程, framework层的很多services都是在SystemServer中进行创建并启动的. SystemServer也是由Zygote进行孵化的. 在将解启动zygote进程一文中知道启动zygote就会进入framework/cmds/app_process/app_main.cpp的main函数中在init.rc中

2017-06-23 11:19:03 1367

转载 Android系统启动流程总览

绪论    Android是基于Linux内核的, 可扩展的智能终端设备. 越来越多的用户使用Android设备, 而移动智能时代已经悄然而至,很多人都感觉这是一个神奇的世界, 对其知之甚少. 就让我们通过本文来揭开Android设备系统启动的神秘面纱,以此来了解这个神秘的世界.Android系统总览   当电源键按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行,加载引

2017-06-23 11:16:28 365

转载 Android7.0 PowerManagerService亮灭屏分析(三)

在前面两部分已经对绘制windows与设置设备状态进行了详细讲解. 之后接着就该对亮度值进行设置, 实现亮屏动作了.在DisplayPowerController中的animateScreenBrightness函数通过亮度渐变动画来将亮度设置到目标亮度.[java] view plain copy// Brightness animatio

2017-06-23 11:14:46 2180

转载 Android7.0 PowerManagerService亮灭屏分析(二)

在PowerManagerService中对各种状态进行判断后,将其数值封装进DisplayPowerRequest中传入DisplayPowerController中进一步处理。在亮屏过程中DisplayPowerController会根据传过来的数值来设置新的电源状态为亮屏,然后调用DisplayPowerState来对状态进行设置,在分析DisplayPowerState时会具体讲解。由于此

2017-06-23 11:12:53 1474

转载 Android7.0 PowerManagerService亮灭屏分析(一)

绪论可以导致手机亮灭屏的因素有多种,而在本文中主要讲解按power键亮灭屏过程以及来电亮屏。在亮灭屏过程power中主要的实现类与功能如下所述:PowerManagerService.Java:以下简称PMS或者PowerMS,主要处理系统中与power相关的计算,然后决策系统该如何反应。同时协调power如何与系统其他模块的交互,比如没有用户活动时屏幕变暗等。DisplayPower

2017-06-23 11:11:33 2621

转载 Android7.0关机流程分析

在长按power键时系统会弹出对话框,让用户选择关机, 重启或者其他模式. 在本文中重点讲解系统关机流程. 让大家了解在系统关机过程都做了哪些事情,而导致关机慢又有那些主要的原因.在Android7.0 PowerManagerService亮灭屏(一)一文中有对按power键传输讲解, 长按power键是在Java层的PhoneWindowManager.java中进行处理的.

2017-06-23 11:05:18 2370

转载 APK的安装过程分析

Package管理服务PackageManagerService在安装一个应用程序的过程中,会对这个应用程序的配置文件AndroidManifest.xml进行解析,以便可以获得它的安装信息。Android系统中每一个应用程序都有一个Linux用户ID,一个应用程序除了拥有一个linux用户ID之外,还可以拥有若干个Linux用户组ID,以便可以在系统中获得更多的资源访问权限,如读取联系人信息

2017-06-21 17:16:44 1037

转载 Java反射机制详解

| |目录1反射机制是什么2反射机制能做什么3反射机制的相关API·通过一个对象获得完整的包名和类名·实例化Class类对象·获取一个对象的父类与实现的接口·获取某个类中的全部构造函数 - 详见下例·通过反射机制实例化一个类的对象·获取某个类的全部属性·获取某个类的全部方法·通过反射机制调用某个类的方法·通过反射机制操作某个类的属性·反射机制的动态代理4反射机制的应用实例·在泛型为Inte

2017-06-21 17:09:35 180

转载 Activity创建过程

首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈。如下图所示:于是我们先看android.app.ActivityThread的main()方法。android.app.ActivityThread.main()main()方法中对一个Looper对象进行初始化,形成一

2017-06-21 16:08:06 422

转载 Android 7.0 分屏原理分析

在以往的Android系统上,所有Activity都是全屏的,如果不设置透明效果,一次只能看到一个Activity界面。但是从Android N(7.0)版本开始,系统支持了多窗口功能。在有了多窗口支持之后,用户可以同时打开和看到多个应用的界面。并且系统还支持在多个应用之间进行拖拽。在大屏幕设备上,这一功能非常实用。本文将详细讲解Android系统中多窗口功能的实现。多窗口

2017-06-21 14:32:13 8361

转载 Java中==和equals的区别,equals和hashCode的区别

在Java中:==是运算符,用于比较两个变量是否相等。equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。Object的equals方法如下:[java] view plain copypublic boolean equals(Object

2017-03-02 16:55:41 235

转载 40个Java多线程问题总结(关于多线程最全的总结)

前言个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过。由于笔者水平有限,有些问题可能讲的不对,能指正的希望大家不吝指教。40

2017-03-02 15:34:14 289

转载 深入理解 Java 垃圾回收机制

一:垃圾回收机制的意义java  语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,java中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存; 内存泄露:指该内存空间使用完毕后未回收,在不涉及复杂

2017-03-02 15:31:04 171

转载 深入理解java虚拟机【并发编程三特性】

Java的并发编程是依赖虚拟机内存模型的三个特性实现的:(1).原子性(Atomicity):原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的。Java内存模型中通过read、load、assign、use、store和write这6个操作保证变量的原子性操作。long和double这两个64位长度的数据类型jav

2017-03-02 14:35:30 241

转载 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

当你用Eclipse运行web项目的时候,你就会看到控制台出现:WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:firstProject' did not find a matching proper

2017-02-16 18:55:51 300

转载 二级指针的作用详解

一、概念在如下的A指向B、B指向C的指向关系中:首先C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以B也有地址,B的起始地址是0x00000004,但是B内存中存放的是C的地址,所以B里面的内容就是0x0000000

2017-02-08 15:14:53 287

原创 android 6.0编译时出现ERROR:Security problem ,see jack server log

最近编译Android6.0时经常出现以下错误Building with Jack: out/target/common/obj/APPS/SystemUI_intermediates/with-local/classes.dexERROR: Security problem, see Jack server log (/tmp/jack-XXXX/jack-8072.log)

2016-12-01 18:00:15 2566 1

转载 Android 新一代编译 toolchain Jack & Jill 简介

2016 年 3 月 10 日, Google 向外界发布了 Android N 的预览版,并宣布了 Android N 的Roadmap,Android N 的最终版源代码将于今年 8 或 9 月份释出到 AOSP 项目。在众多的 Android N 新特性中,有一项新工具链的出现与 Android 生态圈的所有开发者息息相关,即 Jack & Jill 编译器的引入。在依赖

2016-12-01 11:56:25 1860

转载 Android 动画之从上到下,从下往上弹出

从上到下[html] view plain copy span style="font-size:18px;">xml version="1.0" encoding="utf-8"?>  set xmlns:android="http://schemas.android.com/apk/res/android">      tra

2016-11-29 19:06:28 6638

转载 Git冲突:commit your changes or stash them before you can merge.

今天用Git pull来更新代码,遇到了下面的问题:[html] view plain copy error: Your local changes to the following files would be overwritten by merge:      xxx/xxx/xxx.java  Please, commit y

2016-11-25 14:30:15 376

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除