自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (23)
  • 收藏
  • 关注

原创 android为第三方提供部分系统接口

摘要:本文对系统模块进行改造,提供广播等形式的接口对外提供无法直接调用的系统级别接口,实现部分功能的集合。如果是广播形式,需要后台允许,避免被系统拦截。不定期更新。

2025-03-05 14:36:27 611

原创 交换64位整数的第i位和第j位

题目:交换64位整数的第i位和第j位。

2025-02-19 15:05:40 231

原创 android launcher拖动图标释放错位

由于为了设备流畅把所有动画效果设置为0.5,不设置为0是因为锁屏在开机时会有闪黑屏的现象。在此背景下,测试发现在拖动桌面图标时,在图标动画过程中错位时释放图标,则图标会留在错位的位置,不会自动对齐。原因就是动画导致的,追踪动画的代码非常困难,只能通过各种anima关键词添加log,找到触发的位置进行逻辑修改。标志位FeatureFlags.REMOVE_DRAWER控制,默认true。最终发现是拖动时会有上下振动的动画效果,去掉即可。

2025-02-12 10:42:13 454

原创 android 安装第三方apk自动赋予运行时权限

摘要:行业机使用场景点击运行时权限很麻烦,而随着android的演进,对于权限的管控越发严格。故本文通过对系统的修改实现第三方app在运行时直接获取全部权限。通过属性ro.perms.force_grant控制功能开关。

2025-02-12 10:00:49 328

原创 GMS认证相关问题汇总

解决方案:此项是google issue: https://android-review.googlesource.com/c/platform/prebuilts/sdk/+/3035932。解决方案:chmod +x prebuilts/module_sdk/art/go/current/host-exports/x86_64/bin/*1、检查[ro.build.version.security_patch]和[ro.vendor.build.security_patch]值是否一致。

2025-02-11 16:08:15 1245

原创 android裁剪系统app

摘要:行业设备不需要过多的原生app,同时为了使内存得到合理的使用,因为需要裁剪掉部分系统app和组件。本文通过对于makefile的改造,将需要删除的app归类为一类TARGET,在编译全版本时过滤掉,实现裁剪的效果。注意,我们将TARGET_REMOVE_PACKAGES放在PRODUCT_PACKAGES之后,是因为删除后续添加的操作,在开发者把控范围之内。完成后,我们就可以在项目makefile中,通过TARGET_REMOVE_PACKAGES添加需要删除的模块名。

2025-02-10 10:41:06 311

原创 android 默认开启位置信息中WLAN扫描和蓝牙扫描

默认开启位置信息中WLAN扫描和蓝牙扫描有助于在Wi-Fi或者蓝牙关闭状态下,app或者services同样可以扫描Wi-Fi与蓝牙从而改善位置信息的精准度。

2025-02-10 10:06:09 281

原创 android动态设置是否允许应用卸载

通过广播设置全局参数控制应用是否允许卸载,全局参数在Launcher和PackageInstaller两个模块中使用到。此功能可用于MDM后台控制是否允许设备卸载应用。

2025-02-08 16:57:51 305

原创 android framework原生功能配置改动

这篇blog会不定期更新关于framework层比较小的改动,多是基于已有的android原生代码配置。

2025-02-08 15:40:47 221

原创 android设置添加设备QR码信息

摘要:客户衍生需求,通过扫QR码快速获取设备基础信息,并且基于POS SDK进行打印。2. preference布局3. 实现QR码的生成使用的是google公开的com.google.zxing

2025-02-08 15:16:41 794

原创 android隐藏虚拟按键recents button

通过android sdk工具monitor定位recents button id并全局搜索SystemUI模块,找到定义位置,然后根据逻辑找到相关功能的方法进行逻辑修改。

2025-02-08 14:41:40 284

原创 android user版本默认usb模式为充电模式

