- 博客(16)
- 收藏
- 关注
原创 像素与无关像素
在Android项目的res目录下,创建不同的资源文件夹,每个文件夹对应不同的dpi类别,应用根据不同的dpi选择对用的资源文件,自适应布局。ppi(Pixels per Inch,像素密度):每英寸包含的物理像素的数量,设备在物理上的属性值,取决于屏幕自身,无法修改。密度无关像素:与实际物理像素无关,单位dp,可以保证在不同屏幕像素密度的设备上显示相同的效果。在480dpi(xxhdpi)屏幕上,1dp等于3px。在160dpi(mdpi)屏幕上,1dp等于1px。
2025-01-10 15:33:31
221
原创 拨号流程总结
TeleService应用发出拨号请求后,将通过AdapterBinder对象跨进程调用ConnectionServiceWrapper的mAdapter对象中的服务接口,再通过Telecom 中的处理,最终调用Dialer应用中lnCallService服务的updateCall 接口来更新通话状态。来源:Android Telephony原理解析与开发指南——杨青平。• Dialer和TeleService 应用中对应服务的响应。• Telecom 应用中的拨号流程。的placeCall 方法调用。
2024-10-13 19:40:01
417
原创 从源码看拨号流程(四)
Connection 创建完毕, TelephonyConnectionService 调用 placeOutgoingConnection 方法,通过Phone 对象调用 dial()方法进行拨号,其实调用的是执行顺序是GsmCdmaPhone.dial(),在GsmCdmaPhone 对象的拨号方法中会判断 ImsPhone对象是否存在,并根据相关配置决定是否要用ImsPhone对象来进行拨号;
2024-10-10 17:44:12
367
原创 从源码看拨号流程(三)
它检查Intent的动作,如果是ACTION_CALL、ACTION_CALL_PRIVILEGED或ACTION_CALL_EMERGENCY,则调用processOutgoingCallIntent方法。未知电话Intent通常是指那些没有明确指定如何处理的电话请求,例如,当系统接收到一个电话请求,但无法确定它是属于拨入电话还是其他类型的电话(如VoIP电话)。它根据KEY_IS_UNKNOWN_CALL标志决定是处理未知电话Intent还是拨出电话Intent。所有拨入和拨出电话的单一入口点。
2024-10-09 19:42:29
941
原创 从源码看拨号流程(二)
此方法通过Uri指定的地址拨打电话,并可接受额外的参数(Bundle)来指定通话特性,如使用扬声器、视频状态等。EXTRA_START_CALL_WITH_SPEAKERPHONE:设置为true时,通话开始时自动打开扬声器。EXTRA_START_CALL_WITH_VIDEO_STATE:设置初始视频通话状态。如果有权限,它使用TelecomManager的placeCall()方法尝试拨打电话。首先,它检查应用程序是否有拨打电话的权限,即检查是否具有CALL_PHONE权限。
2024-10-09 15:49:05
710
原创 从源码看拨号流程(一)
拨号应用的主界面,通常包含一个DialpadFragment用于显示拨号键盘,以及一个ContactsFragment用于显示联系人列表。DialpadFragment是显示拨号键盘的Fragment。它包含一个数字键盘和一个输入框,用于用户输入电话号码。ContactsFragment是显示联系人列表的Fragment。
2024-10-09 12:04:07
679
原创 安卓系统签名
在Android开发中,系统应用(System Apps)通常需要特殊的签名才能安装在系统分区上,并享有系统级别的权限。这些签名通常是由设备制造商或Android源码构建过程中自动生成的。
2024-09-22 16:27:11
1167
原创 ARM笔记(三)-ARM寄存器、异常处理
五个异常模式:FIQ、 IRQ 、SVC、 Abort、 Undef。ARM有40个寄存器(8个工作模式),monitor多了3个寄存器。状态位:【0】ARM状态 【1】Thumb状态。ARM微架构:指令流水线、多核处理器。CPRS寄存器:当前程序状态寄存器。
2023-09-13 20:26:56
176
1
原创 ARM笔记(二)-ARM处理器
只保留常用的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,多单周期指令(嵌入式移动终端使用广泛)Word 32bits 存储数据在内存的起始地址必须是4的整数倍。Halfword 16bits 存储数据在内存的起始地址必须是2的整数倍。不仅包含了常用指令,还包含很多不常用的特殊指令(多用于PC及服务器等)Thumb指令集:所有指令都占用16bit存储空间,自增2。ARM指令集:所有指令都占用32bit存储空间,自增4。字节序:arm一般使用小端对齐。
2023-09-12 16:38:50
113
原创 ARM体系架构与接口技术笔记(一)
DMA总线:直接存储器访问,使用DMA总线可以不通过CPU直接在存储器直接进行数据传递。CPU读取地址有限,和地址总线相关。32位,地址空间2^32,4G。
2023-09-11 15:09:43
112
原创 嵌入书linux八股文(数据结构)
3.栈: 一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。栈的应用非常广泛,如函数调用栈、括号匹配、表达式求值等。4.队列: 一种先进先出(FIFO)的数据结构,队列常用于实现缓存、任务队列、消息队列等。2.链表:它由一组节点组成,每个节点包含一个值和一个指向下一个节点的指针。树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。实现:sqlist.c sqlist.h test.c。6.堆:完全二叉树,堆常用于实现优先队列和排序算法。树中所有结点可以有零个或多个后继。
2023-09-06 17:05:16
239
1
原创 进程和线程
进程是线程的容器,真正完成代码执行的是线程,而进程则作为线程的执行环境。一个程序至少包含一个进程,一个进程至少包含一个线程,一个进程中的多个线程共享当前进程所拥有的资源。一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上最多只能创建2048个线程。当需要数据隔离时,需要更好地稳定性时,更好地利用多核处理时,使用进程更合适。进程类型:交互进程、批处理进程、守护进程(一直在后台运行)1.(Linux)中什么是进程,线程,彼此有什么区别?线程(小进程):一个进程中执行的代码片段。
2023-09-04 21:12:17
90
1
原创 谷歌云端硬盘直接下载方法
有地址: https://drive.google.com/file/d/1Cv7IMSI3BTkdPnIhTZ_nzbqIerW477mk/view?将1Cv7IMSI3BTkdPnIhTZ_nzbqIerW477mk拼接到https://drive.google.com/uc?id=后面得到新的连接。直接复制到浏览器网址输入即可下载。
2023-04-11 14:13:01
9566
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人