- 博客(24)
- 收藏
- 关注
转载 Dialer中界面组成、Call对象和log分析
主要内容1. Call涉及的目录结构及框架结构2. InCallUI层的基本架构(所涉及的Presenter、Fragment及Activity)3. Call的几种状态(对应phone状态)及上报流程4. GSM与IMS MO流程的差异5. 分析问题的常用log希望你在看完本篇以后能够:1.快速找到Call界面某个小时内容对应的fragment及presenter2.结合log快速定位当前call的状态1. Call涉及的目录结构及框架结构1.1 目录.
2020-12-10 15:29:08
1456
转载 与Dialer相关的ProximitySensor传感器
一开始想,既然视频通话永远不灭,语音通话关闭免提会灭屏。那么就想,应该是会灭屏情况,调用SensorManager的registerListener;永不灭屏时,根本调用unRegisterListener。Sensor的类型是TYPE_PROXIMITY。但是这么搜索没有收获。Dialer中ProximitySensor.java等文件也和距离传感器有关。但是逻辑较多没有找到入口。后来才知道,原来我搜索的方法太底层了。拨号盘在某些地方的距离传感器灭屏功能是用SensorManager regis.
2020-12-10 15:15:38
824
转载 关于RILJ多次发出GET_CURRENT_CALLS请求的问题分析
本文来自本文来自http://blog.csdn.net/linyongan在刚接触Qcril的时候,特别是在研究接电话和打电话的流程的时候,可能会有小伙伴跟我一样,被RILJ发出的GET_CURRENT_CALLS请求搞晕了。有时候会RILJ会多次发出GET_CURRENT_CALLS请求,两次或者三次,不确定。举个例子,每次出现GET_CURRENT_CALLS error之后,RILJ会再发出一次GET_CURRENT_CALLS请求,所以,我们先假设“GET_CURRENT_CALLS er.
2020-12-08 18:59:20
766
转载 安卓来电、去电非常重要的2个类:CallsManager和IncallService
前言与通话相关的绝大多数操作都与CallsManager类相关,因此在对Telecom中的各种功能和机制分析之前,有必要先对CallsManager进行一定的了解。本文内容基于Android M版本。CallsManager位置:alps\packages\services\Telecomm\src\com\android\server\telecom\CallsManager.javaTelecom中的Call在分析CallsManager之前,先来看一下Telecom中的Call类。官方对
2020-12-08 14:06:45
3636
原创 安卓10来电流程详细总结
来电过程, 是由com.android.phone进程发起的,因为 com.android.phone 进程中 Telephony 直接与Moderm层交互, com.android.phone 进程收到来来电消息后,发送消息给 system 进程, system 进程(Telecom作为中介)开始和com.android.phone 进程建立链接, 并通知 UI 进程 (com.android.dialer) 更新。大体上和拨号过程类似。来电流程时序图:对于MO Call来说,一般是由..
2020-12-08 13:50:45
4330
原创 安卓启动流程
1 启动流程概述Android 启动流程跟 Linux 启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。 2.加载BootLoader,拉起Android OS。 3.加载Uboot,初始外设,引导Kernel启动等。 4.启动Kernel,加载驱动,硬件。 5.启动Android,挂载分区,加载驱动、服务,init 进程等。2. 了解安卓Runtime 运行时Android5.0(API 21)以上,每个应用都运行在自己的进程中,有其自己的Android Runtim
2020-12-04 17:46:05
226
原创 安卓的多线程机制---Handler机制、AsyncTask异步机制、线程池、IntentService
Android提供了四种常用的操作多线程的方式,分别是:1. Handler+Thread2. AsyncTask3. ThreadPoolExecutor4. IntentService其中 handler 机制和 AsyncTask异步任务机制 可以查看 博客1.ThreadPoolExecutor 线程池的使用为什么要使用线程池技术:一方面减少了每个并行任务独自建立线程的开销,另一方面可以管理多个并发线程的公共资源,从而提高了多线程的效率。所以ThreadPoolEx..
2020-12-04 11:04:51
313
原创 安卓的五种存储方式
安卓的存储方式有5种,分别为:SharedPrefences; SQLite数据库 文件存储 网络存储 ContentProvider1. 数据存储的类型和存放位置应用程序一般有一下几种类型:file-普通的文件存储database-数据库文件(.db文件)sharedPreference-配置数据(.xml文件)cache-图片缓存文件应用数据的存放位置:com.xxx.xxx 为自定义的包名/data/data/com.xxx.xxx/cac...
2020-12-04 11:02:18
2548
1
原创 安卓 Fragment 碎片详解
Android Fragment 是可以看成是一个小型的Activity,又称Activity 片段想想,如果一个很大的界面,就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦使用Fragment则可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理,从而可以更加方便的在 运行过程中动态地更新Activity的用户界面下图是文档中给出的一个 Fragment 分别对应手机与平板间不同情况的处理图Fragment不能单独使用,需要嵌套在Activit...
2020-12-04 10:58:16
473
原创 安卓AIDL和binder机制
一、AIDL(Android Interface Definition Language,安卓接口定义语言)1. AIDL 概念不同程序和不同进程【即不同工程】之间的通信设计AIDL这门语言的目的就是为了实现进程间通信。在Android系统中,每个进程都运行在一块独立的内存中,在其中完成自己的各项活动,与其他进程都分隔开来。可是有时候我们又有应用间进行互动的需求,比较传递数据或者任务委托等,AIDL就是为了满足这种需求而诞生的。通过AIDL,可以在一个进程中获取另一个进程的数据和调用其暴露出来的
2020-12-04 10:25:27
454
原创 安卓Intent 机制
一. 什么是Intent1. intent 概念Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的 activity, service 和 broadcast receiver 之间的交互。Intent这个英语单词的本意是“目的、意向、意图”。Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以...
2020-12-04 09:52:41
443
原创 安卓电话补充业务 SS
1. 一些概念知识补充业务(Supplementary service)简称SS,包括呼叫等待、呼叫转移、呼叫限制、三方通话、USSD等,补充业务可以在VoLTE网络中使用,也可以在3G网络中使用。XCAP协议(XML Configuration Access Protocol,XML配置访问协议):是一种应用层协议,它允许一个客户端来读,写,修改和删除应用程序配置数据存储在服务器上的XML格式。XCAP映射XML文件子树和元素属性到HTTP URIs,使这些组件可以直接使用HTTP协议的客户端访问
2020-12-02 20:04:39
4809
原创 安卓10拨号流程详细总结
packages/apps/Dialer/java/com/android/dialer/dialpadview/DialpadFragment.java 用户点击拨号盘的拨号按钮,此时开始呼叫长征第一步,dialpadfragment的onclick方法会响应点击事件。 @Override public void onClick(View view) { int resId = view.getId(); if (resId == R.id.dialpad_float...
2020-12-02 11:09:02
6585
1
原创 安卓的Handler机制、AsyncTask 、Toast和事件监听机制
一. Handler 的使用方法1. Handler 作用在开发中,我们经常会需要做一些耗时的操作:比如下载图片、打开网页、下载视频等。如果将这些耗时的操作放在主线程(UI线程),长时间的阻塞导致应用ANR。必然应该将这些操作放在子线程中处理,这些操作处理过程中,我们需要更新UI界面以告知用户现在具体的进度、状态等信息。所以:在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理但是,多个线程并发执行UI 主.
2020-12-01 19:43:29
231
原创 Android 中 ListView 控件的使用详细介绍
1. ListView 显示原理ListView显示数据原理实际就是MVC设计模式,如下图所示:Model(模型)– 数据集合,用来存储数据组织 View(视图)– ListView,负责数据显示 Controller(控制器)- 负责管理Model,并设置要显示的哪个具体数据.2. ListView 控件继承关系java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ ...
2020-12-01 19:41:59
1133
原创 做个安卓 UI 小项目:仿照西瓜视频首页 UI界面
1. 最终的效果图2. 总体的大的布局分布实际代码的总体布局:2.0 RelativeLayout常用的一些属性由于在本示例中采用了很多的 RelativeLayout 布局,所以先了解些它的基本布局属性重点:相对布局 (RelativeLayout) 以 父容器 或者 兄弟组件 参考+margin +padding 来设置组件的显示位置wrap_content 和 match_parent 的区别:wrap 翻译过来是包裹,conten是内...
2020-12-01 19:40:52
392
原创 Android 常用的 UI 控件 和 对应的方法详细总结
设计和代码切换,一般情况下,我们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概的布局,然后用代码来微调一、常见的布局1.LinearLayout 线性布局LinearLayout 几个重要的 XML 属性xml 属性 说明 android:id 为组件设置一个资源 id,然后在 Java 中可以通过findViewById(id)找到该组件 android:background 为组件设置一个背景图片或者背景色 android:layout_...
2020-12-01 19:39:23
997
原创 一文搞定安卓Andriod Studio 的 2种应用调试的方法
1. 第一种调试方式:使用真机进行调试 使用USB线把手机和电脑连接,最好是使用手机原装的线,有些线可能不支持文件传输。 确保你手机的开发者模式打开 如何打开开发者模式? ①打开手机 设置 --> 系统 --> 关于手机 --> 找到版本号,点击版本号 “七次”,直到页面跳转,输入密码后开发者模式打开 ②返回到 设置里面的系统,打开开发者选项,打开USB调试,选择USB配置 ③可能手机上会弹出是否允许此电脑调试你手机的...
2020-12-01 19:38:02
448
原创 一文搞定-安卓Andriod Studio 下载安装
首先下载Android studio安装包,可以从 http://www.android-studio.org/ 下载最新版本下载后进行安装将按照下列步骤进行:下面一步是安装路径的选择D:\android\android studioD:\android\android studioD:\android\android studio文件夹用户可以自行定义下面一定要逐步完成,一步一步仔细操作:点选第二个启动时提示:不能访问...
2020-12-01 19:29:27
165
原创 Android四大组件之4 - BroadcastReceiver
1. 什么是广播Android 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机,输入法改变等, 发生这些时间,系统都会发送广播,这个叫系统广播每个 APP 都会收到,如果想让一个应用在接收到广播的时候做一些操作,比如:系统开机后,偷偷后台跑服务~哈哈,这个时候只需要为应用注册一个用于监视开机的BroadcastReceiver,当接收到开机广播就做写偷偷摸摸的勾当应用场景:同一应用具有多个进程的不同组件之间的消息通信 不同应用间的组件之间的消息通信 与And..
2020-12-01 19:23:55
146
原创 Android四大组件之3 - ContentProvider
目录1. ContentProvider简介2. contentProvider类的方法3. ContentResolver4.ContentUris类5. UriMatcher 类6. 不同应用/进程间的数据共享7. 对数据进行增删改查1. ContentProvider简介ContentProvider(内容提供者) 可以让我们的 APP 访问别的应用,或者说一些 ContentProvider 暴露给我们的一些数据,比如手机联系人,短信等,如果我们想对这些...
2020-12-01 19:21:09
238
原创 Android四大组件之2 - Service
目录1. 什么是服务Service2.声明Service3.Service的生命周期4.开启 Service 的两种方式1. 什么是服务ServiceService(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁也不受影响。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。服务的作用:例如,...
2020-12-01 19:18:08
215
原创 Android四大组件之1 - Activity
目录1. 什么是Activity2. Activity / ActionBarActivity / AppCompatActivity 的区别3. Activity 的创建流程4.Activity生命周期5. Activity 的4种加载模式6. Activity 的启动方式7. Activity 数据传递1. 什么是ActivityActivity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作Act...
2020-12-01 19:13:13
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人