
Android系统
文章平均质量分 86
峥嵘life
目前职业:android开发工程师
2016年江西农业大学计算机信息工程学院毕业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android初学者系统开发学习路线参考
这篇文章为Android系统开发初学者提供了一个为期一个月的学习路线规划。第一阶段主要围绕UI开发展开:第一周学习开发环境搭建、四大组件和基础布局;第二周进阶学习RecyclerView、自定义View和动画;第三周掌握Fragment交互和数据存储;第四周重点学习网络请求和Kotlin基础。计划强调每日文档总结和阶段性实战,通过新闻资讯APP项目整合所学知识,帮助新人快速掌握Android开发核心技能。原创 2025-08-08 17:03:03 · 668 阅读 · 0 评论 -
Android14 通过AMS 实例获取前台Activity 信息
摘要 本文介绍了在Android14系统中通过ActivityManagerService(AMS)获取Activity信息的方法,重点分析了系统签名应用才能获取后台应用信息的限制。文章对比了获取前台Activity(getRunningTasks)、最近任务(getRecentTasks)和存活进程(getRunningAppProcesses)三种方式,指出getRunningTasks仍可有效使用,而新版getAppTasks和UsageStatsManager方法存在局限性。同时解释了后台任务与缓存原创 2025-08-08 09:57:08 · 1097 阅读 · 0 评论 -
Android 蓝牙默认名称设置分析总结
Android蓝牙默认名称设置分析总结 本文分析了Android系统中蓝牙默认名称的设置方法,基于Android 13源码。研究发现蓝牙名称与ro.product.model属性相关,而非常见的def_bluetooth_name或Settings属性。文章提供了四种设置方法: 修改ro.product.model属性值(需在build.prop或.mk文件中配置) 使用Settings.Secure.bluetooth_name记录蓝牙名称(仅用于查询) 应用层通过BluetoothAdapter.set原创 2025-06-14 18:07:27 · 1240 阅读 · 0 评论 -
Android设置界面层级为最上层实现
本文介绍了在Android系统中强制设置特定应用界面为最顶层的方法,通过修改系统底层代码实现,但存在Home键和后台任务失效等后遗症。文章还分析了悬浮框的实现代码、窗口类型层级关系和使用注意事项,包括权限管理、窗口类型选择、进程存活机制等。同时提供了查看当前窗口状态的系统命令,帮助开发者理解悬浮框与系统层级的交互原理。需要注意的是,这种强制置顶方式仅适用于特殊系统应用场景,普通开发建议使用标准悬浮窗实现方案。原创 2025-05-27 19:16:23 · 1354 阅读 · 0 评论 -
Android usb网络共享详解
Android USB网络共享功能允许设备通过USB连接将移动网络或Wi-Fi网络共享给其他设备(如电脑)使用。该功能涉及底层网络协议、USB通信和系统服务等多个层面。使用前提包括设备支持ADB并打开USB开关,原生Settings中显示USB网络共享开关,以及代码中检测USB网络共享是否支持。若开关无法启用,可能是系统USB未开启或未连接ADB等原因。Settings中的相关代码控制USB网络共享的显示与启用,核心组件包括UsbManager、TetheringManager等。原创 2025-05-14 21:47:40 · 1819 阅读 · 0 评论 -
Android 蓝牙开发调试总结
如果开发蓝牙相关功能,必须先掌握基本api知识和相关广播的监听;蓝牙用的功能基本都是系统签名权限的系统应用,比如Settings;本简单介绍蓝牙开发基本知识,有兴趣的可以看看。蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。原创 2025-05-07 22:35:43 · 1278 阅读 · 0 评论 -
Android 有线网开发调试总结
如果开发有线网相关功能,必须先掌握基本api知识和相关广播的监听;Android13 之后有线网是有暴露开关控制api的,Android11 之前是需要自己添加开关控制接口的。本简单介绍有线网开发基本知识,有兴趣的可以看看。原创 2025-05-07 22:33:46 · 1240 阅读 · 0 评论 -
Android 热点开发调试总结
如果开发热点相关功能,必须先掌握基本api知识和相关广播的监听;热点用的功能基本都是系统签名权限的系统应用,比如Settings;有些方案中需要设置热点不同的信道值,这个是Settings没有的功能;本简单介绍热点开发基本知识,有兴趣的可以看看。原创 2025-04-28 21:32:48 · 1230 阅读 · 0 评论 -
Android wifi开发调试总结
如果开发wifi相关功能,必须先掌握基本api知识和相关广播的监听;wifi调用的功能基本都是系统签名权限的系统应用,比如Settings;本简单介绍wifi开发基本知识,有兴趣的可以看看。adbshell 的 ifconfig可以获取当前设备网络节点信息;这些信息使用Android代码也是可以获取的;Android 获取网络ip有多种方式,有时候某种方式获取失败的情况下;原创 2025-04-28 21:04:36 · 1578 阅读 · 0 评论 -
Android 下拉栏中的禁用摄像头和麦克风隐藏
Android下拉栏中有摄像头和麦克风禁用功能;但是点击禁用后会有些bug,比方多视窗异常,信源声音异常等问题;所以目前做法是直接隐藏掉禁用功能,算是规避手段了,出现问题就不问题删除,哈哈,当然如果有能力和时间去解决这个问题是更好的;市场上大部分手机上应该是解决了这些问题的,也可能是在某些场景进行了优化;我这里开发的是大屏设备,没有手机那么多顾虑和要求所以隐藏UI是目前最好的做法。如果你也有隐藏下拉栏UI或者简单修改下拉框UI的需要可以看看本文。原创 2025-04-19 19:50:51 · 1181 阅读 · 3 评论 -
Android14 系统左右声音通道设置代码
Android 系统左右声音通道设置在有些场景下会有用,信源或者多音箱的条件下可能需要设置,还有些需求比如:用户偏好设置、将声音定位到特定方向,提升沉浸感。比如耳机接入Android设备后,设置声音通道左平衡,只有左边的耳机出声;设置声音通道右平衡,只有右边的耳机出声;上面这样就可以简单验证系统左右声音通道是否有效。网上基本找不到系统级的设置左右声音通道的代码,即使使用AI工具也搜不到。网上设置左右声音通道都是针对某个播放媒体对象进行设置,并不是全局的。原创 2025-03-19 17:51:50 · 912 阅读 · 0 评论 -
Android14 Log.isLoggable判断的分析
Android系统代码或者系统应用代码中经常有一些Dug打印,是可以在调试模式中查看的;比如:if(Log.isLoggable(TAG, Log.DEBUG)) {XXX}或者定义 boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);后面有些打印使用这个DEBUG属性来决定是否打印某些日志。之前我不太懂,也有看过源码,但是看到了native再后面就追不下去了,就没管了。后面各种搜索和研究后又有了新的发现。原创 2025-03-19 16:51:21 · 1087 阅读 · 0 评论 -
Android wifi的开关Settings值异常分析
有个项目需要通过开机后另外判断wifi的Settings属性值wifi_on进行wifi的一些处理。但是使用同一个系统软件包,烧录在两个板载有点差异的设备上,发现打开wifi后两个设备的wifi_on的值居然不一样;wifi开启状态一个显示为1;另外一个异常显示为2;代码值中只判断了值为1的处理,导致有些逻辑未执行。但是通过WifiManager获取wifi的开启状态,发现wifi又是开启的;有点奇怪,想分析看看。后面分析了一下系统的代码,有一些发现。下面简单分享介绍一下。原创 2025-03-14 19:14:52 · 1245 阅读 · 0 评论 -
Android adb shell dumpsys audio 信息查看分析详解
Android 如果要分析当前设备的声音通道相关日志,仅仅看AudioService的日志是看不到啥日志的,但是看整个audio关键字的日志又太多太乱了,所以可以看一下系统提供的一个调试指令dumpsys audio 返回的信息进行定位分析,里面主要包含了AudioService启动时间,当前设备的音频流指向,音频流的声音大小,音频外设的连接情况,音频播放记录,音频外设连接断开记录等等信息。不同的Android 系统使用 dumpsys audio 命令返回的日志信息可能会有差异,原创 2024-11-23 16:12:13 · 2496 阅读 · 0 评论 -
Android13、14特殊权限-应用安装权限适配
Android13、14 的源码发现一个问题系统签名应用声明了应用安装权限,但是安装应用的时候还是没有安装应用权限,需要在原生Settings中的特殊权限设置一次权限打开才有安装应用权限。本文只介绍解决方法,里面framework的代码是实际项目的修改中拿来的,不是我自己研究的,不做过多分析。原创 2024-10-24 19:33:56 · 4649 阅读 · 2 评论 -
Android13 授予特殊应用权限代码
Android 权限类别有啥,网上很多是说有普通权限和危险权限,其实是不准确的。Android 权限分为普通权限,动态权限,特殊权限,私有权限。几种权限的简单说明:权限的使用都要在AndroidManifest.xml中声明就行,即使是系统应用也是要声明后才能获取到。1、普通权限: 不用申请直接能获取到;比如:INTERNET 网络权限2、动态权限:普通应用需要动态申请,系统应用直接能获取到;比如:WRITE_EXTERNAL_STORAGE 读写权限。原创 2024-10-19 19:04:30 · 2259 阅读 · 0 评论 -
Android adb 命令查询service相关介绍
adb查询系统中的service用什么命令?很多人会说是service list | grep XXXService但是你会发现四大组件的service并不能这样查询到,四大组件的Service查询,需要用dumpsys activity services | grep XXXService两种Service查询有啥区别吗?需要什么命令可以杀死这个Service。本文讲解一些adb查询和控制Service相关的知识;原创 2024-10-19 11:43:23 · 2156 阅读 · 0 评论 -
Android14 手机蓝牙配对后阻塞问题解决
Android13、14 手机配对蓝牙后会造成阻塞问题。Google 问题。测试了Android13 Google 手机也是有这个问题。具体复现步骤和现象就是:一台Google手机蓝牙配对另外一台手机的蓝牙后,Google 手机重新扫描蓝牙设备就会无法扫描到其他设备,需要等待20多秒超时处理后才能重新看到扫描的蓝牙设备。原创 2024-09-21 19:27:45 · 1784 阅读 · 0 评论 -
Android14 蓝牙启动流程
基于Android14 分析了一下蓝牙的开启流程,本来以为比较简单的,但是发现具体处理会有点绕。主要是从应用上层到cpp层蓝牙的开启过程代码进行的一定的分析。BluetoothAdapter、BluetoothManagerService、AdapterService 是蓝牙开启最相关的上层代码。这个对蓝牙开启失败、或者蓝牙其他流程有问题有一定的分析研究价值,有助于确定是哪个流程出现了问题。这个介绍比较简单一点,没有到后面 AdapterService 的代码。原创 2024-09-21 19:26:04 · 3056 阅读 · 1 评论 -
Android14 待机关机蓝牙自动关闭分析解决
Android14 设备蓝牙开启的情况,待机关机后再开机出现有概率蓝牙关闭的问题。设备开机后手动打开蓝牙是可以正常打开的。通过分析发现是上层的蓝牙服务中有监听关机广播,有关闭蓝牙动作。但是为啥会出现有概率关闭呢,具体原因是因为有时候蓝牙关闭流程没走完或者有些蓝牙关闭流程未走到设置蓝牙关闭属性的情况。原创 2024-09-14 19:14:12 · 3244 阅读 · 0 评论 -
Android14 蓝牙 BluetoothService 启动和相关代码介绍
蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。蓝牙开关状态不记忆或者打开异常就可以看看BluetoothManagerService的日志,里面有打开关闭相关过程日志和时间点,这个对问题分析有一定的帮助。本文主要介绍一下 framework 相关的几个类,原创 2024-09-14 19:06:02 · 4504 阅读 · 5 评论 -
Android 源码中jni项目 加载so目录小结
如何实现把so放到Android设备目录system/lib64下面,系统应用apk就能自动获取里面的so?如果实现了这个功能,后续修改了jni具体功能实现,就不用修改这个apk的代码,只要替换这个so就可以完成不同的实现了。其实这个功能不难,只要是系统源码编译的应用就可以;具体如何编译可以看本文最后的介绍。本文主要介绍一下,系统源码应用编译后,load so的顺序:顺序就是优先apk目录下的 lib/arm64/,然后 system/lib64/,有的还会加载 vendor/lib64/原创 2024-09-06 20:19:29 · 1591 阅读 · 0 评论 -
Android 系统源码项目加载预编好的so库
Android 系统开发中会源代码有加载so库的情况,本文进行简单介绍。Android Studio 项目加载so库,已经有介绍过:Android Studio加载so和使用so还是比较方便的,环境OK的情况,几分钟就可以完成验证测试了。但是如果要在系统源代码Java里面加载和使用so就比较麻烦了,主要通过Android.mk或者Android.bp编译加载so,反正网上的代码写的mk/bp基本都是不行的。本来以为只是介绍一下编译使用的Android.mk或者Android.bp就可以了,原创 2024-09-06 20:14:18 · 2204 阅读 · 2 评论 -
Android14 以太网共享功能 相关代码简介
Android 的以太网共享功能是啥?其实就是 Android设备接入一个网线后,再接入电脑,电脑就可以分配到到一个ip;这里的Android 设备就相当于一个路由器。如果Android设备可以正常上网,那么电脑也是可以上网的;Android 的以太网共享功能简单的说就是把Android设备的网络通过网线的形式共享给其他设备。Android手机设备基本没有网口,可以通过usb Hab转接网口;一些调试用的Android 设备是保存有网口的,可以直接接入网线。原创 2024-08-25 19:04:08 · 3713 阅读 · 1 评论 -
Android 系统连接WIFI显示网络连接受限分析处理
Android 系统连接WIFI提示网络受限处理这个是比较常见的问题了,这里简单记录一下。Android原生系统连接国内wifi网络会提示不可用,之后显示网络受限,但是实际可以上网;连接国外VPN网络是没有这个问题的。这个问题的原因就是系统连接上wifi后校验网络的时候,使用的是一个国外的url地址,但是国内外访问这个地址是无法返回数据的,所以系统才会判断该wifi无法连接网络。要解决这个问题,有两种方法:一个是替换了校验网络的url地址,另外一个是去除这个校验过程。原创 2024-08-25 19:02:33 · 6976 阅读 · 0 评论 -
Android14 蓝牙设备类型修改
Android 蓝牙设备类型有啥用?就是显示蓝牙类型作用。Android设备打开蓝牙后,其他手机可以搜到该蓝牙设备,一般显示为电话或者平板。但是很多源码编译出来的系统默认是显示耳机类型,那么如何修改呢?如果是Android11 或者更旧的版本可以参考:XXX.h //不同的方案具体目录不同,一般在device或者system#define BTA_DM_COD {0x5A, 0x02, 0x0C} // 手机端搜索到的蓝牙显示手机图标。原创 2024-08-18 18:40:12 · 3013 阅读 · 0 评论 -
Android14 Settings属性断电上电不记忆问题分析解决
Android 系统如果修改了Settings属性后等几秒再断电上电会有属性未保存的情况。比如,开关wifi和时间同步等开关,修改开关状态后,进行断电上电关开机 会发现有状态不保存的问题。wifi开关或者同步时间开关这些数据都是Settings.Global属性保存在data目录下的文件数据。一般手机和平板断电不换马上关机,是有大屏设备或者机顶盒等设备会出现这个问题。之前Android9不记得是否会有这个问题了,但是Android13 和 Android14 是必现的。原创 2024-08-18 18:37:41 · 1919 阅读 · 0 评论 -
Android14 大屏开机后蓝牙可搜索但无法连接分析解决
Android14 如果在开机后设置蓝牙可被搜索到和可以连接,但是实际其他设备搜到后点击配对,系统不弹框提示配对,具体原因是Android14 不允许后台配对导致。如果有相关需求可以进行了解一下。原创 2024-08-09 19:21:40 · 1867 阅读 · 0 评论 -
Android14 WPA2和WPA3 类型的WiFi网络连接
Android WiFi网络类型常用就是WPA/PA2,Android10之后很多手机支持了WPA3 网络的连接和热点WPA3类型设置。开发过程中是有遇到WPA3网络无法连接的问题,之前方案WPA3网络是可以用WPA2的配置连接成功的,但是Android14的MTK方案上不行了。本文的分析处理事对自己设置应用上的优化,原生设置应用是可以正常连接WPA3 网络。原创 2024-08-09 19:02:35 · 2249 阅读 · 0 评论 -
Android EDLA项目 5G热点打开失败分析
Android 13 外销国外的产品都要过EDLA认证了!EDLA认证的项目基本都是默认集成GMS Google mainline 和开启KPI;所以系统会自带了谷歌的很多apk和apex等数据,会造成系统某些代码修改没有作用。//Java 代码--Connectivity//Java 代码-- Wifi虽然部分模块的代码无法修改,但是还是要进行分析验证,谷歌集成的代码和原生代码是差不多的,主要差别就是res的默认属性可能有差别,所以系统代码逻辑还有要看的,这样才能更准确的定位问题。原创 2024-07-18 19:55:50 · 1791 阅读 · 0 评论 -
Android13 应用代码中修改热点默认密码
Android 有些情况会有修改热点信息的需求,比如修改热点默认名称、默认密码登信息。但是Android13 或者更新的代码,外销国外的设备都要通过EDLA验证了,集成谷歌那套代码,无法修改 packages\modules\Wifi 的代码,所以无法修改热点的默认信息?其实办法肯定还是有的,只要在系统第一次启动时通过WifiMannager接口获取wifi信息,再修改一次热点的信息即可。如果有需求都可以看看下面的实现代码。修改热点其他默认信息也可以同样参考。原创 2024-07-18 19:41:48 · 2030 阅读 · 2 评论 -
Android13 串口控制是能wifi adb实现
Android 系统开发初期调试,一般有串口功能调试,但是可能没有adb功能。adb功能比串口调试方便一些,比如可以直接传输文件,定向打印日志到电脑,投屏,安装电脑中的apk等功能。目前网上是没有详细分析的文章的。原创 2024-06-28 16:41:03 · 1626 阅读 · 0 评论 -
Android 使用adb操作WiFi连接扫描等相关指令
Android系统调试是,如果没有系统原生设置应用又需要调试验证WiFi功能时,可以使用一些指令来验证调试WiFi相关功能,最常用的就是 svc wifi enable/disable,或者使用iv dev来验证,但对于AP功能就没办法验证了,并且可调试功能比较少,其实Android系统自带有组很强大的shell指令集,这里记录下平时使用的cmd wifi 相关指令。系统初期开发或者定位一下wifi、热点问题会比较有用。原创 2024-06-28 15:11:56 · 14595 阅读 · 2 评论 -
Android 蓝牙配对Settings应用里面的简要流程记录
本文只是简单分析一下原生设置Settings中蓝牙配对的大致流程,具体细节有需要的自行研究。另外我这里的开发平台是AML平台的,所以会有Settings和TvSettings,其实这两个应用都会监听到蓝牙配请求,都会进行处理,这也是为啥会出现两次蓝牙配对弹框确认的情况。//监听蓝牙配对广播//;蓝牙配对广播@Override//设置蓝牙配对//关闭广播传递,防止原生设置监听到配对这里是监听到蓝牙配对后,后台直接确认配对,不用点击系统Settings的配对对话框就会确认配对。原创 2024-06-15 17:46:00 · 2106 阅读 · 0 评论 -
Android13 蓝牙协议属性配置详解
Android系统中蓝牙协议是否使能一般是通过一个属性值,如果这个属性值设置为false,会导致这个协议的服务未启动,也就是说这个蓝牙功能会没有作用。比如 Android 蓝牙传输文件协议是opp,如果opp未使能,那么整个系统是不支持蓝牙文件传输的。在Android13之前的版本,我们可以通过 config.xml 中的 profile_supported_a2dp 属性控制蓝牙的某个协议是否使能。这些属性是res属性,只能在资源文件中修改,还不方便查询。原创 2024-06-15 15:22:36 · 4824 阅读 · 0 评论 -
Android 系统设置拉起后台非全屏应用不隐藏前台应用
Android 原生流程中,如果切换后台应用界面,会先执行返回Home界面,再切换到新的应用界面;验证方法:手机打开一个应用1界面,底部往上滑,切换一个之前的后台应用2到前台,左右滑动退出应用2,发现回到的是Home界面而不是应用1界面。原生在startActivityFromRecent时,先回到Home了。但是Android 大屏设备,一般是需要显示多个应用,界面部分应用都是悬浮Activity,理想效果是:不返回Home界面,直接拉起后台应用。下面是实现的代码,其实就是在关键方法返回就行。原创 2024-05-19 12:25:30 · 598 阅读 · 0 评论 -
Android14 普通应用registerReceiver注册广播报错One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be
Android14 普通应用注册广播registerReceiver会报错,提示需要添加一个参数RECEIVER_EXPORTED 或者 RECEIVER_NOT_EXPORTED;系统framework或者系统应用是不会报这个错误的!这个问题比较好解决,加一个参数就行,但是网上目前没有人对这个问题今天深入分析。本文对registerReceiver报错进行分析,具体到哪个类哪行代码报错,分析了解后对于系统其他相关报错能有个认识,或者有分析思路。原创 2024-04-30 14:54:19 · 17410 阅读 · 16 评论 -
Android13 源码环境编译app源码报错AndroidManifest.xml.fixed分析解决总结
Android13 从Studio正常编译运行的app代码在源码中编译 有可能报错:AndroidManifest.xml.fixed …网上说法很多,有的说是添加android:appComponentFactory=“XXX” 和 tools:replace="XXX"就可以。Android·13 之前的方案使用上面的属性添加可能有效,这个修改主要针对包冲突问题(support和androidx ),原创 2024-04-30 09:21:33 · 2902 阅读 · 7 评论 -
Android13 设置固定热点ip地址192.168.43.1
Android 热点ip一般的系统都是随机生成的,地址一般是:192.168.XX.XX如果要设置成一个固定的ip地址,就需要适配系统代码。相关的适配代码主要都在 IpServer.java 里面。为啥要设置固定热点ip?一般是投屏软件需求,或者其他一些开机或者打开热点后被自动连接场景的需求。原创 2024-02-26 09:05:46 · 16613 阅读 · 3 评论 -
Android13 系统源码适配安装可卸载的三方apk应用
本文主要介绍 手机的三方应用比如游戏,微博等应用,在源码中如何默认配置到手机中的。Android手机中的系统应用是无法手动卸载的,但是这些三方应用安装后是可以手动卸载的。源码编译中配置系统应用是比较简单的,只要在apk文件并且再Android.mk或者Android.bp中进行配置即可。但是如果要默认配置三方应用确实有点麻烦,网上很多文章讲得都比乱,大部分只是贴了相关代码,基本没有介绍完整流程和分享解决配置过程还有一些编译报错。原创 2024-02-04 12:42:35 · 3067 阅读 · 0 评论