默认为充电模式如果按照同样的方式修改后,虽然插入usb后确实不会弹出mtp,但是在设置中-连接的设备将无法显示usb切换选项。本文通过mtpservice的角度,将默认usb模式设置为充电时可以在设置中正常显示usb切换菜单。一般客户会需要user和debug版本的状态保持一致,即同时为mtp或者同时为充电(none)。android插入usb时会切换至默认设置的模式,debug版本为adb,user版本为mtp。如果没有实际进入存储模式,则不进入mtp模式。默认为mtp模式网上资源很多,不作赘述。

2024-11-29 11:19:46 510

原创 android通过广播设置默认启动器

-- packages/apps/PermissionController/AndroidManifest.xml (版本 1951)+++ packages/apps/PermissionController/AndroidManifest.xml (版本 1965)后台允许广播收发权限可以自行定位代码,此处仅做记录。

2024-11-18 11:12:40 473

原创 android 10 后台启动activity

Android 10(API 级别 29)及更高版本会限制应用何时可以启动 activity 背景。这些限制有助于最大限度地减少对用户的干扰, 让用户能够更好地控制其屏幕上显示的内容。本文以此为出发点,基于展锐平台对系统代码进行改造,通过白名单的方式允许部分应用可以从后台启动activity。

2024-10-28 10:38:57 552

原创 android广播实现PIN码设置

广播action:android.intent.action.LOCKDEVICEboolean extra: lock (true:锁机/false:解锁)String extra: password (6位数字密码,后续代码会进行合法性检测)

2024-10-10 13:55:19 625

原创 android mtk camera修改default picture size & video size

示例中为720x1280,对应的比例为16:9,此时获取模组支持的size后,会选取16:9中最大的值为默认值,博主的设备选择的是2M(16:9) 1920x1088的,这样打开相机时,预览全屏。出于用户体验,全面预览比较合适,但是客户的使用场景需要默认最大,故产生此需求,修改patch如下。但是实际最大为5M(4:3) 2560x1920,选择此尺寸,预览并不会全屏,上下会有黑条。MTK的Camera app会根据屏幕尺寸适配最合适的拍照和录像尺寸。

2024-05-27 11:37:05 676

原创 if-else优化

【代码】if-else优化。

2024-04-16 16:38:12 223

原创 android通过广播打印ram使用信息

在内存非常吃紧的情况下,android设备会开始kill部分非系统进程甚至系统进程来保证基本的系统运行。在这种情况下如何获取设备过去某段时间的ram使用情况至关重要。我们可以通过此途径,设计一套通过广播打印内存信息的方式以应对各种调试情况,此文仅将内存信息通过log的形式后台打印获取。1.发送的广播需要在BroadcastQueue.java特别处理,避免被系统拦截。3.RamInfo参考开发者模式中的方式获取过去某段时间的内存使用情况。通过开发者模式中的“内存”可以完美得知设备内存使用信息。

2024-02-20 10:18:14 452

原创 Android状态栏/通知栏图标白底问题

从android L版本开始,为了统一图标样式,会将通知栏、状态栏等显示图标处统一为白底或黑底,以促使开发人员规范图标设计。从现象看,状态栏会显示一个白底的方框;下拉通知栏展开时的图标为白底方框加圆框,不展开时为黑底方框。

2024-02-01 13:49:23 1611 1

原创 android通过广播打印RAM信息

int型参数index:0 - 3h, 1 - 6h, 2 - 12h, 3 - 24h。广播:com.android.settings.action.RAM_INFO。代表过去时间app使用ram情况(平均/最大占用)通过广播打印ram相关log。

2023-12-04 11:23:10 345

原创 android高版本适配使用Tools.java

注意:请更新对应平台的api和sepolicy,笔者使用展锐T606 android 13平台,对应修改如下。

2023-12-04 09:59:53 315

原创 android 省电模式

设置一电池界面中“省电模式选择”目前支持三种模式选择:智能省电模式、低电量模式、超级省电模式。

2023-11-28 10:07:41 805

原创 android 11安装apk自动获取权限

