- 博客(32)
- 问答 (7)
- 收藏
- 关注
原创 Android14 Camera2 修改前置摄像头拍照镜像效果
Android 14原生Camera2 的前置摄像头默认是预览画面是镜像效果,拍照保存的照片是非镜像;现在需要修改保存的照片也要是镜像效果。
2026-09-20 13:49:53
50
原创 Android16在状态栏顶部新增图标(SystemUI)
本文摘要描述了在Android系统框架层新增一个麦克风禁用图标的过程。主要包括两个步骤:首先在framework/base/core/res/res/drawable-nodpi/路径下创建ic_mic_off.xml矢量图标文件,定义了一个24dp×24dp的麦克风禁用图标;然后在config.xml配置文件中,向config_statusBarIcons字符串数组添加status_bar_no_mic占位符条目,并在字符串资源中定义相应的status_bar_no_mic字符串值,完成图标资源的系统集成
2026-07-16 17:53:45
249
原创 Android适配蓝牙遥控器实战
目的:知道按下该键时,Linux 内核上报的数字是多少,以便在 .kl 文件中映射。这时你看到的是 KEY_TV,这是一个 Linux 内核定义的名称,但它的实际数值需要查表。中间的 0172(十六进制)换成十进制就是 0x172 = 370。所以这个键的内核扫描码是 370。注意:不同遥控器可能上报不同的码,务必以你实际测到的为准。如果 getevent -l 显示为 KEY_UNKNOWN 或没有名称,直接看原始十六进制换算即可。
2026-07-13 17:08:06
208
原创 为系统级应用“开绿灯”——Android14 系统签名白名单扩展
当前是使用硬编码特定公钥的,有条件的话可以新增一个系统属性来存储特定公钥,比较规范。该块使得当应用签名的 RSA 模数与硬编码值一致时,直接认为签名匹配成功。允许持有特定公钥的应用声明系统权限,保证应用的正常安装、运行。在原有签名比对逻辑(if (!
2026-06-30 15:25:38
240
原创 Android新增服务添加selinux权限
在进行定制化开发的时候,有时候需要通过AIDL的方式新建一些系统服务来满足特定的需求。一般来说都是客户自己的应用需要进行某些操作,但是通过现有的公开api没办法做到,这样就需要通过aidl服务来实现了。关于aidl的内容就不多赘述了,今天主要是遇到了新增的服务向系统注册后,运行时系统找不到对应的selinux域(之前新增没有遇到过这种情况😂)。可能不同方案的sepolicy的路径不一样,这个就要根据自己的方案去找了。:新添加的系统服务(很可能就是之前实现的。权限,并且服务名称需在策略中声明。
2026-06-10 08:41:34
278
1
原创 Android14 新增系统服务后,应用调用出现 “hidden api” 警告的原因与解决方案
场景解决方案推荐度新增的系统 API 需要被多个系统应用或系统组件调用使用@SystemApiapi文件一般新增的系统 API 只被 1~2 个特定应用调用把应用包名加入✅ 强烈推荐临时调试,不想修改源码之外的任何东西直接修改中的判断逻辑❌ 不推荐Android 官方文档:Hidden API Restrictions。
2026-05-23 09:41:42
538
原创 【无标题】
本文解析了Android系统中注册自定义服务的核心代码ServiceManager.addService(),深入剖析其工作原理与实现细节。该代码通常位于SystemServer.java中,通过创建Binder服务实例并注册到全局ServiceManager,使服务可被全系统访问。文章详细解读了代码中的日志记录、性能追踪、异常处理等关键环节,并阐述了这一机制对实现跨进程通信、支撑上层API封装的重要意义。同时总结了在智能电视、车载系统等场景的应用案例,以及权限控制、线程安全等最佳实践,为Android系统
2026-01-25 11:00:00
1147
原创 Android14 Framework 将一个自定义服务(类、接口等)注册到 系统,使应用可以通过标准的 Context.getSystemService获取服务的方法
Context.ACCESSIBILITY_SERVICE是名称,AccessibilityManager.class是类型,createService是具体的方法;也就是说你可以通过context.getSystemService(Context.ACCESSIBILITY_SERVICE)来获取AccessibilityManager的实例。
2026-01-24 09:32:52
56
原创 Android 怎么写一个AIDL接口?
本文详细介绍了Android AIDL(Android接口定义语言)的实现过程。服务端开发包括:1)在build.gradle中启用AIDL支持;2)创建aidl文件夹并定义接口;3)实现Service返回Binder对象。客户端需要复制相同的aidl文件,通过ServiceConnection建立连接,使用Stub.asInterface()方法获取AIDL实例。最后通过绑定服务实现跨进程通信,客户端即可调用服务端定义的方法。整个过程涵盖了AIDL从定义到使用的完整流程,包括接口生成、服务实现和客户端调用
2026-01-24 09:12:04
132
原创 Android14为应用添加默认存储权限
路径:frameworks/base/services/core/java/com/android/server/pm/permission。在grantDefaultSystemHandlerPermissions方法的最后加上。修改类:DefaultPermissionGrantPolicy.java。对于这个类和方法的具体作用,问AI就行。
2025-12-10 08:24:40
299
原创 通过Messenger进行服务端和客户端的通信
文章摘要:本文展示了使用Messenger实现Android服务端与客户端双向通信的代码示例。服务端通过MessengerService处理客户端消息并回复,客户端ActivityMessenger绑定服务后能发送消息并接收回复。核心机制是利用Messenger封装消息,通过Handler处理消息收发,实现跨进程通信。文中提供了完整的绑定/解绑服务、消息发送和接收处理的实现代码。(149字)
2025-09-02 16:44:53
1049
原创 Android Service 同应用下的通信
在Service中我们通过定义一个内部类,这个类继承自Binder,在其中我们实现一个方法getService,这个方法的作用是返回当前的Service对象(上面我们提到了绑定成功的时候会返回给Activity一个binder对象,通过这个binder对象获取Service对象,就可以调用Service中的公共方法了)。对conn里面的方法进行重写。当我们的Activity和服务绑定成功的时候,会调用Service的onBind方法,它返回一个Binder,Activity接收这个Binder对象。
2025-09-02 11:40:12
1037
1
原创 nacos服务的启动
6.在建立的项目上新建一个Maven Module。1.通过下面的命令行来执行,启动服务。4.建立一个新的Maven项目,选择。
2024-09-02 13:43:40
415
1
原创 高德地图开放平台地图显示问题
在做商城类的项目的时候,想实现客户通过地图选址的功能,于是选择了高德地图开放平台,但是按照官方文档的步骤地图却显示不出来,从网上找很多说是要把高度改为具体的值,但是也没用;于是我把宽度也从100%改为具体的值,这样就可以了,不知道有没有人和我有一样的问题.......
2024-08-31 08:48:53
379
2
原创 初识MyBatis
在指定文件夹下创建application.yml文件:配置:在MyBatis的配置中,属性用于指定MyBatis映射文件的位置。这个属性告诉MyBatis到哪里去查找映射文件,这些文件包含了SQL映射语句。以下是*.xml.xml。
2024-08-05 20:19:47
963
原创 雪花算法整理
请注意,这个示例没有实现数据中心ID和机器ID的部分,也没有处理序列号的回绕和多线程环境,因此仅用于演示雪花算法的基本思想。在实际应用中,你可能需要根据你的系统需求调整和扩展这个示例,包括处理多线程生成ID的情况,以及为数据中心和机器分配ID等。4. **组合ID**:将时间戳、数据中心ID、机器ID和序列号按位组合成一个64位的整数。:12位,是该毫秒内生成的序列号,用于确保同一毫秒内生成的ID也是唯一的。3. **生成序列号**:在每个毫秒内,为生成的ID分配一个递增的序列号。
2024-08-04 16:58:51
359
原创 SpringBoot - Aop
简介意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。何时使用:想在访问一个类时做一些控制。
2024-08-02 19:54:15
830
原创 Spring Boot - A
10)如果在 中指定了该 Bean 的作用范围为 scope="singleton",则将该 Bean 放入 Spring IoC 的缓存池中,将触发 Spring 对该 Bean 的生命周期管理;如果在 中指定了该 Bean 的作用范围为 scope="prototype",则将该 Bean 交给调用者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。依赖注入:当我们的想要用的类已经交给IOC管理,我们用这个类的时候只需要声明就可以了,
2024-08-01 20:24:40
1551
原创 Ecplise如何配置Maven
1.选择Window下的prefrences ,点击进去2.点击Maven选择Installations,点击右上角的add3.点击Directory选择自己maven的安装路径 这里我已经添加过了,所以会提示已经添加过了的错误 ,选择好后就点击finish即可4.添加完成打上对勾5.点击Maven下的user Settings 然后选择自己maven安装路径下的config里面的settings.xml最后点击右下角的应用并关闭即可。
2024-08-01 19:34:07
531
原创 粗心的bug
当我实现查询所有员工信息的操作的时候,因为parms数组是null,所以要传null进去,但是之前因为把if(parms!= null)多写了个{}后面的操作范围变大,导致如果parms==null,我就没办法完成查询操作,这真是个很傻的错误。
2024-07-21 22:54:26
193
1
原创 如何导入Jstl
jstl中的<c:if test = ""> </c:if>可以进行if条件判断;使用指令标签,其中prefix是标签的入口,是用来分辨html与jstl标签的;uri是jstl的文件路径;可以用来处理业务逻辑。
2024-07-17 21:11:16
200
空空如也
Android SELINUX
2025-08-07
Android调用相机崩溃
2025-07-31
为什么我的ajax不起作用
2024-07-24
pta单链表的合并,创建时的错误
2022-09-19
为什么添加不进去元素啊?是因为函数写的有问题吗(标签-Ar|关键词-bool)
2022-09-09
C语言顺序表,删除元素
2022-09-14
创建单链表遇到困难了
2022-09-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