Android
文章平均质量分 90
qidabing
向牛逼前进!
展开
-
【1】在Ubuntu上为Android系统编写Linux内核驱动程序
在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore。随着Android系统逐步扩大市场占有率转载 2017-11-21 15:27:19 · 463 阅读 · 0 评论 -
Android7.0 PowerManagerService亮灭屏分析(二)
在PowerManagerService中对各种状态进行判断后,将其数值封装进DisplayPowerRequest中传入DisplayPowerController中进一步处理。在亮屏过程中DisplayPowerController会根据传过来的数值来设置新的电源状态为亮屏,然后调用DisplayPowerState来对状态进行设置,在分析DisplayPowerState时会具体讲解。由于此转载 2017-06-23 11:12:53 · 1551 阅读 · 0 评论 -
Android7.0 PowerManagerService亮灭屏分析(一)
绪论可以导致手机亮灭屏的因素有多种,而在本文中主要讲解按power键亮灭屏过程以及来电亮屏。在亮灭屏过程power中主要的实现类与功能如下所述:PowerManagerService.Java:以下简称PMS或者PowerMS,主要处理系统中与power相关的计算,然后决策系统该如何反应。同时协调power如何与系统其他模块的交互,比如没有用户活动时屏幕变暗等。DisplayPower转载 2017-06-23 11:11:33 · 2662 阅读 · 0 评论 -
Android7.0关机流程分析
在长按power键时系统会弹出对话框,让用户选择关机, 重启或者其他模式. 在本文中重点讲解系统关机流程. 让大家了解在系统关机过程都做了哪些事情,而导致关机慢又有那些主要的原因.在Android7.0 PowerManagerService亮灭屏(一)一文中有对按power键传输讲解, 长按power键是在Java层的PhoneWindowManager.java中进行处理的.转载 2017-06-23 11:05:18 · 2400 阅读 · 0 评论 -
【转载两篇关于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 · 2119 阅读 · 1 评论 -
【转载两篇关于android按键事件传递的文章,流程非常完整】Android按键事件传递流程(一)
做Android开发的少不了对触摸、按键事件进行处理,对于手机来说,主要是手势移动、触摸按下等,而TV主要通过遥控器、按键操作,按键事件不同于触摸事件,必须先获得焦点,然后才能移动、选择。android输入设备支持鼠标、键盘(按键)、触摸屏(单点、多点)、轨迹球等,这些设备所产生的输入事件Input Event从底层驱动开始经过input子系统核心层到达Event Handler事件层,最转载 2017-07-01 16:47:02 · 747 阅读 · 0 评论 -
【转载两篇关于android按键事件传递的文章,流程非常完整】Android按键事件传递流程(一)
做Android开发的少不了对触摸、按键事件进行处理,对于手机来说,主要是手势移动、触摸按下等,而TV主要通过遥控器、按键操作,按键事件不同于触摸事件,必须先获得焦点,然后才能移动、选择。android输入设备支持鼠标、键盘(按键)、触摸屏(单点、多点)、轨迹球等,这些设备所产生的输入事件Input Event从底层驱动开始经过input子系统核心层到达Event Handler事件层,最转载 2017-07-01 16:45:12 · 1374 阅读 · 0 评论 -
APK的安装过程分析
Package管理服务PackageManagerService在安装一个应用程序的过程中,会对这个应用程序的配置文件AndroidManifest.xml进行解析,以便可以获得它的安装信息。Android系统中每一个应用程序都有一个Linux用户ID,一个应用程序除了拥有一个linux用户ID之外,还可以拥有若干个Linux用户组ID,以便可以在系统中获得更多的资源访问权限,如读取联系人信息转载 2017-06-21 17:16:44 · 1057 阅读 · 0 评论 -
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 · 451 阅读 · 0 评论 -
Activity创建过程
首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈。如下图所示:于是我们先看android.app.ActivityThread的main()方法。android.app.ActivityThread.main()main()方法中对一个Looper对象进行初始化,形成一转载 2017-06-21 16:08:06 · 446 阅读 · 0 评论 -
Android 7.0 分屏原理分析
在以往的Android系统上,所有Activity都是全屏的,如果不设置透明效果,一次只能看到一个Activity界面。但是从Android N(7.0)版本开始,系统支持了多窗口功能。在有了多窗口支持之后,用户可以同时打开和看到多个应用的界面。并且系统还支持在多个应用之间进行拖拽。在大屏幕设备上,这一功能非常实用。本文将详细讲解Android系统中多窗口功能的实现。多窗口转载 2017-06-21 14:32:13 · 8458 阅读 · 0 评论 -
Android7.1勿扰功能简析
Android系统在5.1系统开始增加勿扰模式,渐渐的有着取代静音模式的趋势,最新的系统已经更新到7.1.1,我们来看一下最新的原生勿扰有哪些功能。首先在屏幕下滑出来的快捷开关界面中,我们可以看到勿扰模式。在这里如果我们点击开启勿扰模式,会出现三种勿扰模式供选择。(1)完全静音:这会阻止所有声音和振动(包括闹钟、音乐、视频和游戏)打扰您。您仍然可以拨打电话。这里面也同事可以选择定时转载 2017-06-23 11:46:19 · 1689 阅读 · 0 评论 -
RingerMode 设置和勿扰模式关系
问题引入,在项目中,Android6.0项目中,客户要求去掉勿扰模式,当时我们只是去掉了勿扰模式的界面显示部分,即在SystemUI 的VolumeDialog.java类当中去掉了勿扰模式显示的部分和设置中界面显示部分。而实际的功能并为做修改。这样做之后又出现了新问题。android5.1以后,在按音量下键时,将音量调到0之后,在继续按音量下键,会将情景模式调到勿扰模式,无法直接调到静音转载 2017-06-29 20:50:39 · 1022 阅读 · 0 评论 -
Android7.0 PowerManagerService亮灭屏分析(三)
在前面两部分已经对绘制windows与设置设备状态进行了详细讲解. 之后接着就该对亮度值进行设置, 实现亮屏动作了.在DisplayPowerController中的animateScreenBrightness函数通过亮度渐变动画来将亮度设置到目标亮度.[java] view plain copy// Brightness animatio转载 2017-06-23 11:14:46 · 2213 阅读 · 0 评论 -
Android系统启动流程总览
绪论 Android是基于Linux内核的, 可扩展的智能终端设备. 越来越多的用户使用Android设备, 而移动智能时代已经悄然而至,很多人都感觉这是一个神奇的世界, 对其知之甚少. 就让我们通过本文来揭开Android设备系统启动的神秘面纱,以此来了解这个神秘的世界.Android系统总览 当电源键按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行,加载引转载 2017-06-23 11:16:28 · 375 阅读 · 0 评论 -
【6】在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务呢?在这一篇文章中,我们将在Android系统的应用层增加一个内置的应用程序,这个内置的应用程序通过ServiceManager接口获取指定的服务,然后通过这个服务来获得硬件服务。《Andro转载 2017-11-21 15:34:49 · 338 阅读 · 0 评论 -
【5】在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行。今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件。因此,软件和硬件的关系,在一定程度上可以说,硬件是为软件服务的。硬件工程师研发出一款硬件设备,自然少了软件工程师为其编写驱动程序;而驱动程序的最终目的,是为了使得最上层的应用程序能够使用这些硬件提供的服务来为用户提供软件功转载 2017-11-21 15:33:11 · 408 阅读 · 0 评论 -
【4】在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口。实现这两者的目的是为了向更上一层提供硬件访问接口,即为Android的Application Frameworks层提供硬件服务。我们知道,Android系统的应用程序是用Java语言编写的,而硬件驱动程序是用C语言来实现的,那么,Java接口如何去访问转载 2017-11-21 15:31:50 · 420 阅读 · 0 评论 -
【3】在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法。简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着,在Ubuntu上为Android系统编写Linux内核驱动程序一文中举例子说明了如何在Linux内核编写驱动程序。在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一转载 2017-11-21 15:30:14 · 359 阅读 · 0 评论 -
【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 · 268 阅读 · 0 评论 -
Android硬件抽象层(HAL)概要介绍和学习计划
转载几篇文章,虽然Android版本比较老,但是分析的很透彻,还有参考价值。Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。转载 2017-11-21 15:25:45 · 262 阅读 · 0 评论 -
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 · 3015 阅读 · 1 评论 -
7.0 Activity的启动过程分析
对于该主题的文章,网上泛滥,为了加深印象,最好还是自己跟一遍源码,这样对框架的认识以及对应用的控制都是很有帮助的。推荐老罗的一些列文章:Android应用程序的Activity启动过程简要介绍和学习计划老罗的博客写的非常好,但分析的源码有点老,不过大体思路是不会变的。我这里就基于Android 7.0的源码来跟下这个流程,希望能帮到大家。分析之前,大家一定要对AIDL的使用有个认识转载 2017-08-10 16:07:11 · 345 阅读 · 0 评论 -
Android watchdog
1. Watchdog 简介Android 为了保证系统的高可用性,设计了Watchdog用以监视系统的一些关键服务的运行状况,如果关键服务出现了死锁,将重启SystemServer;另外,接收系统内部reboot请求,重启系统。总结一下:Watchdog就如下两个主要功能:接收系统内部reboot请求,重启系统;监控系统关键服务,如果关键服务出现了死锁,将重启System原创 2017-06-28 11:04:54 · 547 阅读 · 0 评论 -
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 · 516 阅读 · 0 评论 -
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 · 1537 阅读 · 0 评论 -
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 · 1387 阅读 · 0 评论 -
Task(Activity栈) 详解
什么是Android Application?简单来说,一个apk文件就是一个Application。任何一个android Application基本上是由一些Activities组成,当用户与应用程序交互时其所包含的部分Activities具有紧密的逻辑关系,或者各自独立处理不同的响应。这些Activities捆绑在一起成为了一个处理特定需求的Application,转载 2017-06-29 15:25:55 · 1248 阅读 · 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 · 2110 阅读 · 0 评论 -
配置新Android产品--制作自己的Vendor
Android源码使用一个可定制的编译系统来生成 特定的,针对自己硬件平台的Android系统,比如不使用缺省的out/target/prodect/generic目录,本文档简单介绍了这个编译系统,并做一个针对自己硬件平台的Android,这部分工作主要是由Android源代码中的Vendor文件夹来实现,如果该文件夹不成立,自己可以在Android源代码的根目录下建立该文件夹,这个文件夹里面存原创 2015-09-22 17:04:41 · 895 阅读 · 0 评论 -
Linux 中 Android的启动过程
Android的启动过程是从进程init开始的,所以它是后续所有进程的祖先进程。一、init进程源码位于system/core/init目录。主要做了以下事情:1. 重新设置子进程终止时信号SIGCHLD的处理函数。act.sa_handler = sigchld_handler; //调用了wait函数等待子进程退出。act.sa_flags =转载 2015-09-22 16:31:21 · 577 阅读 · 0 评论 -
Inside the Linux boot process
ake a guided tour from the Master Boot Record to the first user-space applicationThe process of booting a Linux® system consists of a number of stages. But whether you're booting a standar转载 2015-09-22 14:48:50 · 529 阅读 · 0 评论 -
Android启动过程深入解析
当按下Android设备电源键时究竟发生了什么?Android的启动过程是怎么样的?什么是Linux内核?桌面系统linux内核与Android系统linux内核有什么区别?什么是引导装载程序?什么是Zygote?什么是X86以及ARM linux?什么是init.rc?什么是系统服务?当我们想到Android启动过程时,脑海中总是冒出很多疑问。本文将介绍Android的启动过程,希望能帮转载 2015-09-22 14:44:52 · 207 阅读 · 0 评论 -
Android出现“Read-only file system”解决办法
Android-出现Read-only file system的解决方法输入命令: 代码如下复制代码mount -o remount rw /system(每次都要执行一次)有的朋友说是是“/”的问题,命令改为:adb push AlarmClock.apk systemapp 即“/”改为“”即可。 ad原创 2015-09-29 16:01:43 · 5463 阅读 · 0 评论 -
Android UEventObserver
UEventObserver是android Java层利用uevent与获取Kernel层状态变化的机制。通过grep发现framework有如下模块使用UEventObserver的功能来提供服务:电池状态:services/java/com/android/server/BatteryService.java耳机状态:services/java/com/android转载 2015-08-29 11:38:48 · 348 阅读 · 0 评论 -
frameworks层按键事件处理
事件处理流程1)InputManager负责读取事件并把事件送到frameworks的java层2)WindowManagerService里会有一个InputMonitor类来监听事件变化并做相应的分发处理。3)在WindowManagerService会有一个WindowManagerPolicy来做消息拦截处理。4)WindowManagerService会把消息发给最上面运原创 2015-08-29 00:25:58 · 365 阅读 · 0 评论 -
简单的listfragmentdemo
main.xml文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_heigh原创 2015-05-16 11:12:01 · 277 阅读 · 0 评论 -
LayoutInflater的inflate方法实例
其中,main.xml文件为:[html] view plaincopyxml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_转载 2015-05-16 10:59:17 · 266 阅读 · 0 评论 -
PreferenceFragment加载设置页面
新的SDK中已经推荐PreferenceFragment代替PreferenceActivity展示设置页面,主要设置参数如下:XML文件:<!-- Copyright (C) 2008 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License");原创 2015-04-14 14:57:15 · 473 阅读 · 0 评论 -
Android使用wifi Ap核心类
package com.example.wifihotspot2;import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Iterator; import java.util.List; import android.content.Context; import android原创 2015-04-13 15:14:37 · 862 阅读 · 0 评论