为获取除android.permission.MANAGE_EXTERNAL_STORAGE外的所有权限。为了解决android.permission.MANAGE_EXTERNAL_STORAGE,需要额外添加enableManageExternalStorage(packageName, resAppId);由于android 11以上版本对于读写权限的进一步限制,安装的apk获取权限的流程又加了一步,对于客户来说多半步也算复杂,根据之前的经验,在安装流程后打开全部权限即可。

2023-11-16 14:45:54 2120

原创 android 禁止拖动桌面时钟小组件

本文将介绍一种禁止拖动桌面时钟小组件的方案。首先,通过添加trace log追踪至拖动的唯一入口;其次,获取拖动对象的详细信息并区分是否是对应的小组件;最后,禁止进入拖动流程。

2023-09-21 15:24:18 407

原创 android 默认开启谷歌定位精准度

本文主要提供一种默认开启谷歌定位精准度开关的方案。通过调试时打开/关闭开关对比SettingsProvider的数据变化,在开机收到ACTION_BOOT_COMPLETED广播后,主动修改并填充数据,实现默认打开的需求。

2023-09-19 11:19:36 1486

原创 android 更新时区文件

本文主要介绍android 5.1与android 9.0更新时区文件的方法。

2023-07-24 18:50:50 765

原创 android 定时重启设备

本文主要介绍一种定时重启设备的方案,目的是对于低内存设备,防止其由于长时间不关机且应用消耗过多RAM导致卡顿甚至无法开机的现象。基本方案是通过AlarmManager设置定时闹钟唤醒系统并且判断是否符合重启条件,从而进行弹框提醒和倒计时重启。

2023-07-18 16:37:10 1118

原创 android Launcher3定制

本文基于高通SC200E 2290和展锐T606平台对于原生Launcher3进行UI和功能的定制。

2023-05-06 18:08:42 24

原创 android 禁止状态栏下拉

认证为了防止误操作与客户霸屏应用需求产生了此需求。禁止状态栏下拉从UI的角度进行分析,即难又容易。难的是android的SystemUI设计层层嵌套,即使使用工具进行分层分析,也需要耐心;容易很好理解,只要是UI界面的代码,总是能修改的。不同的android版本,不同的芯片厂商,对于SystemUi的改造大相径庭,从UI变化的角度切入很容易破题。

2023-03-13 14:14:50 1230

原创 ubuntu16.04LTS安装kdesvn

摘要:本文主要介绍了ubuntu16.04LTS安装kdesvn1.6.0版本的过程。由于编译环境的更新,ubuntu 14.04已经无法继续编译android 12的系统,在更新至16.04后,svn这个常用的工具自然也需要重新安装,但是16.04的应用商店只有rapidsvn,没有kdesvn,搜索许多博客也并没有完整的安装教程,此文章由此而来。...

2022-06-07 13:51:00 732

原创 android系统侧修改控件焦点属性

问题:客户外包开发的apk团队解散了,使用场景只使用实体按键,通过Enter进入apk后,会自动将焦点锁定在返回键上,导致操作不便捷,操作快会直接退出apk。要求强制不要将焦点自动锁定至返回键。按键焦点的详解可以参考:Android强行进阶—按键事件&焦点事件攻略根据抓log排查,找到一个必经之路,直接上patch:Index: frameworks/base/core/java/android/view/View.java================================

2021-08-13 14:35:12 304 4

原创 android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退

问题描述:如题,在调试android 9 高通msm8953平台时,客户反馈应用在允许Manifest.permission.WRITE_EXTERNAL_STORAGE权限后,应用闪退。从log分析是07-22 09:56:02.331 I/ActivityManager( 1658): Killing 9824:com.xxx.xxx/u0a123 (adj 100): permission grant or revoke changed gids系统认为gids变了就要杀掉应用参考:Andro

2021-08-03 15:01:56 2987

原创 android sd卡权限

把android P上被谷歌架空的media write权限补回来,解决外置存储卡复制、移动等操作,提示需要root权限的问题。frameworks/base/data/etc/platform.xml <permission name="android.permission.WRITE_MEDIA_STORAGE" > <group gid="sdcard_r" /> <group gid="sdcard_rw" />

2021-06-07 11:50:52 626 1

