- 博客(129)
- 资源 (4)
- 收藏
- 关注

原创 Android 11.0 Launcher定制桌面图片按照安装时间顺序排列
创作不易,请尊重原创,转载须注明出处:https://blog.youkuaiyun.com/An_Times/article/details/120027015一、前言原生代码中Launcher 桌面应用图标都是按照应用首字母顺序排列的,那这样会带来一个问题,后面安装的应用图标会插入到原有的图标中打乱排列顺序。刚好产品经理提了一个需求希望后安装的应用在原有的顺序后继续排列图标。那么这个需求怎么实现呢,我们需要找到这块的代码看看他的逻辑,本文就介绍一下这个部分。环境:本文基于MTK 6762 Android 1
2021-12-24 18:39:37
1313

原创 全网最详细的Android11.0长按power键关机流程分析
创作不易,请尊重原创,转载须注明出处:https://blog.youkuaiyun.com/An_Times/article/details/120027015一、前言本文将分析PhoneWindowMananger按键响应power键长按事件到SystemUI弹出关机界面dialog的流程。Android 原生的关机界面有两种,一种是LegacyGlobalActions中的dialog (第二张图),另一种是SystemUI中的GlobalActionsDialog(第一张图),常规情况下默认是弹出Syste
2021-12-20 15:57:01
8189
4

原创 CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法
在最近的Android 11项目中用R5 的CTS工具测试发现CtsWindowManagerDeviceTestCases 有很多错误,前面几项测试失败了后面都不跑了。解决思路:首先使用命令run cts -m CtsWindowManagerDeviceTestCases -t android.server.wm.KeyguardLockedTests#testShowWhenLockedImeActivityAndShowSoftInput 跑单项的时候抓下log报告上面fail 的原因写的
2021-10-05 15:15:21
2047

原创 深入了解PowerManagerService(一)之Android 11.0 Power 键亮屏灭屏流程分析
一、前言环境:本文基于MTK 6765 Android 11PowerManagerService(下文简称PMS)是Android系统的核心服务之一,控制着系统的亮灭屏,电源管理,等等重要的功能,本文将先从Power键亮灭屏流程分析入手去了解PMS。二、PhoneWindowManager中Power键按键响应流程代码路径:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.
2021-08-31 21:14:59
4875

