Android-OS
文章平均质量分 92
nullZgy
Android 开发。
展开
-
Android MTK 屏下指纹的调试过程记录
1, 自从Android 12 以后, SystemUI 里是自带了屏下指纹方案的. 具体代码是在 frameworks\base\packages\SystemUI\src\com\android\systemui\biometrics ,所有以 Udfps 开头的类均是跟屏下指纹相关。一些品牌手机都有了屏下指纹的功能,还算是个比较新颖的功能,最近有项目需要使用屏下指纹, 使用的是汇顶(Goodix)的指纹方案,经过坚难尝试,终于实现了屏下指纹录入与解锁,下面记录一些知识要点,同时分享给遇到相同问题的。原创 2024-04-11 15:06:59 · 574 阅读 · 0 评论 -
Javassist即时编译技术,热修复核心与原理
Java 字节码以二进制的形式存储在 .class 文件中,每一个.class 文件包含一个Java类或接口。Javaassist 框架就是一个用来处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字节码方面有深入的了解。 Javassist 可以绕过编译,直接操作字节码,从而可以实现代码的注入。所以使用 Javassist 框架的时机就是在构建工具 Gradle 将源文件编译成 .class 文件之后,在将 .clas...原创 2021-10-24 07:00:00 · 1002 阅读 · 0 评论 -
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 · 802 阅读 · 0 评论 -
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 · 3971 阅读 · 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 · 1864 阅读 · 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 · 804 阅读 · 0 评论 -
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 · 615 阅读 · 0 评论 -
从源码解析-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 · 887 阅读 · 0 评论 -
Activity启动流程源码分析
前言熟悉Activity的启动流程和运行原理是一个合格的应用开发人员所应该具备的基本素质,其重要程度就不多做描述了。同时,知识栈应该不断的更新,最新发布的Android 9.0版本相较于之前的几个版本也做了许多改动和重构,但是大体流程变化不大。本文基于Android 9.0版本源码,从Activity启动方法startActivity为切入口分析整个流程。相关类简介Instrumentation用于实现应用程序测试代码的基类。当在打开仪器的情况下运行时,这个类将在任何应用程序代码之前为您实例化转载 2020-07-23 10:51:08 · 181 阅读 · 0 评论 -
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 · 289 阅读 · 0 评论 -
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 · 955 阅读 · 0 评论 -
写给六月 写给旧时光
又是一年六月, 栀子飘香。又缝一年毕业季,青春散场。刚好在这个六月要离别。还是从周报开始说起,那时每周会写一个周报,周报的开始日期是。。。 与RMT的故事就是从那时候开始。...原创 2020-06-01 11:55:59 · 141 阅读 · 0 评论 -
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 · 3807 阅读 · 0 评论 -
如何将自己写的代码编进系统
有些时候,上层的App需调用一些系统功能,比如, 调用返回键, HOME键。但是上层的权限不够,这时,将app代码编放进系统里编译,这样任何的权限都可以获取。下面介绍如何将代码编进系统。首先,先将代码的一些不必要的文件/文件夹删除,如图,只需保留划线的3个。以下是删掉之后的:编写make文件,以下是详细的make文件。原创 2016-12-12 09:13:34 · 1809 阅读 · 0 评论 -
android中wifi原理及流程分析
wifi相关的文件位置:WIFI Settings应用程序位于 packages/apps/Settings/src/com/android/settings/wifi/JAVA部分: frameworks/base/services/java/com/android/server/ frameworks/base/wifi/java/a原创 2016-10-14 16:09:30 · 1734 阅读 · 0 评论 -
Android bluetooth介绍—连接
一、A2DP_CONNECT上层代码流程二、从HCI log中看AVDTP创建过程1、AVDTP l2cap建立过程2、AVDTP相关信令处理流程在HCI中的流程DISCOVER \GET_CAPABILITIES\SET_CONFIGURATION\OPEN\START\SUSPEND三、audiosink函转载 2016-10-14 10:58:38 · 1085 阅读 · 0 评论 -
android蓝牙源码分析
关键词:蓝牙blueZ A2DP、SINK、sink_connect、sink_disconnect、sink_suspend、sink_resume、sink_is_connected、sink_get_properties、AUDIO、DBUS版本:基于android4.2之前版本 bluez内核:linux/linux3.08系统:Android/android4.1.3.4转载 2016-10-14 10:36:50 · 1632 阅读 · 0 评论 -
Android.mk系统介绍
Android.mk语句介绍 1.LOCAL_C_INCLUDESLOCAL_C_INCLUDES额外的C/C++编译头文件路径,用LOCAL_PATH表示本文件所在目录。举例如下:LOCAL_C_INCLUDES += extlibs/zlib-1.2.3LOCAL_C_INCLUDES += $(LOCAL_PATH)/src2.LOCAL_CCLOCAL原创 2016-10-12 16:52:34 · 494 阅读 · 0 评论 -
模板方法模式【Template Method Pattern】
模板方法模式【Template Method Pattern】周三,9:00,我刚刚坐到位置,打开电脑准备开始干活。“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑。还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的口子打开了,要我们做悍马模型,虽然是第一个车辆模型,但是我们有能力,有信心做好,我们一定要…(中间省略20 分钟的讲话,如果你原创 2016-08-26 10:12:41 · 358 阅读 · 0 评论 -
什么是面向对象编程思想?
那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此你决不允许自己的脸上有油光,时刻保持活力。然而,你一定曾为这些“高深术语”感到过困扰。也许时至今日,你仍对它们一知半解。不过就在今天,这一切都将彻底改变!我将带领你以一种全新的高清视角进入奇妙的编程世界,领略涵泳在这些“高深术语”中的活泼泼的地气,以及翩跹于青萍之末的云水禅心。·内聚 内聚,通俗的来讲,就是自己的东西自己保管,自己的原创 2016-08-24 16:33:31 · 3231 阅读 · 0 评论 -
Android Launcher浅析(一)
Launcher桌面的一大功能就是支持左右滑动,这样的功能在现在的应用中使用非常广泛,并且有很多实现的方式,可以通过使用Fragment来实现也可以通过自定义的控件来实现。Launcher采用了后者,这一功能的实现在Workspace来完成。首先来看一下Workspace的继承关系: 从图中可以看出Workspace是PagedView的子类,而实际上滑动功能的实现是在PagedView中实现的原创 2016-05-27 11:45:01 · 5884 阅读 · 0 评论 -
Android Launcher浅析(二)
1,如何修改主菜单图标的位置? [DESCRIPTION] 默认主菜单图标在中间,如何修改它的位置? Launcher3: DynamicGrid.java文件 hotseatAllAppsRank = (int) (numColumns/2); //默认是列数除以2取整,可以设置为需要的值Launcher2: 1. 请修改pa原创 2016-05-30 10:34:41 · 5521 阅读 · 0 评论 -
android 获取第三方应用程序包名并启动
说明: 第一行,应用名,icon 第二行,启动类名 第三行, 应用包名 点击启动代码下载地址: Demo下载 package com.rmt.getappinfo;import java.util.Collections;import java.util.L原创 2016-06-24 11:54:51 · 1796 阅读 · 0 评论 -
单例模式【Singleton Pattern】
这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的对象:皇帝,中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡原创 2016-07-11 16:04:59 · 215 阅读 · 0 评论 -
Android中的FlexboxLayout
什么是Flexbox简单来说 Flexbox 是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方案,可以简便、完整、响应式地实现各种页面布局,并且 React Native 也是使用的 Flex 布局。你可以简单的理解为 Flexbox 是CSS领域类似 Linearlayout 的一种布局,但是要比 Linearlayout 要强大的多。比LinearLayou原创 2016-06-29 17:02:47 · 467 阅读 · 0 评论 -
Android Launcher浅析(三)
Launcher是系统启动后第一个启动的程序,是其它应用程序的入口,也就是我们的手机程序的桌面程序;一、Launcher的定义及构成:通过查看官方提供的Launcher源码可以知道其实Launcher也是一个Activity,不过它的intent-fliter有点特殊;<activity Android:name="Launcher"原创 2016-06-29 17:28:07 · 8661 阅读 · 0 评论 -
Android使用UncaughtExceptionHandler捕获全局异常
UncaughtExceptionHandler可以用来捕获程序异常,比如NullPointerException空指针异常抛出时,用户没有try catch捕获,那么, 系统会弹出对话框的“XXX程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。1、异常处理类,代码如下:原创 2016-06-30 13:52:56 · 515 阅读 · 0 评论 -
Android基本知识
Activity.startActivities() 常用于在应用程序中间启动其他的Activity。TextUtils.isEmpty() 简单的工具类,用于检测是否为空。Html.fromHtml() 用于生成一个Html,参数可以是一个字符串.个人认为它不是很快,所以我不怎么经常去用.(我说不经常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromH原创 2016-06-30 14:08:30 · 3156 阅读 · 2 评论 -
Android开发常识
1、Throwable接口中的getStackTrace()方法(或者Thread类的getStackTrace()方法),根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[];2、StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()原创 2016-06-30 13:50:10 · 351 阅读 · 0 评论 -
Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
app程序入口中为主线程准备好了消息队列而根据Looper.loop()源码可知里面是一个死循环在遍历消息队列取消息而且并也没看见哪里有相关代码为这个死循环准备了一个新线程去运转,但是主线程却并不会因为Looper.loop()中的这个死循环卡死,为什么呢?举个例子,像Activity的生命周期这些方法这些都是在主线程里执原创 2016-07-06 11:30:47 · 1130 阅读 · 0 评论 -
Android OTA升级
1,Build otapackage后system.img没有打包进去?Ota包里面缺失system img,原因是客户修改了prop里面的“ro.product.device” value值.尝试以下两种方式,ota_from_target_files中不需要设定 cust_dir1 这个值了:a. 修改ota_from_target_files 中的system_path:system_pa原创 2016-06-16 10:47:50 · 6743 阅读 · 0 评论 -
Java中System.loadLibrary() 的执行过程
System.loadLibrary() 是我们在使用Java的JNI机制时,会用到的一个非常重要的函数,它的作用即是把实现了我们在Java code中声明的native方法的那个libraryload进来,或者load其他什么动态连接库。算是处于好奇吧,我们可以看一下这个方法它的实现,即执行流程。(下面分析的那些code,来自于android 4.2.2 aosp版。)先看一下这原创 2016-07-07 16:19:02 · 1801 阅读 · 0 评论 -
如何解决安卓系统吃内存、侵占ram的问题?
我发现安卓吃内存的问题确实存在。有图为证。搞过 android 底层的应该都懂得那部分内存是哪来的。是的,那部分是 Linux 程序占用的内存,包含内核,驱动,C 应用程序框架,C++ API 等等所有不属于 Java 程序的进程。要想看到这些进程,shell 进去 ps 一下就好了。想 kill 的可以 kill ,因为这都是 Linux。从某种程度上说,你可以把原创 2016-07-28 17:43:40 · 3645 阅读 · 0 评论 -
BaseActivity 里到底应该写哪些内容?
一般应用开发都会写一个 BaseActivity 来做一些公共内容的整理封装,一般哪些内容需要写呢,有哪些需要注意的地方?修改BaseActiviy的继承为Fragment(可以实现dialogfragment)增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本添加快速点击导致的各种问题。 package com.exa原创 2016-07-21 11:43:41 · 2785 阅读 · 0 评论 -
Java RTTI和反射的区别?
网上看到他们的区别是:如果不知道一个对象的准确类型,RTTI会帮助我们调查。但却有一个限制:类型必须是在编译期间已知的。而反射使我们能在运行期间探察一个类,RTTI和“反射”之间唯一的区别就是:对RTTI来说,编译器会在编译期打开和检查.class文件。但对“反射”来说,.class文件在编译期间是不可使用的,而是由运行时环境打开和检查 ,我们利用反射机制一般是使用java.lang.reflec原创 2016-08-05 18:19:56 · 3076 阅读 · 0 评论 -
让你觉得相见恨晚的方法、类或接口?
Android(Java)开发中,有哪些方法、类或接口很实用,但是你却没能在第一时间知道它?有一天你发现它时,只想说一句:“What the f**k,还有这个!”1、Throwable接口中的getStackTrace()方法(或者Thread类的getStackTrace()方法),根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement原创 2016-08-03 12:02:23 · 1419 阅读 · 0 评论 -
android 5.1编译问题
1,如何打开一种语言以及如何设置开机默认语言 ? 一、如何打开语言支持计划中的语言? AndroidKK JB 请打开文件:mediatek/config/${Project}/ProjectConfig.mk 找到宏MTK_PRODUCT_LOCALES,把所需的语言代码添加进去,原创 2016-08-23 15:32:24 · 2851 阅读 · 0 评论 -
Android SystemUI源码分析(一)
最近,在做SystemUI的项目。公司主要是做汽车后视镜产品的。 在后视镜中嵌入了android OS, 主要有导航,语音,蓝牙控制等等功能。MTK平台。对于非手机的产品来说,改动还是蛮大的。附:我司产品效果图。PS : 改动Launcher的地方也挺大的。说正题吧。对于手机来说SystemUI指的是:StatusBar(状态栏)、NavigationBar(导航栏)。 对于Tablet或者是TV原创 2016-05-27 10:53:10 · 2753 阅读 · 0 评论