android
angel鹿
android工程师
展开
-
Android 8.0 添加自定义服务流程简述
最近正在做一个项目,需要添加额外的传感器,如温湿度等。可以通过Android sensor的架构的支持添加应用层调用接口。但我拿到的温度传感器没有厂家HAL层的支持,而我对C++目前不是很熟悉。所以我采用自定义服务对上层的支持。这里我忽略了传感器的具体使用实现,只记录下自定义服务的实现流程。(以温度传感器为例) 一,添加AIDL文件1.在frameworks\base\...原创 2018-08-06 18:49:50 · 3055 阅读 · 1 评论 -
Android 8.0 Settings流程分析与变动
开! 场! 白! 好! 难! 写!一,相比Android Settings 7.0 如下图,在7.0的基础上,去掉了7.0新加的侧滑菜单(可能是觉得有点鸡肋吧)。多加了一级页面,把原来类别标题变成的第一级菜单的子项。在代码架构也稍加变动,并引入架构组件之LifeCycle(生命周期感知,本文不作介绍)。二,第一级菜单的加载浏览源码,大多数我们从程序的AndroidManifest.xml入...原创 2018-03-12 18:38:18 · 15429 阅读 · 5 评论 -
关于Android 7.0 手电筒的控制
在Android N(7.0)手电筒原创 2017-12-15 17:21:10 · 7825 阅读 · 4 评论 -
Handler,MessageQueue,Looper,Runnabler的关系
从源码探究线程的Handler,MessageQueue,Looper,Runnabler的联系原创 2017-08-22 14:55:06 · 399 阅读 · 0 评论 -
Android 7.0 Launcher3 去掉应用抽屉
Android 7.0 Launcher3 去掉应用抽屉原创 2017-06-15 15:04:43 · 10164 阅读 · 13 评论 -
Binder 跨进程通信原理浅析
关于跨进程: 为什么要跨进程呢?在Android系统中,每个进程都有分配自己的内存空间,各进程间是不能直接访问其他进程的内存的,那当一个程序要操作与另一个程序的方法怎么办呢?(比如在应用程序中隐藏SystemUI的导航栏)这时就需要跨进程通信了。Binder就是一个帮助进程进通信的虚拟设备,为什么是虚拟设备呢,因为它没有硬件,只只用代码实现的通信架构。从哪开始说? Android系统首次开机启动原创 2017-05-12 15:29:05 · 1132 阅读 · 0 评论 -
android 7.0 Activity 的getSystemService()
当我们的应用需要调用系统服务时,我们是通过getSystemService()方法来获取系统服务并直接调用。系统服务的进程和当前应用程序的进程肯定是不同的,不同的进程间是不能直接进行通信的。那为什么可以这个方法获取直接调用呢?我们来看看到底是怎么实现的。 getSystemService()方法是在ContextImpl中,因为Activity时的Context对象的实现类是ContextI原创 2017-05-11 14:25:07 · 1100 阅读 · 1 评论 -
Android 计算器 sin cos tan 值问题
Android手机计算器sin90值不等于1的解决办法原创 2016-08-24 16:28:36 · 2833 阅读 · 0 评论 -
Android恢复出厂设置源码分析,基于Android 6.0
近两天解决一些关于恢复出厂设置的问题,对此略有了解,注释了部分代码,给大家分享原创 2016-08-24 11:55:22 · 3345 阅读 · 0 评论 -
设置View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);导致布局第一次点击没有反应
如过你添加了如下代码:getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);你会发现,第一次进入点击无反应。我们看看源码解释:/** * Flag for {@link #setSystemUiVisibility(int)}: View would ...原创 2018-12-06 20:04:08 · 4984 阅读 · 1 评论