- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 基于 Android 无障碍服务的屏幕点击记录软件
无障碍服务是 Android 框架的一项功能,其本意是为了给使用 Android 设备的残障人士提供服务,方便其对 Android 设备进行操作。但是利用无障碍服务,可以实现其它功能,例如:Android 自动化,开屏广告跳过等。本项目功能的具体实现原理是:使用无障碍服务创建一个透明的覆盖全部屏幕的悬浮窗,捕获用户的屏幕操作,记录需要的操作,通过无障碍服务执行用户的操作。项目只实现了记录屏幕点击的坐标和顺序,利用该项目所使用的原理,还可记录更多操作,实现屏幕操作录制与回放等功能。
2024-05-13 15:48:45
457
原创 Android 多渠道打包 & 签名
有几个渠道就添加几个,其中 applicationId 是包名,用于区分不同的安装包,applicationId 相同的安装包不能同时安装在同一个设备上,是在 string.xml 中插入一个 app_name 字符串,所以在 string.xml 中不能有 app_name 字符串,否则会导致冲突。当我们完成上述步骤,可能会出 release 包无法安装的情况,这是因为我们的 apk 没有进行签名。修改 app 的 build.gradle 文件,添加 signingConfigs 模块。
2022-10-13 16:45:19
1058
原创 Java 虚拟机类加载机制
虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。类从被加载到虚拟机的内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。...
2022-08-11 15:27:37
160
原创 Java .class 文件结构
Class 文件结构中只要常量池的容量计数是从1开始,对于其他集合类型,包括接口索引集合、字段表集合、方法表集合等的容量计数都与一般习惯相同,是从0开始的。Java 的版本号是从45开始的,JDK 1.1之后的每个 JDK 大版本发布主版本号向上加1(JDK 1.0~1.1 使用了45.0~45.3的版本号),高版本的 JDK 能向下兼容以前版本的 Class 文件,但不能运行以后版本的 Class 文件,即使文件格式并没有发生任何变化,虚拟机也必须拒绝执行超过其版本号的 Class 文件。...
2022-08-10 16:04:21
650
原创 Java 中的内存区域与内存溢出异常
因为Java程序员把内存控制的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会成为一项异常艰难的工作。
2022-08-05 15:44:23
169
原创 Bitmap 转 Base64 字符串及转 Json 后新增换行符及部分符号被转义
Bitmap 转 Base64 字符串及转 Json 后新增换行符及部分符号被转义问题的解决方法
2022-07-08 16:05:17
2453
原创 Android 自定义 View 实现转盘功能
先上效果图。通过观察,我们看到转盘主要由圆和扇形组成,如下图我们只需按照我们需要的数量画出扇形即可。第一步:画大圆第二步:画扇形(小圆只是为了确定扇形圆心的位置,并不用真正画出来)第三步:绘制其他元素让转盘动起来这里的让转盘动起来的方式,是通过依次改变扇形的背景颜色,这个是产品需求,你也可以通过动画让他真正的转起来。我们需要考虑的一点是,我们必须让转盘可控,即转盘的最终结果在开始转之前我们就已经知道,所以我们需要让转盘转到我们指定的结果。我们可以给转盘一个初始速度和一个结束速度(即美妙转
2022-06-27 14:46:19
2398
2
原创 Fragment|让界面更灵活
Fragment | 让界面更灵活Fragment 从 Android 3.0 版本开始引入,它可以称为“迷你版”的 Activity,在 Android 开发中可以让我们的界面更加灵活。Fragment 允许将界面划分为零散的区块,它可以让你的界面模块化,并且它可以重复使用。但是 Fragment 不能独立存在,它必须由 Activity 或 另一个 Fragment 托管,Fragment 的视图层次结构会成为宿主的视图层次结构的一部分,或附加到宿主的视图层次结构。如何创建一个 Fragment
2021-08-19 17:07:54
153
原创 Activity的启动方法
在 Android 中,界面的跳转通常是通过启动不同的 Activity 来实现的,下面介绍一下 Activity 的启动方法。显式调用显式调用,字面意思即”明显的调用“,我们可以在调用方法中明确的知道我们即将启动的 Activity,显示调用的具体方法如下:val intent = Intent(this, SecondActivity::class.java)// SecondActivity::class.java 相当于Java中的 SecondActivity.classstartAc.
2021-08-16 13:02:24
1944
原创 Activity 的启动模式
Android 是通过任务栈进行 Activity 的管理的,栈是一种先进后出的数据结构,窗口显示的 Activity 是处于栈顶的 Activity,只有栈顶的 Activity 是可见的,当我们进入一个新的 Activity,这个 Activity 便会进入栈中并处于栈顶,当我们通过 back 键退出这个Activity,它便会出栈。任务栈并不是唯一的,一般情况下(standard 模式),Activity 会进入启动它的那个 Activity 所在的栈中。Activity 的启动模式Activi
2021-08-14 13:56:03
140
原创 基于Android的班级管理APP的设计与实现
选题背景在当代大学生的日常学习和生活中,手机已经成为必不可少的工具,这导致大学学习生活中的各种日常生活及学习事务需要通过手机作为媒介进行通知及处理。而目前市场上存在的各种社交软件(如QQ、微信等)并不是为大学生量身定做,其主要功能为日常社交,对于大学生的学习和生活来说,功能过于繁杂,容易让学生错过某些重要的信息,导致不能及时的收到通知或处理事务。所以,一款专门为大学生的日常生活和学习所设计的APP是及其需要。主要需求登录,能够通过账号和密码登录我的账号导入名单,通过上传excel表格的方式导入我班
2021-08-13 18:01:15
2186
15
原创 Activity的生命周期
作为 Android 的四大组件( Activity [ækˈtɪvəti],Service [ˈsɜːvɪs],BroadcastReceiver [ˈbrɔːdkɑːst] [rɪˈsiːvər],ContentProvider [ kənˈtent] [prəˈvaɪdər])之一,Activity 在 Android 中的地位是极其重要的,它主要负责软件界面的展示,是整个 APP 的门面,是直接与用户进行交互的部分,所以了解 Activity 的生命周期,可以使我们对它的使用更加游刃有余。Act
2021-08-13 15:36:51
1066
原创 Unicode,Emoji和emoji-java
前些天在做一个翻译需求的时候,需要对全部是 emoji 表情的字符串不显示翻译按钮,虽然调用翻译接口后对 emoji 表情的翻译还是原来的 emoji 表情,并且我觉得这种效果更好,但是奈何 iOS 已经实现了这个功能,作为一个 Android 研发,已经习惯了向 iOS 低头,所以研究了一下,发现实现并没有想象的那么简单,要想做到完美需要极大的工作量,所以下面简单的对 Unicode,Emoji 以及一个处理 emoji 的 Java 开源库 emoji-java 进行简单的介绍整理,希望对你有所帮助。
2021-08-04 09:11:39
1409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人