原创 Java与模式学习笔记 —— 策略(Strategy)模式

策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。...

2021-05-11 11:33:51 283

原创 Java与模式学习笔记 —— 桥梁(Bridge)模式

将抽象化与实现化脱偶,使得二者可以独立地变化。桥梁模式的结构桥梁模式是对象的结构模式。如上图所示,系统含有两个等级结构:由抽象化角色和修正抽象化角色组成的抽象化等级结构。由实现化角色和两个具体实现化角色所组成的实现化等级结构。桥梁模式所涉及的角色有:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象(Refined Abstraction)化角色:扩展抽象化角色,改变和修正父类对抽象化的定义。实现化(Implementor)角色:这个角色

2021-05-06 14:16:52 460 2

原创 Java与模式学习笔记 —— 门面(Facade)模式

门面模式是对象的结构模式。外部与一个子系统的通信必须通过一个统一的门面对象进行。现代的软件系统都是比较复杂的,在划分成几个子系统之后,一个子系统的客户端往往与子系统内部的许多对象打交道才能完成一个功能,使得系统的逻辑变得复杂,维护成本提高,复用率降低。什么是门面模式门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式的门面类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与门面对象打交道,而不需要与子系统内部的很多

2021-04-26 11:38:54 247 1

原创 Java与模式学习笔记 —— 享元模式(Flyweight Pattern)

享元模式是对象的结构模式,以共享的方式高效地支持大量的细粒度对象。共享的关键是区分内蕴状态和外蕴状态。内蕴状态:存储在享元对象内部的,并且是不会随环境改变而有所不同的。一个享元可以具有内蕴状态并可以共享。外蕴状态:随环境改变而改变、不可共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。单纯享元模式的结构在单纯享元模式中,所有的享元对象都是可以共享的。简单实现的结构如下图所示。抽象享元(Flyweight)角色:此角色是所有的具体享元

2021-04-19 17:21:27 179

原创 Java与模式学习笔记 —— 代理(Proxy)模式

代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构代理模式所涉及的角色有:抽象主题角色:声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真实主题的地方都可以使用代理主题。代理主题(Proxy)角色:代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主体;控制对真实主题的引用,负责在需要的时候创建真实主题对象和删除真实主题对象;代

2021-04-01 10:31:32 179

原创 Java与模式学习笔记 —— 装饰(Decorator)模式

装饰模式又名包装模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。一、装饰模式的结构装饰模式使用原来被装饰的类的一个子类的实例,把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展是完全透明的。模式的类图在装饰模式中的各个角色有:抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。装饰(Decorator)角色:持有一个构件(Component)

2021-03-31 16:38:40 162 1

原创 android原生launcher3替换apk桌面图标

Android 8.1 去掉 Launcher3 默认给 icon 增加的白边android的新特性,目前定制后已将此功能关闭,但是chrome始终有白色的一圈,定位在chrome apk自己的android:icon资源就是如此,由此引发出与其他的apk图标风格不一致,看起来别扭,就想从launcher替换一下。参考:Android P 上Launcher3 中实现两种方式替换桌面图标由于安装和预置在显示桌面图标的代码不同,所以通过trace代码,找到了公共必走的路径:packages/apps

2021-03-30 17:41:57 2250

android水印资源图片

放在drawable-xhdpi文件夹

2024-02-26

android+printserver+esc

android+printserver+esc

2023-12-04

android+esc打印demo

android+esc打印demo

2023-12-04

WifiHotpot.zip

本资源为实例代码,通过反射调用设置wifi热点的ssid和密码,在android 5.1上可以直接控制开关,但是在android 9.0上只能通过别的方法,可以参考我的博文进行修改。

2020-12-07

kba-170829000612_8_how_to_pass_bqb_tests_with_pts.pdf

本资源为QC为蓝牙BQB认证开放的参考文档,包括测试前的基本步骤、PTS设置、特殊case说明、SAP说明

2020-10-16

裁剪原生联系人app(不支持多帐户)

由于不支持多帐户功能,根据属性ro.rm.account_settings裁剪系统原生联系人app中有关的菜单/设置项。

