- 博客(112)
- 资源 (27)
- 收藏
- 关注
原创 Android MTK 屏下指纹的调试过程记录
1, 自从Android 12 以后, SystemUI 里是自带了屏下指纹方案的. 具体代码是在 frameworks\base\packages\SystemUI\src\com\android\systemui\biometrics ,所有以 Udfps 开头的类均是跟屏下指纹相关。一些品牌手机都有了屏下指纹的功能,还算是个比较新颖的功能,最近有项目需要使用屏下指纹, 使用的是汇顶(Goodix)的指纹方案,经过坚难尝试,终于实现了屏下指纹录入与解锁,下面记录一些知识要点,同时分享给遇到相同问题的。
2024-04-11 15:06:59 504
原创 Javassist即时编译技术,热修复核心与原理
Java 字节码以二进制的形式存储在 .class 文件中,每一个.class 文件包含一个Java类或接口。Javaassist 框架就是一个用来处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字节码方面有深入的了解。 Javassist 可以绕过编译,直接操作字节码,从而可以实现代码的注入。所以使用 Javassist 框架的时机就是在构建工具 Gradle 将源文件编译成 .class 文件之后,在将 .clas...
2021-10-24 07:00:00 992
原创 威廉·巴特勒·叶芝:“我们是最后的浪漫主义者”
喜欢叶芝是一件很文艺的事情,叶芝的诗滋润了无数少男少女的情怀。在叶芝被茅德·冈“嫌弃的这一生中”,我们不知道他是否曾经后悔:我感动了全世界,却感动不了你!但至少,他的诗,感动了后世无数人。
2021-10-19 10:55:31 645
原创 基于安卓平台的滤镜功能相机
1.1需求背景爱美之心,人皆有之,我们拍照是为了留住一个美好的瞬间。Android自带的相机拍照效果满足不了人们的爱美心理,而且比较单一;因此为了解决这个问题我们研发滤镜功能相机。滤镜功能相机主要基于Android手机自带的摄像头,在实现拍照等基本功能的基础上实现实时滤镜的功能,并加以改良优化滤镜的渲染速度照过程以及舒适的拍照体验,可以轻而易举的拍出令人满意的照片。1.2项目背景目前针对Android系统的拍照APP主要集中在两点上,一个是拍照时的预览效果处理,另一个是对于手机相册中的.
2021-10-13 17:40:56 1352
原创 Android OpenGL学习笔记
最近做了个贴纸相机的项目,用到OPenGL渲染,一路下来,遇到许许多多的问题,现在写个文章,当做笔记。OpenGL基础简介CPU : 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps、Drawables等都是一起打包到统一的纹理)。GPU: 一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。格栅化 : 是 将图片等..
2021-09-27 20:07:42 325
原创 Android H265版视频通话项目
H265视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openH265以及ffmpeg等开源库的推出,大多数使用者无需再对H265的细节做过多的研究,这大降低了人们使用H265的成本。但为了用好H265,我们还是要对H265的基本原理弄清楚才行。今天我们就来看看H265的基本原理。H265压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:帧内预测压缩,解决的是空域数据冗余问题。帧间预测压缩(运动估计与补偿),解决的是时域数据冗徐问题。整数离散余弦变换(DCT
2021-05-16 13:51:23 405 2
原创 Android NDK实现Gif播放框架
Android中实现GIF播放,目前大多数的方法是通过获取到GIT资源后转为流,再通过ImageView.setBitMap .下面我通过JNI调用Android系统里的代码进行播放。代码结构如下图:下面一步一步的贴代码讲解。首先在MainActivity里有一个ImageView用于显示GIF。这里的比较简单,获取内存卡里的Gif文件,通过GiFHandler调用SO。package zgy.gitcode;import android.app.Activity;import..
2021-05-05 15:12:25 273 3
转载 Java的“泛型”特性,你以为自己会了?
使用Java的小伙伴,对于Java的一些高级特性一定再熟悉不过了,例如集合、反射、泛型、注解等等,这些可以说我们在平时开发中是经常使用到的,尤其是集合,基本是只要写代码没有用不到的,今天我们先来谈谈泛型。1. 定义 在了解一个事物之前,我们必定要先知道他的定义,所以我们就从定义开始,去一步一步揭开泛型的神秘面纱。# 泛型(generics)他是 JDK5 中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。泛型的本质就是参数化类型...
2021-02-27 11:03:48 179
原创 重温堆排序实现!
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。概述若以升序排序说明,把数组转换成最大堆(Max-Heap Heap),这是一种满足最大堆性质(Max-Heap Property)的二叉树:对于除了根之外的每个节点i, A[parent(i)] ≥ A[i]。重复从最大堆取出数值最大的结点(把根结点和最后一个结点交换,把交换后的最后一个结点移出堆),并让残余的堆维持最
2021-01-25 11:11:17 105
原创 非常强大的java时间处理工具类!
xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Date,轻量级,无第三方依赖。为什么要开发这个工具?(1)Java8以前的Date API设计不太好,使用不方便,往往会有线程安全问题。xk-time工具包,使用java8 api,其中Instant、LocalDate、LocalDateTime、LocalTime、ZonedDateTime.
2021-01-25 10:18:03 1304
原创 Java线程同步器原理剖析
CountDownLatch原理剖析日常开发中经常遇到一个线程需要等待一些线程都结束后才能继续向下运行的场景,在CountDownLatch出现之前通常使用join方法来实现,但join方法不够灵活,所以开发了CountDownLatch。示例public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(2);
2021-01-25 09:58:48 160
原创 代码中大量的if/else,你有什么优化方案?
观点一(灵剑): 期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?1. 提前return这是判断条件取反的做法,代码在逻辑表达上会更清晰,看下面代码:if (condition) { // do something} else { return xxx;}if (!condition) { ...
2021-01-25 09:38:28 782
原创 Android Launcher 修改记录
OS:Android 9.0Source:Launcher3源码Path:packages\apps\Launcher3一、修改默认配置1.图标修改Path: xml/device_profiles.xml //1024x600 <profile launcher:name="Nexus 7" launcher:minWidthDps="575" launcher:minHeightDps="...
2020-10-24 12:33:01 793
原创 2020-10-24 车机UI的SystemUI修改
1.状态栏 Layout / status_bar.xml音量条修改layout-sw600dp/volume_dialog_row.xmllayout-sw600dp/volume_dialog.xml状态栏添加TASKframeworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.javaCommit id 728bb4f8becom.andro...
2020-10-24 12:15:10 3960 2
原创 Android GB905协议详解
最近发现,深圳做网约车和货车的协议的公司越来越多了,之前在公司做过一些这方面的项目。就来写个这方面的文章记录下,也顺便分享下。GB905,主要是面向网约车的一种协议,主要监控司机的行为,确保乘车安全。 首先一些协议的指令。public class JTT905Cmd { /** * ISU通用应答 */ public static final int ISU_GENERAL_RESPONSE = 0x0001; /*** 中心通用应答 */ public static final i
2020-10-24 12:06:36 1856 1
原创 通过HAL层录像添加水印,所有相机可用
项目中的添加水印的实现方法,对比Git提交记录,直接可用。diff --git a/hardware/qcom/camera/QCamera2/HAL/QCamera2HWI.cpp b/hardware/qcom/camera/QCamera2/HAL/QCamera2HWI.cpp--- a/hardware/qcom/camera/QCamera2/HAL/QCamera2HWI.cpp+++ b/hardware/qcom/camera/QCamera2/HAL/QCamera2H.
2020-09-30 16:06:03 798
原创 Android Fragment垂直,水平无限循环滑动
最近项目中要用到Fragment水平垂直都可无限循环的滑动, 经过一番折腾终于实现。// 必须要保证 添加时要有4个Fragment. 没有4个会出现异常。首先, 无限循环和网上的大多数的做法一样,将 PagerAdapter 里的 getCount() 返回最大的数字。Integer.MAX_VALUE @Override public int getCount() { return Integer.MAX_VALUE; // fragments.size(...
2020-09-30 15:41:36 609
转载 从源码解析-Android系统启动流程概述 init进程zygote进程SystemServer进程启动流程
Android系统启动流程启动流程 Loader Kernel Native Framework Application init进程 启动 rc文件规则 Actions Commands Service Options init.rc文件 init进程的功能 Zygote进程 main AndroidRuntime::start AndroidRuntime::startVm AndroidRuntime::sta
2020-07-23 11:03:34 878
转载 Activity启动流程源码分析
前言熟悉Activity的启动流程和运行原理是一个合格的应用开发人员所应该具备的基本素质,其重要程度就不多做描述了。同时,知识栈应该不断的更新,最新发布的Android 9.0版本相较于之前的几个版本也做了许多改动和重构,但是大体流程变化不大。本文基于Android 9.0版本源码,从Activity启动方法startActivity为切入口分析整个流程。相关类简介Instrumentation用于实现应用程序测试代码的基类。当在打开仪器的情况下运行时,这个类将在任何应用程序代码之前为您实例化
2020-07-23 10:51:08 180
原创 Android Location 和 Sensor的使用,图片旋转角度
package wits.sensor;import android.Manifest;import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventL.
2020-07-09 15:38:14 614
原创 android 悬浮球的实现,全部界面可用
最近做一个悬浮球的项目,需求是全局可调用,所以必须用一个Services。话不多说,直接上代码。package com.android.settings.widget;import java.lang.reflect.Method;import com.android.settings.R;import com.wits.pms.statuscontrol.ServiceManager;import android.app.Instrumentation;import androi.
2020-07-03 10:04:59 2719 7
原创 Android framework累积
提高APK的进程级别:....\frameworks\base\services\core\java\com\android\server\am\ActivityManagerSerice.javaActivityManagerSerice类里 systemReady() 方法添加如下代码:synchronized(this) { if (mSystemReady) { // If we're done calling all t..
2020-06-15 12:43:18 288
原创 Android build 各个属性介绍
1.ro.custom.font.scale=3 修改字体大小,取值为1-4,分别对应:小,普通,大,特大。默认为3,即大号字体 2.ro.custom.sleep =15000/30000/60000/600000/1800000/2147483647 修改默认休眠时间单位ms 15秒/30秒/一分钟/10分钟/30分钟/从不3.sys.project.fat.volume = MID ...
2020-06-04 14:26:12 948
原创 写给六月 写给旧时光
又是一年六月, 栀子飘香。又缝一年毕业季,青春散场。刚好在这个六月要离别。还是从周报开始说起,那时每周会写一个周报,周报的开始日期是。。。 与RMT的故事就是从那时候开始。...
2020-06-01 11:55:59 140
原创 Andorid BLE的连接多个设备的实现
最近回头一看,还有很多公司是在做智能家居的项目,当然 , 这必修回使用到BLE的通讯协议。目前关于BLE的帖子的千千万万,但是多连接的却是很少的,所以,这篇就来分析下BLE的多连接1,BLE设备得我扫描。这个直接调用btAdapter的startLeScan即可。相对应得,停止扫描调用stopLeScan().// 开始扫描 public void startLeScan() { if (mBluetoothAdapter != null) { mBluetoothAdapter.
2020-05-31 16:35:15 1883
原创 一篇搞定Android Sqlite
开门见山的说,咱不搞那么多理论的,直接来写实用的。由于经常用到数据库存储,多以写一篇博文分享下经验,也是自己做个笔记。直接上代码,详情见代码中的注释。import java.util.ArrayList;import java.util.Calendar;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import androi..
2020-05-23 10:00:56 219 1
原创 Socket的轻量级的实现
最近在做一些Socket通讯的项目,用一些简单的Socket又不稳定,所以 利用这个机会自己封了一套Socket通讯的实现方法.,实现的过程非常简单.经过测试,使用起来还算稳定.换不多说 直接上代码.// 首先是几个回调,用于Socket转态和数据的回调public interface ConnectListener { void receive(byte[] data); void disconnect(); void connectOk(); void connectFa...
2020-05-22 17:35:18 235
原创 我们在平时或面试遇到这些问题时,我们应该怎么回答?
1. 整体性能如何探测,有哪方面 什么指标,怎么保证更流畅2. 讲讲架构这块,如何解耦,大项目逻辑多怎么办。3. android的发展大事件和主要技术发展4. avtivity(service)启动流程简述5. 动态化的几种方案6. 热修复的原理7. 网络这块怎么优化8. 数据库性能怎么保证9. 线程安全怎么保证,异步并发这块你怎么做的=======
2020-05-22 11:36:21 473
原创 android 获取第三方应用程序包名并启动
package com.rmt.getappinfo;import java.util.Collections;import java.util.List;import java.util.Map;import android.app.Activity;import android.app.ProgressDialog;import android.content.ComponentN
2020-05-22 11:35:37 335
原创 找工作Android面试总结
/***2013年面试的公司和一些面试题* 2014-1-9回忆整理** 大部分的面试开场白都是自我介绍,一般介绍自己的基本信息后,三五句话介绍下工作经验和项目,没必要说的太多。说话一定要圆 滑,扬长避短。都喜欢问离职原因,期望工资。**如果离职原因回答的不好,直接影响整场面试效果。* 有的还会问你的职业规划,让我很
2020-05-22 11:33:53 349
原创 android平台下移动DM接入流程?
中国移动拟建设终端管理与服务系统,通过对终端产品的激活、配置使用等信息的收集,结合终端公司对产品的供应链管理,实现产品全生命周期的掌控。 要求2017年3月起,所有入中国移动产品库的定制、非定制Android终端均要支持终端管理功能。(必选要求)终端自注册 第一次开机时,必须将终端的IMEI及其他系统需要的基础信息以数据的方式发送到系统服务器。服务器负责解析此H...
2019-02-22 17:13:35 4234 4
原创 Android 7.0 Settings分析
最近参加了settings的开发,由于代码还比较新, Android7.0 对Settings进行了重构,相比5.0,6.0而言,7.0的Settings有很大的不同,所以将开过程中的一些点点滴滴记录下来.此篇文章主要给大家介绍Settings相关的基础知识:代码路径,手机中相关数据库、文件的路径,等。代码相关的路径:android\frameworks\base\packages\Set...
2018-07-26 15:13:01 3800
原创 获取手机的信息的各种工具类
/*package com.****.mobile;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReade...
2018-07-26 14:09:38 1064
原创 中介者模式 [Mediator Pattern]
各位好,大家都是来自五湖四海,都要生存,于是都找了个靠山——公司,给你发薪水的地方,那公司就要想尽办法盈利赚钱,盈利方法则不尽相同,但是作为公司都有相同三个环节:采购、销售和库存,这个怎么说呢?比如一个软件公司,要开发软件,需要开发环境吧, Windows 操作系统,数据库产品等,这你得买吧,那就是采购,开发完毕一个产品还要把产品推销出去,推销出去了大家才有钱赚,不推销出去大家都去喝西
2017-05-04 10:38:13 444
原创 AIDL使用和Binder机制详解
一、AIDL的使用1.AIDL的简介AIDL (Android Interface Definition Language) 是一种接口定义语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生
2017-02-28 15:36:24 825
原创 原型模式【Prototype Pattern】
今天我们来讲原型模式,这个模式的简单程度是仅次于单例模式和迭代器模式,非常简单,但是要使用好这个模式还有很多注意事项。我们通过一个例子来解释一下什么是原型模式。 现在电子账单越来越流行了,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你邮箱中,说你这个月消费了多少,什么时候消费的,积分是多少等等,这个是每个月发一次,但是还有一种也是银行发的邮件你肯定有印象:广告信,
2017-02-05 19:23:46 393
原创 状态模式【State Pattern】
现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸,向空中伸展。汽车对城市的发展我们就不说了,电梯,你想想看,如果没有电梯,每天你需要爬10 层楼梯,你是不是会崩溃掉?建筑师设计了一个没有电梯的建筑,那投资家肯定不愿意投资,那也是建筑师的耻辱呀,今天
2017-02-05 19:04:20 370
转载 辅助功能之自动抢红包
hi大家好。新年又来了,微信群里又是各种红包横飞。作为技术人员的我们却大可不必担心一不小心,手速慢了点,又错过了几十万。我们可以通过安卓的辅助功能来实现自己的微信自动抢红包,安全又快捷。辅助服务我们在 设置->无障碍 中,就可以看到手机中所有的辅助服务了。辅助功能通常是针对一些视力听力等有障碍导致使用手机有障碍的人群,做一些语言提醒等帮助他们更好地使用手机。因为辅助功能可以
2017-01-29 16:36:38 2280
转载 Android自动填充短信验证码
项目需求:Android开发中用户登录往会用到短信验证的功能,如果让用户先查看短信,然后再回到界面填写验证码,用户体验不是很好,有时就需要实现验证码的自动填写功能。做法:我以前的做法是先创建一个广播接收器,接受短信变化的广播,收到广播时,再把验证码提取出来。那时有用户测试反馈他的手机安装了其他一些短信应用或者手机本身限制了权限的情况下,这种方式可能起不了作用,即使把优先
2017-01-29 15:49:47 537
转载 年味并没有失效,只是你我早已过了那个时间段
小时候,每当过年,是小孩子最开心的事,无忧无虑,只管吃东西,穿新衣服,跟着大人去亲戚家串门。总之,小时候的年味永远定格在我们的记忆里。现在,一提到过年,大家都各种吐槽,似乎过年就像一杯白开水,索然无味。我想说的是,陪你的孩子好好过年吧,年味并没有失效,只是你我都已过了那个时间段而已。越长大越孤单,其实并不是我们真的孤单,只是我们再也回不到小时候,再也无法邂逅那时候的年味而已。
2017-01-29 15:05:14 683
JavaSsit.rar
2021-10-23
OpenGlTest.rar
2021-09-27
VideoChat.rar
2021-05-16
GitCode.rar
2021-05-05
xkzhangsan-xk-time-master.zip
2021-01-25
Camera录像视频视频DEMO
2020-09-30
HAL 层添加水印.rar
2020-09-30
无限循环,垂直水平滑动的fragment
2020-09-30
SocketConnect.rar
2020-05-22
ApDemo.rar
2020-05-22
中国移动多终端集成相关文档
2019-02-22
中国移动DM适配Android Demo
2019-02-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人