原创 Android 11.0 Camera2 默认选择拍照尺寸修改及流程分析
一、前言最近有一个需求是修改默认的照片尺寸,这篇文章就总结一下Camara 选择默认的拍照尺寸的逻辑吧。二、定位代码2.1、根据“照片大小” text 可以定位到布局文件 picturesize_preference.xml.代码路径:android\vendor\mediatek\proprietary\packages\apps\Camera2\feature\setting\picturesize\res\xml\picturesize_preference.xml`**<?xml
2021-08-23 20:17:25
4576
7

原创 Android 7.1开机之后APN的加载及拨号上网流程分析
1、前言 在前段时间的项目中遇到客户的设备出现APN断开的情况没有自动连接,后来折腾了一段时间解决了这个问题。现在用这篇博客记录一下APN的选择和连接流程。2、名词解析APN:APN指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。对于手机用户来说,可以访问的外部网络类型有很多,例如:Internet、WAP网站、集团企业内部网络、行业内部专用网络。而不同的接入点所能访问的范围以及接入的方式是不同的,网络侧如何知道手机激活以后要访问哪个网络从而分配哪
2021-06-13 17:32:30
6400
8

原创 Android 9.0 支持NTFS和Exfat 格式U盘开发
前言最近有个需求要求在Android 9.0上面支持NTFS和Exfat 格式的U盘。网上有很多资料都是基于Android 4.4 的系统,系统版本太陈旧没有办法借鉴,通过两周的摸索终于搞定了这个功能,走了很多弯路,这里也写一篇博客记录下此功能开发流程,希望对有同样困惑的程序猿有帮助,起码可以让你少加很多班,哈哈哈。......
2020-06-19 16:01:26
17446
25

原创 Android 9.0 Vold 挂载流程分析
在Android 系统中所有的热插拔设备都是通过Vold 进程挂载的。通过kernel–>vold–>StorageManagerService这样的架构去逐级上报热插拔事件。一、Vold 入口--> /system/vold/main.cint main(int argc, char** argv) { atrace_set_tracing_enabled(fa...
2020-04-23 19:03:30
6673
2

原创 Android TV 自定义倒计时控件
最近一段时间做了一个应用的项目,感觉一年没写应用,很多东西都忘记了,也遇到了很多问题,搞得焦头烂额的,以后还是会写一写应用小demo,练练手。前段时间做了一个简单的倒计时控件,效果图如下。 该控件由数字选择和时间倒计时两个界面组成,时间设置完毕点击 “开始” 后就会跳转到倒计时界面开始倒计时。一、数字选择界面 由于是针对TV产品的,所以界面做了焦点的处理。针对子控件的焦点问题,统一将焦...
2018-07-30 10:45:29
1020

原创 Android 7.0 CTS Verifier测试之Camera FOV角计算
在我的GMS专栏博客里面讲了GTS 和CTS常见的fail项分析解决,唯独CTS Verify 测试没有单独讲过,这是因为Verify测试是一项手动测试,需要自己去判断的,相对来说也是比较简单的。请读者下载 CTS Verifier指导文档 去测试就可以了。本章节只讲解下怎么计算Camera 的FOV角。到这里,本篇博客就讲解完毕,如果你还是有疑问,可以下载 FOV角的计算指导文档,应
2018-01-23 12:36:02
2638

原创 Android 7.0 GMS测试 Camera模块CTS fail项分析
在上一篇博客中我们提到Camera模块fail项,本篇博客我们单独讲解Camera模块的。 GMS中涉及Camera的有: 1、CTS部分的CtsCameraTestCases模块 2、CTS VERIFY测试的Camera模块,其中verify部分还包括Camera FOV角的计算 3、其他问题 这里面CTS 的CtsCameraTestCases模块fail项又分为Camera S...
2018-01-19 14:37:12
4665

原创 Google Android 7.0 GMS测试常见fail项以及分析解决方法
自从Google 7.0系统发布开始以来,所有使用Googl gms 包服务的第三方厂商出货必须都要过GMS认证,而在2018年预计Android 8.1系统上要求将更为严格。。本篇博客列举展讯7731g 7.0平台GMS测试过程中常见的问题以及解决办法或者思路。本篇博客分为三个部分: 一、客制需求阶段需要注意的GMS相关的修改 二、CTS常见fail 项分析 三、GTS常见fail项分...
2018-01-17 15:21:10
7075
转载 Selinux权限配置详解
基础知识都已经学习完了,但是还不知道怎么样,下面从不同的场景,实现了几个例子,可以参考学习一下。 对于 /extern/sepolicy 的修改如下方法编译: 不过对于 MTK 的 Android 系统,不建议修改 external/sepolicy,而是修改 device/mediatek/common/sepolicy,在 plicy 目录下,make relabel 可更新或创建标识映射。 情景:定义一个 init 启动的 service --- demo_s
2023-07-15 16:45:00
1955
转载 Android RIL & IMS源码分析
模块进程介绍Dialer负责拨号、呼叫界面显示负责通话逻辑,如实际向RIL拨号、挂电话,及电话状态如拨号、振铃、接通等的变更。负责逻辑控制,是沟通各个进程交互的桥梁。jar,看哪个进程引用,主要是com.android.phone主要是phone模块,hal层对应的java层客户端的代码,这个模块的代码就是跟hal下面的C/C++服务进行通信的RILDRILD主要负责接发RILJ指令、Modem指令MODEMModem。
2023-06-30 20:55:59
1279
转载 CS域与PS域的简介及区别
我们了解到的数据传输有两个域,分别是CS域和PS域。我们常说的CS域就是电路交换域,通常用于语音通话,在2G和3G中都有应用到;我们常说的PS域就是分组交换域,通常用于数据业务,在3G、4G和5G中都有应用到。而还有一个IMS(IP多媒体子系统),相当于是PS域上的一个子系统,IMS的存在可以让用户在PS域上同时使用语音通话和数据业务。CS域一般是用于语音业务的,应用于2G、3G中,其中2G的核心网只有CS域,而3G的核心网则是CS域和PS域。PS域一般是用于数据业务的,也可以通过IMS用于语音业务。
2023-06-27 16:51:11
3651
2
原创 C语言函数的定义、声明、分类以及调用(一)
多维数组名也可以作为函数实参,此时被调用函数中形参数组可以指定每一维的大小,也可省略第一维的大小,但第二维的大小不能省略,而且要和实参数组第二维的大小相同。1、使用数组元素作为实参,在循环语句控制下将数组元素a[i]的值传递给形参x,并将其值减32后保存数数组元素b[i]中,调用函数时,形参x的值发生了改变,而实参a[i]的值并没有发生变化。由于数组名表示数组的首地址,因此实参向形参传递的不是数组的值,而是实参的首地址,这样的形参数组和实参数组共占用相同的内存单元。1、函数的定义、声明、分类以及调用。
2023-06-22 10:31:41
2502
原创 C语言指针指向函数的指针(三)
与数组名表示数组的首地址类似,函数名也表示函数的入口地址。因此,可以将函数名赋给一个函数指针变量,然后通过该指针变量来调用函数。通过指针变量调用函数的格式如下: (*指针变量名)(实参列表);函数类型(* 指针变量) (形参类型列表);
2023-06-22 10:25:55
110
原创 C语言指向结构体的指针(二)
(2)、substr函数中定义数组a时,static不能省略,因为省略后,数组a默认的存储属性为auto类型,存放在动态存储区,其生命周期仅限于本函数,返回主函数后,数组a所占用的存储空间就释放了。另外(*p)加一个括号的原因,是因为成员运算符“ . ” 的优先级高于取内容运算符 “ * ” ,不加括号的话就相当于是 * (p.name),这种方法是错误的。关于第一种,由于(*p)表示指向结构体的变量,相当于stu1,因此,(*p).name相当于stu1.name,表示p指向结构体变量中成员name。
2023-06-22 10:19:47
422
原创 C语言指针变量的定义和使用(一)
指针变量的定义: 基类型 *指针变量名;例如: int =2,*pa =&a;格式说明:(1)、 *是指针类型标志符。指针变量定义时必须在变量名前面加上 " * ";定义指针变量时 * 前后可以加空格也可以不加空格(2)、基类型是指针变量所指向的变量的类型。比如上面指针变量pa的基类型是int,指向int类型的变量,给它赋值也只能是int类型。(3)、定义指针变量后,可以将另一变量的地址赋给它,使之指向改变量。例如pa=&a;也可以将另一指针变量的值赋给它,例如pb=pa;
2023-06-22 10:13:56
2365
2
原创 使用addr2line 定位 FORTIFY: vsprintf: prevented write past end of buffer‘ 报错解决思路
一、前言C/C++平时用的不多,写段代码就错误百出,最近写了一段文件读取的。运行的时候直接so挂掉了。网上百度了一下 FORTIFY: vsprintf: prevented write past end of buffer 报错一般是由于传入的参数的问题。这里像下面的这样的so崩溃的堆栈打印 怎么去定位分析呢。这里介绍一个实用的工具 addr2line--------- beginning of crash05-21 14:36:18.879 4405 4434 F libc : FORT
2022-05-21 15:49:45
2178
1
原创 Android 11.0 NetworkMonitor导致的wifi连接后显示x问题解决方法
Android为了对网络状态进行检测,采用了一种叫做captive detection的方式进行网络状态检测。其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Android的NetworkMonitor模块会构造一个http/https的请求,发送到指定的服务器,然后利用收到的响应进行网络状态判断。安卓手机网络状态有如下几种状态:根本就没有返回,这种情况代表当前没有Internet访问;返回状态码204,这种情况代表具备完整的Internet访问(特定的服务器专门返回204
2022-05-19 14:17:25
3089
6
原创 完美解决Android InetAddress.getByName(ip).isReachable(timeout) 一直返回false 的方案
InetAddress 的示例代码:通过 InetAddress.getByName(ip).isReachable(timeout) 的方法可以ping ip 或者www.baidu.com的方式来检测网络是否可以用,但是遇到了一直返回false的问题。我这里是权限的问题 private static final boolean isNetworkReachable(String hostname) { try { Log.d(TAG, "hostnam
2022-05-12 14:13:55
3515
原创 Android 11.0 GMS版本将Google搜索框移到顶部修改方法
前言带有GMS包的软件会发现如下图所示的Google 搜索栏在底部的位置,但是怎么找 packages/app/Launcher3 中的代码都没有找到这个Google 搜索框的位置,其实它是GMS包中overlay 控制的一个wediget控件,他的代码位置是xxx你的 gms包目录/packages/apps/Google/google/apps/SearchLauncher【修改前界面】 {final String key = “net.dns” +
2021-12-24 19:14:08
1873
2
原创 Android 9.0 网络评分之---NetworkFactory
一、网络评分框架图二、NetworkFactory 与ConnectivityService连接过程拿以太网为例,以太网的网口检测类EthernetTracker 会在自己的构造函数中将以太网类型的networkfactory 注册到ConnectivityService中。EthernetTracker(Context context, Handler handler) { mHandler = handler; // The services we use. IBind
2021-12-24 19:05:24
2533
原创 Android 9.0 网络评分之--NetworkAgent
一、NetworkAgent 和NetworkFactory的区别NetworkAgent是被NetworkFactory创建的,这里的创建并不是说在NetworkFactory内部创建NetworkAgent,而是说,在NetworkFactory这个环境就绪之后,网络提供者才可以创建NetworkAgent。并且在一个NetworkFactory中可以创建不同的NetworkAgent,他们拥有不同的Capabilities等参数。而他们之间还有一个区别就是,NetworkFactory是在系
2021-12-24 18:57:36
2372
原创 Android9.0 网络评分之--NetworkMonitor
一、NetworkMonitor的初始化流程ConnectivityService 中registerNetworkAgent 会创建一个NetworkAgentInfo ,而在NetworkAgentInfo 的构造函数中会创建NetworkMonitorpublic int registerNetworkAgent(Messenger messenger, NetworkInfo networkInfo,LinkProperties linkProperties, NetworkCapabili
2021-12-24 18:53:34
2704
原创 Android9.0 网络框架之--Tethering 热点
一、概述:最近Android P 平台遇到一个打开车机热点,手机连接后不能上网的 问题,下面是正常的log和异常的log热点正常能上网的log:热点异常不能上网的log:通过log发现Tethering: Found upstream interface(s): null 所以出现不能上网的情况,这里也分析一下打开热点,连接上网的过程。参考博客:https://blog.youkuaiyun.com/weixin_42093428/article/details/84062557二、打开热点的流程调用Co
2021-12-24 18:50:34
4739
原创 Android 9.0 网络架构
logcat -v time -s “EthernetTracker” “EthernetNetworkFactory” “IpClient” “ConnectivityService” “WifiStateMachine”网卡 up 的流程:Netd:Netd一方面接收处理内核上报的网络状态信息然后将相关指令发送给上层,另外一方面接收上层传递下来的指令执行对应的命令。Netd 的代码位于system/netd 下面。NetworkManagementService: 1、NetdCallbackR
2021-12-24 18:45:54
1716
原创 Communication error with Jack server , try ‘jack-diagnose‘ or see Jack server log 报错解决办法
Communication error with Jack server , try ‘jack-diagnose’ or see Jack server log 报错解决办法报错log如下:[100% 1/1] Ensure Jack server is installed and startedFAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.
2021-11-15 14:58:56
4148
原创 GTS GtsSpeechServicesTestCases 模块 testEEADevicesHaveCorrectPackages fail 解决方法
报错报告截图:分析思路:这个fail很诡异,每次跑的时候实际上还没开始跑就报错找不到这个测试项,很奇怪,我怀疑是Google 的问题,然后搜了一下MTK的online 系统上果然找到了相关的case:上面说GTS 测试工具 版本 android-gts-9-R2-11-12-preview2-7745259可以pass,我查看了一下我的工具是android-gts 9-R1(11-12)-Preview2-7395053,替换一下测试工具就OK了,看来Google也知道自己有问题,及时修复了这一项。
2021-11-04 20:57:39
514
原创 GTS GtsPlacementTestCases 模块 testCoreGmsAppsPermissionsWhitelisted fail 解决方法
错误报告截图:解决方法:在Google 应用商店中升级APK或者替换新的GMS包测试报错:junit.framework.AssertionFailedError: All privileged permissions should be granted to com.google.android.gms, but the following permissions were not granted: [com.android.voicemail.permission.READ_VOICEMAIL]
2021-11-04 20:49:58
2322
原创 解决 GTS GtsPermissionTestCases 模块 testPreloadedAppsTargetSdkVersion fail 问题
报错报告截图:解决办法:重新生成 release、platform、shared、media 4对签名文件替换1、重新替换release、platform、shared、media 4对签名文件。2、build 下生成命令:sh make_key releasekey'/C=CN/ST=GuangDong/L=ShenZhen/O=公司名/OU=Software/CN=公司名/emailAddress=你的邮箱'...
2021-11-04 20:41:07
1252
原创 GTS GtsAppBlacklistDeviceTestCases 模块 testForBlacklistedApps fail 解决方法
报错报告截图:解决办法:重新生成 release、platform、shared、media 4对签名文件替换1、重新替换release、platform、shared、media 4对签名文件。2、build 下生成命令:sh make_key releasekey'/C=CN/ST=GuangDong/L=ShenZhen/O=公司名/OU=Software/CN=公司名/emailAddress=你的邮箱'...
2021-11-04 20:38:49
509
原创 解决 GTS GtsJniUncompressHostTestCases模块 testJniLibsUncompressed fail 问题
报错报告截图:解决办法:重新生成 release、platform、shared、media 4对签名文件替换1、重新替换release、platform、shared、media 4对签名文件。2、build 下生成命令:sh make_key releasekey'/C=CN/ST=GuangDong/L=ShenZhen/O=公司名/OU=Software/CN=公司名/emailAddress=你的邮箱'...
2021-11-04 20:35:45
647
原创 android.carrierapi.cts.CarrierApiTest#testAddSubscriptionToExistingGroupForMultipleSims fail
[DESCRIPTION]双卡项目android.carrierapi.cts.CarrierApiTest#testAddSubscriptionToExistingGroupForMultipleSims 测试fail:junit.framework.AssertionFailedErrorat junit.framework.Assert.fail(Assert.java:48)at junit.framework.Assert.assertTrue(Assert.java:20)at ju
2021-10-18 15:27:38
628
前30W后500W SprdCamera3Setting.cpp分辨率配置文件
2018-01-20
Android 7.0 GMS CtsCameraTestCases模块配置分辨率
2018-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人