
Android
文章平均质量分 75
凉亭下
这个作者很懒,什么都没留下…
展开
-
【免费】自动检测删除微信好友教程 微信一键清死粉
微信使用时间长了,我们经常会删一些好友或者自己被别人删除,因此我删好友,一般是先找下哪些人把自己给删了,然后我们也会把这种僵尸粉删除。最后一步,去PC端微信客户端,找到“通讯录”——“通讯录管理”——“标签”,找到对应标签的人,全选,一键删除,搞定!扫码完成后,切换回网页,点击“确认登录”,然后点“我”按钮。左侧是你的微信信息,中间是检测结果,能看到谁删了你,谁拉黑了你,你拉黑了谁。如上图所示,重新登录后,可以选择语音登录或其他模式登录,登录成功后,再回到网页端扫码。别急着扫码,先去微信手机端设置一下。原创 2025-04-03 16:51:55 · 308 阅读 · 0 评论 -
微信好友检测神器全自动检测单向好友
今天给大家介绍一款超厉害的微信好友检测工具,这款工具是基于微信iPad协议开发的,能精准检测出哪些人已经把你删除,哪些人把你拉黑了,甚至还能查到你拉黑了哪些人。最后一步,去PC端微信客户端,找到“通讯录”——“通讯录管理”——“标签”,找到对应标签的人,全选,一键删除,搞定!扫码完成后,切换回网页,点击“确认登录”,然后点“我”按钮。左侧是你的微信信息,中间是检测结果,能看到谁删了你,谁拉黑了你,你拉黑了谁。如上图所示,重新登录后,可以选择语音登录或其他模式登录,登录成功后,再回到网页端扫码。原创 2025-04-01 00:44:50 · 412 阅读 · 0 评论 -
在使用 NavController 时,有哪些常见的错误需要避免?
例如,不要在 Activity 的 onCreate 方法中直接获取 NavHostFragment 的 NavController,因为在 onCreate 中 NavHostFragment 可能还没有完全创建好。确保在 NavController.navigate() 调用中使用正确的目的地 ID。确保 BottomNavigationView 或其他组件使用的 menu 中的 ID 与导航图中的目的地 ID 匹配。如果你在 XML 布局文件中指定了图标的 tint,它可能会覆盖导航图中设置的图标。原创 2024-10-04 10:41:29 · 559 阅读 · 0 评论 -
android navigation 用法详细使用
在导航图 XML 文件中添加 fragment 标签来定义目的地,并使用 action 标签定义它们之间的导航操作。在 res 目录下创建一个新的导航目录,然后创建一个导航资源文件(例如 nav_graph.xml)。1、Navigation Graph: 定义了应用内的所有导航目的地以及它们之间的连接。4、Destination: 导航图中的一个节点,用户导航到该节点时,宿主会显示其内容。2、NavHost: 一个 UI 元素,用于承载当前的导航目的地。可以为导航操作设置自定义动画。原创 2024-10-04 10:28:27 · 840 阅读 · 0 评论 -
WorkManager使用技巧及各Android版本适配
WorkManager是Android Jetpack中用于处理异步任务的库,它能够保证任务即使在应用关闭或设备重启后也能被执行。以下是WorkManager的使用技巧和代码示例,以及不同Android版本的适配方法。对于低版本的Android系统,您需要使用WorkManager 1.x或使用其他库如GcmNetworkManager。WorkManager会自动处理这些限制,但您应该确保遵守最佳实践,如避免长时间执行的任务。如果您的任务需要位置权限,确保正确请求和处理这些权限。方法来执行具体的任务。原创 2024-05-19 22:28:04 · 954 阅读 · 0 评论 -
Android开发adb命令使用大全
这些命令覆盖了从基本操作到高级调试的各个方面,是Android开发者在开发和测试过程中不可或缺的工具。使用这些命令时,确保你有足够的权限,特别是涉及到需要root权限的命令。(Android Debug Bridge)是一个多功能命令行工具,它允许你与连接的Android设备进行通信。Android开发中,原创 2024-05-14 22:43:52 · 504 阅读 · 0 评论 -
Android中使用USB进行通信的4种方式
在Android设备中,通过USB与外部设备通信是一种常见的需求,尤其是在嵌入式系统、IoT设备、以及各种专业硬件的交互中。原创 2024-05-13 22:31:45 · 3321 阅读 · 0 评论 -
Kotlin 编译器和工具链:深入解析与实践案例
Kotlin 编译器和工具链是构建 Kotlin 项目的核心组件,它们负责将 Kotlin 代码转换为可在 JVM 或 JavaScript 环境中运行的代码。本文将详细介绍 Kotlin 编译器和工具链的工作原理、使用方法,以及在实际开发中的应用案例。原创 2024-05-12 07:44:48 · 880 阅读 · 1 评论 -
Android Jetpack学习系列之WorkManager
WorkManager 是 Android Jetpack 架构中的关键组件之一,主要用于处理后台任务。它提供了一种简单而可靠的方法来确保即使在应用进程可能被系统杀死、设备可能进入休眠状态、以及操作系统对后台服务的各种限制等困难条件下,后台任务也能可靠地执行。WorkManager 提供了一个强大且灵活的框架来处理 Android 应用中的后台任务。尽管它有一定的学习曲线,但它的可靠性和对电池寿命的优化使得它成为许多应用场景的理想选择。原创 2024-05-09 07:36:00 · 1026 阅读 · 0 评论 -
有限字符集的字符串压缩算法
在开发中,经常有上报线上堆栈来分析处理线上问题的场景,所以,对堆栈的压缩和加密也是必不可少的。加密:可以使用AES对称加密算法,压缩:可以在上传时利用protobuf天生的压缩性对字符串进行压缩。不过,出于对流量的节省和传输效率的提升,可以通过在堆栈上传前先压缩一次数据来保证。下面给大家介绍一种笔者自己摸索的一种压缩字符串的算法,并且自带加密效果。此算法使用场景:有限字符集的字符串压缩。例如Java方法全限定名的压缩,对于方法全限定来说,组成成分:大小写英文字母,数字,特殊字符。原创 2023-06-28 20:38:09 · 882 阅读 · 0 评论 -
【Android】源码之 RemoteCallbackList
最近在替换蓝牙方案商的时候,发现其在使用 RemoteCallbackList 进行回调。于是抱着学习的心态来看看这个类吧。在 Android 中,RemoteCallbackList 类是一个用于跨进程通信的工具类,可以用来注册、注销和通知客户端的回调接口。它在 Android 系统中广泛应用于各种系统服务和框架组件中,如通知服务、Activity 生命周期回调、媒体播放器等等。RemoteCallbackList 是一个类似于列表的数据结构,它用于存储回调接口对象。原创 2023-06-28 17:20:57 · 377 阅读 · 0 评论 -
[Android] 弱网检测示例
6.使用较快的网络连接:如果您的应用需要使用网络,那么使用较快的网络连接可以帮助您的应用在网络状况较差的情况下更好地运行。3.使用后台同步:如果您的应用需要定期与服务器同步数据,那么您可以使用Android的后台同步机制来实现。5.使用较少的数据:尽量减少应用使用的数据量可以帮助您的应用在网络状况较差的情况下更好地运行。7.使用网络状态监测:通过监测网络状态,您的应用可以根据当前的网络状态调整其行为。2.使用离线模式:如果您的应用依赖于网络连接来提供内容,那么您可以考虑让用户在离线时也能使用应用。转载 2023-06-28 15:51:16 · 303 阅读 · 0 评论 -
使用反射的性能开销体现在哪,如何优化它?
上面示例代码中,先后使用了Class.forName,Class.getMethod及Method.invoke三个调用。其中Class.forName会调用本地方法,Class.getMethod会遍历该类的公有方法.如果没有匹配到,它还将遍历父类的公有方法,所以这两个操作都是非常耗时的。在默认情况下,方法的反射调用为委派实现,委派给本地实现来进行方法调用.在调用超过15次之后,委派实现便会将委派对象切换至动态实现,这个动态实现的字节码是自动生成的,将直接使用invoke指令来调用目标方法.原创 2023-06-28 15:41:25 · 372 阅读 · 0 评论 -
JetpackCompose Material3实现下拉刷新
在material3中很遗憾到目前位置2023年/5月27日官方还是没有更新material3的下拉组件,网上搜和ai查询的结果都是推荐使用Modifier.pullRefresh来实现下拉刷新,但是这个是material2中的API material3中无法使用这个API,不过呢 好在官方之前在m2没有适配下拉刷新的时候单独提供了一个下拉刷新的组件,所以目前在material3中如果想实现下拉刷新的功能只能使用之前那个组件来实现,或者手动写监听,但是这个成本和复杂度都很高,只能等后期官方开发内置。原创 2023-06-28 15:39:34 · 439 阅读 · 0 评论 -
Android APT 系列 (三):APT 技术探究
什么是 APT?APT 全称 Annotation Processing Tool,翻译过来即注解处理器。引用官方一段对 APT 的介绍:APT 是一种处理注释的工具, 它对源代码文件进行检测找出其中的注解,并使用注解进行额外的处理。APT 有什么用?APT 能在编译期根据编译阶段注解,给我们自动生成代码,简化使用。很多流行框架都使用到了APT技术,如 ButterKnife,Retrofit,Arouter,EventBus 等等APT 工程1)、APT 工程创建。原创 2023-06-26 19:15:14 · 1084 阅读 · 1 评论 -
Android APT 系列 (二):APT 筑基之注解
元数据元数据就是为其他数据提供信息的数据注解官方解释:注解用于为代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 JDK 1.5 开始添加到 Java 的。简单的理解:注解就是附加到代码上的一种额外补充信息注解作用源码阶段注解: 编译器可利用该阶段注解检测错误,提示警告信息,打印日志等编译阶段注解:利用注解信息自动生成代码、文档或者做其它相应的自动处理运行阶段注解: 可通过反射获取注解信息,做相应操作如何自定义定义一个注解。原创 2023-06-26 19:06:13 · 482 阅读 · 0 评论 -
APT 系列 (一):APT 筑基之反射
什么是反射?简单来讲,反射就是:已知一个类,可以获取这个类的所有信息一般情况下,根据面向对象封装原则,Java实体类的属性都是私有的,我们不能获取类中的属性。但我们可以根据反射,获取私有变量、方法、构造方法,注解,泛型等等,非常的强大注意:Google在 Android 9.0及之后对反射做了限制,被使用 @hide标记的属性和方法通过反射拿不到。原创 2023-06-26 18:56:15 · 479 阅读 · 0 评论 -
Android-推荐一个RecyclerView悬浮头部(StickyItemDecoration)
RecyclerView只需要添加一个StickyItemDecoration即可实现粘性头部,需要传入StickyHeadContainer用于头部的处理,以及粘性头部的类型;然后头部的点击处理就像平常一样处理。开源库的作者没有生成远程依赖的,所以需要我们clone,这样也可以方便在开源库的基础上扩展一些自己想要的东西。我刚好看到有一个开源库可以帮我们快速实现,分享出来希望能提高看文章的小伙伴的开发效率.我们在滑动列表的时候,头部View置顶不可以滑动.效果图有点不方便展示,感兴趣的小伙伴请自行查看。原创 2023-06-26 18:42:37 · 665 阅读 · 0 评论 -
Android通知栏增加快捷开关的技术实现
我们通常可以在通知栏上看到“飞行模式”、“移动数据”、“屏幕录制”等开关按钮,这些按钮都属于通知栏上的快捷开关,点击快捷开关可以轻易调用某种系统能力或打开某个应用程序的特定页面。那是否可以在通知栏上自定义一个快捷开关呢?答案是可以的,具体是通过TileService的方案实现。TileService继承自Service,所以它也是Android的四大组件之一,不过它是一个特殊的组件,开发者不需要手动开启调用,系统可以自动识别并完成调用,系统会通过绑定服务(bindService)的方式调用。转载 2023-06-25 23:26:06 · 500 阅读 · 0 评论 -
Android App安装弹窗显示流程
主要内容:将content协议的Uri转换为package协议的Uri,然后通过IO形式写入到mStagedFile文件中作用:主要起了转换的作用,将content协议的Uri转换为package协议,然后跳转到PackageInstallerActivity。原创 2023-06-23 19:04:02 · 1300 阅读 · 0 评论 -
Android PMS APP安装流程
3、InstallArgs复制APP----> FileInstallArgs复制APP---->DefaultContainerService复制APP。3、InstallParams继承自HandlerParams,用来记录安装应用的参数。1、在安装前检查是否环境的可靠,如果不可靠会清除复制的APK文件。3、处理安装后操作,如果安装不成功,删除掉安装相关的目录与文件。MoveInstallArgs:用来完成已安装应用的移动安装。1、尝试安装次数是否超过4次,超过就移除安装的列表数据。原创 2023-06-23 18:53:12 · 1623 阅读 · 0 评论 -
Android 窗口实现原理
窗口的尺寸计算到此就完成了,最终的结果是保存在mFrame中,最后这个值会返回给APP进程,APP进程ViewRootImpl中调用的relayoutWindow方法主要目的就是请求WMS对窗口进行计算得到mFrame的值,最后APP将此值保存在了ViewRootImpl的成员变量mWinFrame中。但其实在分屏模式下,Id为1的Stack只占了半个屏幕。【Id:3】Docked Stack 下文中我们将看到,在分屏模式下,屏幕有一半运行了一个固定的应用,这个就是这里的Docked Stack。原创 2023-06-23 18:46:32 · 1794 阅读 · 0 评论 -
Android开发技术——车机技术之WMS学习
窗口管理使用到的 DisplayContent,WindowToken 和 WindowState。用来管理一个逻辑屏上的所有窗口,有几个屏幕就会有几个 DisplayContent。使用 displayId 来区分。处于不同 DisplayContent 的两个窗口在布局、显示顺序以及动画处理上不会产生任何耦合。因此,就这几个方面来说,DisplayContent 就像一个孤岛,所有这些操作都可以在其内部独立执行。转载 2023-06-23 18:34:36 · 426 阅读 · 0 评论 -
Android卡顿优化
如果在一个Vsync周期内(60HZ的屏幕上就是16.6ms),按照整个上帧显示的执行的顺序来看,应用UI线程的绘制、RenderThread线程的渲染、SurfaceFlinger/HWC的图层合成以及最终屏幕上的显示这些动作没有全部都执行完成的话,屏幕上就会显示上一帧画面的内容,也就是掉帧,而人的肉眼就可能会感觉到画面卡顿。卡顿检测:我们做App开发时,可能会遇到卡顿的情况,往往会忽略,而且复现时出现卡顿的概率也挺挺小的。3、服务器接收到数据后建模、存储、挖掘分析,让后将数据可视化,供用户使用。原创 2023-06-22 18:52:40 · 606 阅读 · 0 评论 -
Android 使用okhttp监控网络数据
这里使用Okhttp写了一个demo来监听网络请求过程中的一系列数据,包括当前网络类型、请求体、响应体大小,url,请求方式,当然还有本次核心获取域名解析时长,建立连接时长,保持连接时长,请求总时长这些数据。时间的计算用的是System.nanoTime(),返回正在运行的Java虚拟机的高分辨率时间源的当前值,单位为纳秒。5.connectEnd: 链接建立结束:可能建立失败,失败后可以重试。4.接受数据:接受服务器返回数据:响应头和body。5.断开链接:四次挥手断开链接。2.dns:dns解析过程。原创 2023-06-22 18:46:45 · 2644 阅读 · 0 评论 -
Android加快你的编译速度
在越大的项目中配置阶段缓存的收益越大,module比较多的项目可能每次执行都要先配置20到30秒,尤其是增量编译时,配置的耗时可能都跟执行的耗时差不多了,而这正是configuration-cache的用武之地。使用组件化多模块开发的同学都有经验,当我们修改底层模块(比如util模块)时,所有依赖于这个模块的上层模块都需要重新编译,Kotlin的增量编译在这种情况往往是不生效的,这种时候的编译往往非常耗时。随着业务量的增大,module的引入也会增多,每个module在编译的时候都需要花费一定的时间。原创 2023-06-22 18:40:15 · 4129 阅读 · 2 评论 -
Android使用OpenGL实现相机滤镜
在onSurfaceCreated方法中通过setOnFrameAvailableListener方法监听相机数据的回调,相机数据回调时,调用requestRender()方法,触发onDrawFrame方法。继承GLSurfaceView用于展示渲染的画面,并实现GLSurfaceView.Renderer接口。在onDrawFrame函数中对画面进行渲染,渲染的逻辑在CameraDrawer中,基本都是些固定代码。而渲染的glsl代码我放在了,raw文件夹下。版本是早期的版本,可以只获取相机数据。原创 2023-06-22 16:53:11 · 960 阅读 · 0 评论 -
flutter - 编写 阿里云-金融级实名认证插件
项目中有实名认证的需求,用户上传身份证反正面,进行人脸核验,后台集成的是阿里云的金融级实名认证SDK,巧合的是阿里云没有packages 需要自己造轮子。参考:阿里云官方解说:https://help.aliyun.com/document_detail/163105.html。IOS集成的时候遇见几个问题,我截图列一下,有其他问题,联系我,我们共同成长。在项目下的 lib下的dart文件中定义我们的通信方法。创建完成后,会自动为我们搭建好通信结构。将SDK的中的 AAR放入项目内。复制粘贴 AAR文件。原创 2023-06-22 16:46:33 · 1336 阅读 · 0 评论 -
【干货】Android系统定制基础篇:第十八部分-Android自定义Sensor-人体感应Sensor
如何在 Android 系统上增加人体接近感应 Sensor,包含如何增加驱动、修改 Hardware、Framework,以及 APP 如何使用该 Sensor。原创 2023-06-21 18:49:37 · 1456 阅读 · 0 评论 -
【干货】Android系统定制基础篇:第十七部分(仅允许安装指定签名APK、U盘APP无法访问到U盘中音频文件)
1.查看MediaProvider源码:packages\providers\MediaProvider\src\com\android\providers\media\MediaScannerReceiver.java。验证结果如下,非指定签名的 APK 安装失败,提示“Signature verification failed”,指定签名的 APK 安装成功。PackageManagerService 中安装 APK 时获取待安装 APK 签名信息,对比签名是否匹配,匹配安装,不匹配返回。原创 2023-06-21 18:43:39 · 969 阅读 · 0 评论 -
【干货】Android系统定制基础篇:第十六部分(双屏异触、定时开关机与看门狗)
如果看门狗功能处于打开状态,Android 系统会在小于看门狗超时时长内定时发送心跳数据给 MCU,如果看门狗超时时长到,仍未收到心跳数据,则拉低 RESET 引脚10ms,使 CPU 复位重启。通过属性配置副屏 TP 的: 设备名、PID&VID、USB 端口,在 EventHub 中获取输入设备的设备名、PID&VID、USB 端口与属性值进行对比,如果是配置中的设备就将其标记为副输入设备。发送看门狗(Watchdog)心跳,至少在每个看门狗超时周期内发送一次心跳,否则超时复位。获取看门狗超时时长。原创 2023-06-21 18:35:43 · 2676 阅读 · 0 评论 -
Android VSYNC与图形系统中的撕裂、双缓冲、三缓冲浅析
同步是防止画面撕裂的关键,VSYNC同步能防止画面撕裂VSYNC+双缓冲在Android中能有序规划渲染流程,降低延时Android已经采用了双缓冲,双缓冲不仅仅是两份存储,它是一个概念,双缓冲是一条链路,不是某一个环节,是整个系统采用的一个机制,需要各个环节的支持,从APP到SurfaceFlinger、到图像显示都要参与协作三缓冲在UI复杂情况下能保证画面的连续性,提高柔韧性。转载 2023-06-20 17:42:46 · 1044 阅读 · 0 评论 -
【干货】Android系统定制基础篇:第十五部分(Android支持鼠标右键返回、GPIO 控制方案、属性标识USB摄像头的VID与PID)
GPIO 功能在 Android Framework 中增加 GPIO 相关 API,让 APP 可以直接通过 JAVA API 操控 GPIO。支持 输入、输出、模拟按键 三种模式。做为输入时可以用于app获取外部设备的电平状态。做为输出时可以输出高低电平,用于控制外设。当做为模拟按键时,此 GPIO 低电平时 APP 会收到对应的键值。参考项目,移植驱动和 Framework 代码。完整 DEMO 源码请参考:https://github.com/aystshen/topband_sample。原创 2023-06-20 17:15:21 · 2678 阅读 · 1 评论 -
【干货】Android系统定制基础篇:第十四部分(禁止第三方应用调用系统设置、增加TP配置、增加摄像头镜像设置、增加摄像头默认角度设置、修改默认语言)
Android 主板定制过程中经常出现客户需要临时适配各种 TP(包括 USB TP),因此在设置菜单中加入 xy 交换,x 反转,y 反转常用配置,以客户多样性需求。Android 主板定制时,常常使用 UVC 摄像头,无前后摄像头之分,有时客户需要将默认摄像头当做前摄像头使用,要求画面是镜像的。原创 2023-06-20 16:59:18 · 1647 阅读 · 1 评论 -
【干货】Android系统定制基础篇:第十三部分(开放root权限、禁止应用旋转、隐藏状态栏和导航栏)
2、修改(system\core\include\private\android_filesystem_config.h)默认权限改为 『04755』3、编译4、替换 su 程序5、修改权限6、APP 中获取 root 权限。原创 2023-06-20 16:52:31 · 1814 阅读 · 0 评论 -
Android车载应用开发与分析 - Android Automotive概述与编译
Android Automotive 是一个基本 Android 平台车载信息娱乐系统,简称IVI(In-Vehicle Infotainment)。Android Automotive系统赋予了车厂在IVI 系统中预装 Android 应用的能力,而大量的Android开发从业者,也降低的IVI系统以及应用的开发成本。转载 2023-06-19 16:27:58 · 1969 阅读 · 1 评论 -
Android 车载应用开发与分析 - CarLauncher
虽然Launcher也是一个APP,但是它涉及到的技术点却比一般的APP要多。CarLauncher作为IVI系统的桌面,需要显示系统中所有用户可用app的入口,显示最近用户使用的APP,同时还需要支持在桌面上动态显示如地图、音乐在内各个APP内部的信息,在桌面显示地图并与之进行简单的交互。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。转载 2023-06-19 15:21:49 · 3377 阅读 · 0 评论 -
Android车载应用开发与分析 - 车载Android应用开发入门指南
2019年中国首个外商独资的整车制造项目,“上海特斯拉超级工厂”开工了。特斯拉在智能化和电子化上的巨大优势将智能汽车推向了一个全新的高度,先进的自动驾驶以及BMS电池管理系统,深深震撼了全世界的人,在当时的国人眼中特斯拉几乎就是新能源汽车的代名词,时至今日,Model Y和Model 3已也依然是新能源汽车领域的畅销车型。转载 2023-06-19 15:07:59 · 1351 阅读 · 0 评论 -
【干货】Android系统定制基础篇:第十二部分(Android8.1桌面支持键盘操作、Android默认接受WiFi P2P连接邀请、Android配置时间服务器、Android修改默认输入法)
Android 是通过连接指定的 ntpServer 来获取网络时间,而不同的服务器带来的延迟也不尽相同,通常情况下,我们自然是期望尽快获取时间,那么我们就需要对 ntpServer 有一定的筛选,尤其是在选择默认的 ntpServer 的时候。修改文件:frameworks\opt\net\wifi\service\java\com\android\server\wifi\p2p\WifiP2pServiceImpl.java。取值:0:弹窗,1:不弹窗。通过属性配置默认输入法。原创 2023-06-20 07:00:00 · 672 阅读 · 0 评论 -
【干货】Android系统定制基础篇:第十一部分(更新WebView内核版本、Android8.1向下兼容静态广播、授予普通应用系统签名权限、应用安装时授予全部动态权限)
Android 将权限分为三类,一类是 Normal Permissions(普通权限),这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是 Dangerous Permission(危险权限),一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等;Android 6.0 以上应用(即应用开发时指定 『TargetSDK > 22』 时)运行在 Android 6.0 以上系统时,隐私权限需要动态申请,只有用户同意授权,才能继续使用。原创 2023-06-19 12:31:00 · 7607 阅读 · 1 评论