2020-09-21

android原生设置休眠添加永不休眠选项

资源为代码patch,主要修复设置-显示-休眠中无永不休眠选项。为防止语言资源导致报错,重新在arrays添加选项,永不休眠原理只是将时间设置为Integer.MAX_VALUE

2020-09-08

android监听按键后发送按键广播,包括DOWN和UP

本资源为代码功能patch,主要负责监听按键并且发送按键广播,包括DOWN和UP,sp在收到广播后可以进行相应的处理。

2020-09-08

高通平台camera HAL3添加raw12数据流传输

此patch为将raw12数据流传输给上层,高通平台默认支持raw10和raw16,按照基础框架将raw12添加进camera HAL3代码中即可。

2020-08-26

android 5.1全按键背光

此patch为实现有按键键盘的移动设备添加全按键背光的功能。主要是在PhoneWindowManager监听按键事件后设置setButtonLightEnabled

2020-08-26

android仿华为删除风格

patch为仿华为的删除风格,布局方面还有待优化,和长按图标显示的快捷方式shortcut兼容性还有待改善,仅仅一个初步的代码框架。

2020-08-26

android系统添加水印

此patch为系统添加水印,类似于安全模式的显示在系统上层,ActivityManagerService实现。

2020-08-26

android P高通平台支持google nlp定位

androiid P高通平台仅支持gps定位,此patch为使平台支持网络定位。由于需要使用google定位服务,必须在外网环境下才能定位成功,并且第一次定位时间较长。

2020-08-26

android P静默安装、卸载patch

静默安装、卸载在android P上实现功能代码,由于权限问题,需要将功能封装在Settings模块中,并且修改部分framework代码使功能正常。

2020-08-26

android 5.1静默安装、卸载patch

支持android5.1静默安装、卸载代码,封装在PackageInstaller模块内,在执行时可能需要修改部分framework代码使功能正常使用。

2020-08-26

android_bluetooth_profiles_feature.txt

整理了android高通平台蓝牙所支持的功能profile,根据BQB认证需求,关闭和打开部分profile。

2020-06-30

How_to_get_GMS_apps_from_GAPPs_and_integrate_them_into_AOSP.pdf

此文档为移远提供的android N平台如何集成基本的GMS框架,使得个人用户可以激活Google账户使用基本的功能。

2019-12-30

Integrate_gapps_for_Android9.0_klein_20181219.pdf

此文档为移远提供的android P平台如何集成基本的GMS框架,使得个人用户可以激活Google账户使用基本的功能。

2019-12-30

SC60 LCD 屏幕旋转方向(固定)、像素密度修改_Solution_v02.docx

移远模块SC60文档,支持屏幕旋转方向、像素密度修改。 根据prop属性控制,实时刷新旋转。

2019-11-08

80-p3580-1_a_cookie_for_android_build.pdf

80-p3580-1 page 24 描述如何在QC平台device下创建项目。 当然该文档还包括其他和平台相关的编译说明,例如Build Configuration and Usage/Android Build Flow/Module Build/Potential Error in Build等等

2019-05-27

跟我一起写Makefile

android平台系统级别的开发必须要学会写makefile,网上没有系统地介绍makefile,这一篇文章很详细地介绍了如何写makefile,值得一看。

2017-08-31

深入理解Android(卷Ⅰ)

深入理解Android(卷Ⅰ),从网上查找到的资源,为了保存,故上传到优快云。深入理解android系列是很好的介绍android的书籍。

2017-08-31

presentation__changes_in_android_l

简要描述了android L的一些改变,包括Bluetooth、WLAN、Telephony/RIL、GPS、Sensors、Kernel、Camera、Display、Audio、Video、Graphics

2017-08-31

android multimedia framework overview

android多媒体框架概述(高通),主要包括MediaCodec、MediaCodec Call Flows、NuPlayer、ExoPlayer、MediaRecorder、MediaRecorder Call Flow

2017-08-31

camera interpolation

高通平台camera插值需求

2017-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除