技术总结
文章平均质量分 68
Easyhood
Android开发工程师
展开
-
Android 稳定性面试一文通
稳定性面试一文通一、ANRActivity或Input事件5秒无响应,Broadcast 10s,Service 20s,content provider 10s都会触发;生成log在主log中搜索 ANR 会有明显的打印;同时会生成 data/anr/trace.txt文件;在trace文件中可以看到线程名,优先级,线程ID,线程状态以及ANR的原因。解决方法将所有的耗时操作不要放在主线程,比如网络通信,socket通信,SQI操作,文件读写或者有可能的阻塞放在子线程中执行。二、crash原创 2022-02-08 17:11:00 · 2214 阅读 · 0 评论 -
Android telephony RILD流程整理
RILD流程RIL的入口\hardware\ril\rild\rild.cint main(int argc, char **argv) {......//设置服务名if (strncmp(clientId, "0", MAX_CLIENT_ID_LENGTH)) { snprintf(ril_service_name, sizeof(ril_service_name), "%s%s", ril_service_name_base, clientId);}原创 2021-11-25 17:47:54 · 1929 阅读 · 0 评论 -
LVGL开发指导手册
LVGL开发指导手册一,简介介绍LVGL(轻度综合图形界面库)作为一个免费开源图形库能够提供几乎所有的嵌入式GUI。该开源库有使用方便,画面美观,内存占用低等优点。1,收集资料 2,窗口初始化 3,控件 创建 布局 4,回调 5,切屏幕二,资料路径1,ESP32-S2-HMI-DevKit-1 使用说明:https://github.com/espressif/esp-dev-kits/tree/master/esp32-s2-hmi-devkit-12,LVGL官方文档:https://原创 2021-06-30 11:24:39 · 4326 阅读 · 0 评论 -
Android自定义气泡
Android自定义气泡效果功能详细链接效果功能支持4个方向设置三角形的位置设置阴影颜色,大小设置圆角自定义背景颜色详细链接Android自定义气泡 使用指南转载 2020-11-10 11:51:18 · 613 阅读 · 0 评论 -
如何实现SettingsObserver extends ContentObserver 来监听Settings设值变化
如何实现SettingsObserver extends ContentObserver 来监听Settings设值变化关于如何在Settings中添加自己的值在之前如何在setting里面添加自己的值中说过,现在来说如何监听监听Settings设值变化。首先可以新建一个内部类SettingsObserver来继承自ContentObserver private final class SettingsObserver extends ContentObserver { private原创 2020-07-30 11:58:13 · 1139 阅读 · 0 评论 -
Android Q 上的Biometric生物识别之Face人脸识别流程
第一部分,人脸识别身份验证HIDL借助人脸识别身份验证功能,用户只需要将自己的面孔对准设备即可将其解锁。Android 10 增加了对一种新的人脸识别身份验证堆栈的支持,这种堆栈可安全处理摄像头帧,从而在支持的硬件上进行人脸识别身份验证时保障安全和隐私。Android 10 还提供了一种简单的安全合规实现方法,以支持通过应用集成来完成交易(例如网上银行或其他服务)。Android 人脸识别身份...原创 2020-02-17 19:11:04 · 11020 阅读 · 13 评论 -
Android Q 上的Biometric生物识别之Fingerprint指纹识别流程
第一部分、Fingerprint HIDL在配有指纹传感器的设备上,用户可以注册一个或多个指纹,并使用这些指纹来解锁设备以及执行其他任务。Android 会利用 Fingerprint HIDL(硬件接口定义语言)连接到供应商专用库和指纹硬件(例如指纹传感器)。要实现Fingerprint HIDL,你必须在某个供应商专用库中实现 IBiometricsFingerprint.hal指纹匹配...原创 2020-02-14 18:35:04 · 7235 阅读 · 1 评论 -
Android Q 上的Biometric生物识别
生物识别架构Android Q版本不再使用相对独立的指纹识别或是人脸识别板块,而是转而使用一个相对大的笼统的架构。就是生物识别 Biometric,基于生物特征的因素允许在平台上进行安全身份验证,目前在Android Framework主要包括人脸和指纹生物身份验证两大部分。如果你明白其中的原理,自己也可以做一些别的生物验证的方式,比如声音识别什么的。一、 第一个类BiometricMana...原创 2020-02-11 18:21:27 · 4234 阅读 · 2 评论 -
在Android Q中对AMS的改动
1.有39个档案从am目录删除,大多移动到wm目录下,主要死activityTask,activityRecord.2.am目录增加10个档案,主要是broadcast,oomadj相关档案。3.AMS分裂原创 2020-02-01 23:18:08 · 2863 阅读 · 0 评论 -
更改Android 默认键盘映射值
更改Android InputManagerService默认键盘映射值在通常情况下我们使用android手机或者平板连接外接键盘,默认的外接键盘映射值都是美式键盘,或者说是标准键盘,然而全世界并非只是用这一种键盘,在意大利,日本等国还拥有自己独特的键盘,因此就需要设置他们自己的键盘映射值frameworks/base/packages/InputDevices/res/raw/keyboa...原创 2019-11-19 17:22:51 · 1696 阅读 · 0 评论 -
长按Home键唤起Google Search
长按Home键唤起Google Searchandroid默认处理长按Home键会唤起最近使用应用列表,而部分厂商在安装了GMS后,Google会要求修改长按Home键唤起Google Search一,具有实体按键的厂商可以更改配置文件Frameworks/base/core/res/res/values/Config.xml<integer name="config_long...原创 2019-10-29 15:02:21 · 1679 阅读 · 0 评论 -
Android 开机log以及常见异常
Android开机log分析分析开机log,一是可以理一下android启动流程,二是可以通过log定位错误 首先,我们给出一张比较全面的Android系统启动图 根据上述Android的启动框图,我们可以顺序地列出Android系统启动中涉及的几个关键步骤:(1) Linux内核的启动(2) Init程序启动,并启动各个本地服务(如 healthd, d...转载 2018-03-31 17:11:44 · 5528 阅读 · 0 评论 -
java格式化时间
public static void main(String[] args) {// System.out.println(System.currentTimeMillis()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss:SSS"); String formatStr =form...转载 2019-06-05 11:24:30 · 1584 阅读 · 0 评论 -
Android9.0在锁屏界面Keyguard输错5次密码后倒计时30秒时重启手机不显示倒计时
最近解了一个bug,觉得很有意思,拿出来和大家分享一下。锁屏密码输错五次后出现倒计时,重启设备不显示倒计时。首先,以图案解锁为例,图案解锁的初始化和逻辑比对都在KeyguardPatternView.java中倒计时方法用的是该类中的handleAttemptLockout(long elapsedRealtimeDeadline)方法,传入一个获取的系统休眠时间,该时间是设备启动至现在的时...原创 2019-05-17 15:43:01 · 2632 阅读 · 0 评论 -
Android中showDialog()报错is your activity running?
判断一下Activity是否在finishing就好了,否则万一Activity销毁了,这个Dialog没有所依附的对象,就会有下面的异常抛出android.view.WindowManager$BadTokenException: Unable to add window — token android.os.BinderProxy@447a6748 is not valid; is you...转载 2019-05-06 16:08:32 · 2416 阅读 · 0 评论 -
为MTKSystemUI添加jni的so文件
这段时间困扰我很久的一个问题,因为要在系统的MTKsystemUI中集成face++,所以需要在systemUI去集成一系列jni的so文件,首先尝试在MTK文件下新建jni文件夹,将so文件放入jni文件夹中,再在jni中单独写Android.mk去编译,结果一直在报错,no rule make it 要么就是根本不编译后来尝试在MTKSystemUI中Android.mk中部去增加,注意不要...原创 2019-04-03 10:37:03 · 663 阅读 · 2 评论 -
app passed NULL surface报错以及onPreviewFrame不被调用的原因
前段时间,需要开发一个人脸识别的程序,实现如下功能:程序通过摄像机实时获取图像,但是不直接显示获取的图像,而是显示处理过后的图像。就这个如何不显示处理前只显示处理后的图像,纠结了很久,网上搜索了很多,对于这个问题,网上的信息都是重复无用的,根本无法解决。接下来我详细的说明遇见的问题和解决方法。一开始程序见程序段1,这么写的话,屏幕上面只会显示摄像头获取到的图片,处理过后的图片完全不会显示,后面...转载 2019-04-12 10:59:12 · 1898 阅读 · 0 评论 -
关于You can update current.txt报错
何时需要执行make update-api命令添加系统API或者修改@hide的API后,需要执行make update-api,然后再make修改公共api后,需要make update-api1.在修改完系统Api或部分公共Api后(常见于修改Intent.java、KeyEvent.java等等),执行源码编译时会有如下提示see build/core/apicheck_msg...转载 2019-03-22 16:31:30 · 993 阅读 · 0 评论 -
Face++头部姿势headpose参数解析
Face++在调用detectapi的时候会返回一组json其中就有headpose参数如下: "headpose": { "yaw_angle": 51.89651, "pitch_angle": -9.777671, "roll_angle": 7.1094437 },这些参数什么意思呢,这几y原创 2019-03-10 19:27:04 · 4167 阅读 · 1 评论 -
SystemUI模块总结
SystemUI模块总结1,SystemUI路径:SystemUI被放在framework/base/packages/apps/SystemUI在该目录的二级目录src/com/android下可看到SystemUI和Keyguard两个目录SystemUIKeyguard由此可见如今将锁屏界面也整合在SystemUI中2,SystemUI所需权限从清单文件中可以发现 S...原创 2019-03-05 14:13:18 · 3003 阅读 · 0 评论 -
Android Studio导入Vitamio注意问题
Android Studio导入Vitamio注意问题附记第一步 到官网或者github下载vitamio资源第二步 解压文件,将其中的vitamio导入到as中第三步 配置build.gradleapp目录下的build.gradle第四步 打开app/src/main目录下的AndroidManifest.xml,注册io.vov.vitamio.activity.InitActivity...转载 2019-02-24 16:27:05 · 506 阅读 · 0 评论 -
Android 9.0 -源码下载编译
Android 9 -代码下载编译1.背景:背景:现在Android framework 开发的同学,整体在公司里面解一些无关痛痒的bug,对于Android framework模块详细流程,可能只有在工作之外的时间去分析Android源码。由于某墙的原因,这里我们采用国内的镜像源进行下载.目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明。后面的所有命令...原创 2019-06-03 09:58:43 · 5195 阅读 · 0 评论 -
Android P(9.0) userdebug版本执行adb remount失败
[SOLUTION]Android P + kernel-4.4 or kernel-3.18– download preloader with verified boot disabled which location is the same as scatter file //preloader__SBOOT_DIS.bin– adb root– adb disable-verity...转载 2019-06-10 10:52:34 · 1192 阅读 · 0 评论 -
git出错"no matching key exchange method found"
问题描述今天升级Ubuntu系统到16.04之后,之前通过git管理的一个项目add和commit之后无法push到服务器。每次提交都报以下错误:Unable to negotiate with xx.xx.x.xxx port xxxx: no matching key exchange method found. Their offer: diffie-hellman-group1-sha...转载 2019-06-21 14:18:54 · 1569 阅读 · 0 评论 -
通过闹钟服务注册定时通知
偶然的机会发现了一个注册在那种服务里类似于定时器的东西,这样你的程序就不用再次开辟线程去执行这个操作了,真的很节省性能,代码如下: // 通过闹钟机制一小时后启动服务 Intent intent = new Intent(this, TimerBroadcastReceiver.class); PendingIntent pending原创 2016-08-30 23:02:52 · 452 阅读 · 0 评论 -
Android屏幕录制时怎样在录屏中去掉悬浮窗
Android支持多个屏幕:主显,外显,和虚显,虚显就是我们要说的VirtualDisplay。VirtualDisplay的使用场景很多,比如录屏,WFD显示等。其作用就是抓取屏幕上显示的内容。VirtualDisplay抓取屏幕内容,其实现方式有很多。在API中就提供了ImageReader进行读取VirtualDisplay里的内容。而录屏是通过加载SurfaceFlinger画布,通过加...原创 2019-09-27 15:15:14 · 11135 阅读 · 5 评论 -
在Android P版本中加入Face Unlock相关功能的讲解
在Android P版本中加入Face Unlock相关功能的讲解随着时代的发展,指纹已经不能满足当前人们的需要,特别是在iphone X推出以后,各大手机厂商争相模仿,都会在手机中加入人脸解锁功能,我们今天就拿出一例讲解一下,如何在Android手机中加入face Unlock功能一 . Face Unlock主要流程概括首先,按照用户的使用角度,先进入Settings中录入人脸,此...原创 2019-09-24 17:28:54 · 3235 阅读 · 3 评论 -
切换多用户使用Camera.open报错cannot connect from device user 0, currently allowed device users: 10
最近在做faceunlock与多用户交互的一些东西,我的录入入口是写在Settings中的,Settings是会随着用户的切换更换进程的持有者就像其他普通用户一样,但我的比对是写在SystemUI的keyguard中的,SystemUI去请求Camera.open的时候就会报错CameraService: CameraService::connect X (PID 1334) rejected ...原创 2019-09-11 15:58:46 · 2274 阅读 · 0 评论 -
Android P 怎样屏蔽HOME键和RECENT键
在android P 版本上想要屏蔽某一个应用界面的HOME键和RCENT键需要怎么做(1)其实也不用多复杂,应用首先在清单文件中获得STATUS_BAR权限<uses-permission android:name="android.permission.STATUS_BAR" />(2)然后我们需要在该Activity的oncreat方法中去屏蔽,记住,一定要在setCon...原创 2019-09-11 15:38:56 · 2402 阅读 · 2 评论 -
Android 9.0怎样在data下创建多用户共享目录
前言Google 在android M 版本后, 通过SELinux 的neverallow 语法强制性限制了普通进程访问data 目录的权限. 严禁除init system_server installd system_app 之外的其他进程直接操作/data 目录比如在data 目录下面创建文件,写文件,重命名文件等等.有很多客户都会在data 目录下创建文件, 保存资讯, 在M 版本上这...原创 2019-09-11 14:20:00 · 3509 阅读 · 0 评论 -
Android性能优化---TraceView 分析图怎么看
TraceView是什么,TraceView 是 Android 平台特有的数据采集和分析工具,主要用做热点分析,找出最需要优化的点。TraceView 从代码层面分析性能问题,针对每个方法来分析,比如当我们发现我们的应用出现卡顿的时候,我们可以来分析出现卡顿时在方法的调用上有没有很耗时的操作,通过TraceView,可以得到两种数据单次执行最耗时的方法执行次数最多的方法要打开上面的面板,...转载 2019-07-24 10:20:03 · 634 阅读 · 0 评论 -
Android 9.0 的 recent 键/事件的拦截
在5.0之前的版本中,我们可以在phoneWindowManager里监听key_code_F12键来获取recent键的点击事件,但在如今版本中已经不能这样做了,recent键被单独拿了出来,我们可以在/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java中的onRecentsClick(...原创 2019-07-12 17:36:18 · 3650 阅读 · 0 评论 -
每个国家对应的values语言Locale和国家代码对照表
每个国家对应的values语言Locale和国家代码对照表 每个国家对应的语言Locale和国家代码对照表 DNN3支持多语言,希望下面的语言代码与对应国家能对你有所帮助语言代码国家/ 地区"" (空字符串)无变化的文化af公用荷兰语af-ZA公用荷兰语 - 南非sq阿尔巴尼亚sq-AL阿...转载 2019-06-28 11:22:54 · 4548 阅读 · 0 评论 -
高通平台获取预览/拍照/录像YUV数据
前言在高通平台, 如果要集成第三方视频或图像处理算法, 通常会在HAL层进行集成, 当然App层一般也可以通过JNI或者OpenGL来实现, 但效率一般没有直接在HAL层集成高, 原因主要由两点:HAL层能直接获取YUV数据(高通平台App一般可通过设置pictureFormat为NV21来返回YUV数据, MTK平台大多数不支持App层获取YUV数据), 且算法库多数是用C/C++写的, 可...转载 2019-06-18 11:52:00 · 2983 阅读 · 0 评论 -
Android 基础组件构成系统分层以及底层启动原理
一、一套最基础的安卓设备(开发版)应包含的组件二、芯灵思开发板预览 第一口 UART ,这个比adb命令更加方便我们的工程师去抓取一些log 第二个 是LED灯 第三个 是SD卡 因为SD卡的读写速度较慢,如果将系统写入SD卡将大大影响我们的系统流畅程度 第四个 是Camera与WIFI接口,并且预留了一组GPL,这样我们就可以使用GPL挂载一些其他的外设,比方sensor红外原创 2018-03-31 16:44:49 · 5150 阅读 · 0 评论 -
如何在setting里面添加自己的值
Settings数据存放在com.android.providers.settings/databases/settings.db 中数据库中数据的默认数据在frameworks/base/packages/SettingsProvider/res/values/defaults.xml中定义,如果要在数据库中添加一个新的字段,则可用如下步骤:1、在defaults.xml中为新加的数据定义一个默认转载 2017-12-17 21:45:24 · 1500 阅读 · 0 评论 -
根据拼音排序
需求:将一组数据按某一字段中文拼音排序 PinyinComparator comparator = new PinyinComparator(); Collections.sort(strList, comparator); 其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]2、P原创 2016-11-10 22:05:31 · 1083 阅读 · 0 评论 -
如何解决InflateException错误与FloatingActionButton报错
最近自己写一个App,从github上靠下代码集成到我的项目中报了如下的错误android.view.InflateException: Binary XML file line #41: Error inflating class android.support.design.widget.FloatingActionButton尝试了try catch将异常捕获后,虽然不再报错但App也不再显示原创 2016-10-29 19:13:26 · 2963 阅读 · 1 评论 -
将GPS坐标转换为火星坐标
在谈到地图坐标转换前,有必要了解一下关于地图坐标的相关知识: 一、分类: 地图坐标大致分为几种: 1、GPS、WGS84,也就是原始坐标体系,这是国际公认的世界标准坐标体系; 2、GCJ-02,又称为“火星坐标”,国家测绘局在02年发布的坐标体系,在国内,至少得使用此坐标体系,比如:google、高德、腾讯地图等; 3、其他特殊坐标体系,一般都是由火转载 2016-11-06 22:12:29 · 7604 阅读 · 0 评论 -
Android Studio从gthub上导入新项目的时候,R文件丢失的问题
当你更新了sdk版本后可能会遇到这样的情况:导入人家的完整的项目会出现R文件丢失,或者新建一个项目直接就不生成R文件,这种情况下,你可能Fix了好多次,clean了N次,但是还是不行,你可以试试下面的办法。如果没有的话,安装一下,就万籁归于沉寂,一切恢复如初了。转载 2016-09-20 15:34:20 · 868 阅读 · 0 评论