
android frameworks
文章平均质量分 66
主要是记录一些安卓框架层的设计,包括java framework以及native framework
Ian22l
这个作者很懒,什么都没留下…
展开
-
android4.4屏幕开机默认横屏
1.动画横屏:frameworks/base/cmds/bootanimation/BootAnimation.cppstatus_t BootAnimation::readyToRun() { mAssets.addDefaultAssets(); sp<IBinder> dtoken(SurfaceComposerClient::getBuiltInDisplay( ISurfaceComposer::eDisplayIdMain));原创 2021-06-15 10:39:44 · 1471 阅读 · 1 评论 -
android9.0 默认apk权限添加
1.默认赋予全部权限:安卓动态要求用户允许添加权限,直接将如下代码中的final boolean grantPermissions = (args.installFlags& PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;改为final boolean grantPermissions=true便可。文件路径:framework\base\services\core\java\com\android\server\pm\Packa原创 2021-06-09 19:12:42 · 1166 阅读 · 2 评论 -
android 9.0背光调节流程
1.背光服务框架如下图是背光框架层图2.UML时序图这里主要标出的是各个服务或者框架层之间连接的api,中间会省略一些调用流程。如下图,PowerManagerService会监听SettingProvider的亮度背光值screen_brightness变化,然后进行背光调节。该图主要是一些服务之前的通信。Jni层访问过程如下图:jni通过hidl直通式访问light库,对hardware层light库会访问对应的sys节点从而进行背光驱动的访问,最终达到调节背光的目的。注意点:原创 2021-05-31 10:26:57 · 2957 阅读 · 0 评论 -
android触摸点上报伸缩问题
当在调试触摸板的时候发现触摸的上报值到android系统层x轴的触摸点会有压缩,这是是由于触摸屏的的触摸的倍数跟显示缓冲区有关系。在调试特殊的屏幕分辨率时,如果你的显示framebufferr跟你的显示屏的分辨率没有对应上,那么你触摸也会有问题,例如显示屏的分辨率为480800,而你的缓冲区只有268800的时候,如果这时候你的触摸屏配置的分辨率为480*800,那么触摸上报的x轴坐标的点也会被压缩268/480≈0.55倍。相关压缩的代码代码如下:路径:framework\native\service原创 2021-05-27 15:44:34 · 684 阅读 · 0 评论 -
android8.0之前的BatteryService
##转载###版权声明:本文为优快云博主「sanzhong104204」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/qq759981398/article/details/73155782【注意】本文在原作者的基础上做了一些补充本文进行第一层分解,将整个电池电量上报的过程分解到Android的不同层次。先上一幅图,对电量上报的流程有个整体的概念,后续对该图的各个部分进行讲解。如图中所述,整个电量上报过转载 2021-05-26 17:33:57 · 326 阅读 · 0 评论 -
AudioService
1.AudioService主要在java层主要有三个方面的作用:(1) 音量管理(2) 音频设备管理(3) AudioFocus(音频焦点)机制2.类图关系如下由上图可知:AudioService继承由IAudioService.aidl自动生成的IAudioService.Stub类,并实现IAudioService.Stub对应的相关方法,此处AudioService位于Bn端,即服务端。AudioManager是AudioService在客户端的一个代理,位于Bp端。对Audi原创 2021-05-26 15:08:00 · 2334 阅读 · 2 评论 -
Powerkey长按弹出关机界面
**1.流程**上层按键的处理一般都在base\services\core\java\com\android\server\policy\PhoneWindowManager.java的interceptKeyBeforeQueueing进行拦截。下面是长按电源键时弹出关机界面的流程。主要函数private void powerLongPress() { //获取配置文件中config_longPressOnPowerBehavior值,一般都是默认为LONG_PRESS_POWER_GLO原创 2021-05-24 17:56:54 · 1575 阅读 · 6 评论 -
android手势返回操作检测
近期项目由于没有预留硬件返回按键,所以只能做成跟全面屏一样的左滑返回的手势逻辑。实现方案:1.参考android官方文档,https://developer.android.google.cn/training/gestures,针对apk层面的监听可以用,这样子做就需要所有的apk页面都需要监听,如果是自己设计的apk还可以,但是第三方apk则不能监听,无法实现返回。framework/base\core\java\android\view\GestureDetector.java中接口监听 pu原创 2021-04-08 18:51:15 · 2197 阅读 · 1 评论 -
触摸上报framwork层
参考学习链接:https://www.jianshu.com/p/34f5c7d55337https://www.jianshu.com/p/d22d86cb04c7路径:./frameworks/native/services/inputflinger/EventHub.cppEventhub利用方法getEvent获取input/event事件Eventhub:size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, si原创 2020-07-24 14:33:58 · 300 阅读 · 0 评论 -
转载分享:Android8.0 连接需要认证的WIFI或不可用的WIFI后自动断开数据流量连接的实现
此文章原文连接:https://blog.youkuaiyun.com/XCF95319605/article/details/81258834来自博主:Felix1120Android8.0 连接需要认证的WIFI或不可用的WIFI后自动断开数据流量连接的实现前言:Google原生对Android系统的设计为,当用户接入一个可以正常上网的WIFI网络以后,会自动切断数据流量的链接,但是,若当用户接入了一个需认证的WIFI,如:机场或运营商提供的连接后需要进行登录验证身份的WIFI时,当跳转到认证界面(特定的we转载 2020-07-08 09:48:04 · 882 阅读 · 0 评论 -
Android6.0 camera个数探测
近期在排查打开摄像头黑屏的问题,然后就跟了一下android camera的框架。根据log分析发现是camera个数为0,然后就进行代码流程跟踪。由于开发平台是mtk平台,log提示上层报错的对应代码逻辑如下图。mCameraService是ICameraService接口类型。获取服务的名称如下:并且是通过aidl跟底层c++通信。frameworks/base/core/java/android/hardware/ICameraService.aidl/* * Copyright (原创 2020-05-16 16:16:12 · 2357 阅读 · 0 评论 -
android9.0内部储存链路
链路如下:storage/sdcard0--->/sdcard/sdcard -> /storage/self/primary/storage/self/primary -> /mnt/user/0/primary /mnt/user/0/primary -> /storage/emulated/0最终都是链接到/storage/emulated/0目录下...原创 2020-05-12 21:22:14 · 2382 阅读 · 0 评论 -
Android P 储存设备挂载
整体框架设计:kernel中会对sd卡以及u盘设备进行检测,当有设备拔插时通过uevent发送给用户空间的vold进程,vold进程接收并解析kernel的uevent信息。vold通过sgdisk与blkid获取设备信息。接着vold会通过某种机制通知到上层framework.上层有设备插入,等待上层framework下发挂载命令给vold。vold接收到挂载命令后调用exfat或者ntfs...原创 2020-04-07 18:15:22 · 1674 阅读 · 0 评论 -
android注册新的按键到系统
1.框架2.修改一:驱动部分:(1)定义新的按键值./kenerl-3.18/include/uapi/linux/input.h./kernel-3.18/arch/arm64/boot/dts/include/dt-bindings/input(修改一个编译后会全部生效)、#define KEY_SCREEN_CTR 249 /* turn on/off the screen*/...原创 2020-02-20 10:46:48 · 455 阅读 · 0 评论