- 博客(156)
- 资源 (6)
- 收藏
- 关注
原创 Android 对接口的封装使用
本篇文章主要是记录Android代码 对java 接口的封装和使用方法,比较基础,记录一下,阅读本篇文章前,请移步这篇文章。
2025-01-14 21:13:39
673
原创 【Ubuntu 20.4安装截图软件 flameshot 】
输入软件名称, 软件快捷命令(flameshot gui),组合快捷键。这样子下次使用组合键:Ctrl + Alt + A 就可以截图了!Ubuntu20.4 设置菜单,点击 + 号。
2024-12-26 16:17:05
381
原创 Android wifi扫描时间汇总
从 wifi扫描流程梳理 可以看到wifi扫描流程会走到WifiTracker的handleMessage函数中,我们看sendEmptyMessageDelayed,会发送一条扫描的信息,其中包含了WIFI_RESCAN_INTERVAL_MS,WIFI_RESCAN_INTERVAL_MS就是默认的扫描周期,可以看到系统设置的默认周期是10 * 1000,也就是10秒。3、 灭屏情况下,有保存网络时,若已连接,不扫描,否则,PNO扫描,即只扫描已保存的网络。
2024-09-18 13:34:32
678
原创 Android Studio kotlin 转 Java
1.步骤 顶部Tools ----->Kotlin ------>Show Kotlin Bytecode。AS 环境:Android Studio Iguana | 2023.2.1。步骤3:点击插件窗口左上角Decompile 按钮,就会反编译为Java文件。java代码可以转化成kotlin代码,当然 Kotlin 反过来也可以。代码转化率90%左右,剩下的需要自己调整一下代码格式。在Android Studio中 可以很方便的操作。步骤2:kotlin文件转为字节码。
2024-05-15 20:23:10
8362
原创 Android Studio gradle 默认sourceSets配置
【代码】Android Studio gradle 默认sourceSets配置。
2024-04-24 21:24:23
1548
2
原创 Android 使用ping命令判断当前网络状态
ping命令是用来测试和诊断网络连接问题的基本命令,当然我们的终端设备(手机/平板/车机)都可以用这个命令来判断当前网络是否有流量的状态,本篇文章主要介绍Linux的ping命令,因为Android系统也是使用了Linux内核。然后使用ping命令封装一个判断当前网络是否有流量的方法。
2024-04-15 13:35:08
7489
原创 Android Studio引入framework.jar包
Android Studio 引入framework.jar 步骤,记录笔记Android源码编译产生的framework.jar 在不同的版本上生成路径是不同的Android N/O: 7 和 8Android P/Q: 9 和 10Android R: 11以上。
2024-04-11 13:57:48
4331
原创 Android轻量级进程间通信Messenger源码分析
Android中比较有代表性的两大通信机制:1. 线程间Handler通信 2. 进程间Binder通信,本篇文章中我们在理解AIDL原理的基础上来解读一下Messenger的源代码, 并结合示例Demo加深理解。在看本篇文章前,建议先查阅一下笔者的Android 进程间通信机制(六) 手写AIDL文件首先说下我对Messenger的个人理解:1. 从概念上阐述Messenger进程间通信的信使,是一个轻量级的IPC通信方案, 和Message消息不是一个概念。2. 从实现上描述。
2024-02-20 10:11:20
1591
1
原创 ASCII码表
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;奇校验规定:正确的代码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位 b7 添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位 b7 添1。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。
2024-02-01 09:47:05
746
原创 Android 通过adb命令查看应用流量
若要输出额外信息,如详细的唯一用户 ID (UID) 信息,请包含。以下示例输出内容中列出了连接的设备的活跃接口和活跃 UID 接口。在大多数情况下,活跃接口和活跃 UID 接口的信息是相同的。有两个这样的行,第一个表示移动数据连接,第二个表示 Wi-Fi 连接。输出内容因连接的设备上搭载的 Android 版本不同而异。总结: 第四种方式,就是需要自己去把每个时间段的接收和发送的byte数相加处理,然后统计总流量。wlan0: 表示代表的是wlan端口,wifi流量就是用的这个Interface。
2024-01-22 11:15:32
2903
原创 C++基础系列(三)Const 关键字
有时我们希望定义这样一种变量,它的值不能被改变。例如,用一个变量来表示缓冲区的大小。使用变量的好处是当我们觉的缓冲区大小不再合适时,很容易对其进行调整。另一方面,也应随时警惕防止程序一不小心改变了这个值。为了解决问题,我们引入const关键字。
2024-01-18 17:05:35
458
原创 warning: ISO C++ forbids converting a string constant to ‘char*‘ [-Wwrite-strings]
简单来说,在赋值时,左右两边的类型不同的话,编译器会implicit conversion来强制转换类型,赋值号右边的“China”是一个不变常量类型是const char。,左边name是一个指针。如果强行赋值的话,那么编译器会将右边强制转化成一个指针类型,这种情况会使得程序在别的编译器可能会出现报错。解决办法就是主动将右边转化成指针类型或者将左边转化成const不可修改。翻译成中文的意思是“禁止将字符串常量转换为“char *”
2024-01-16 08:59:13
3867
原创 java基础系列(十一) this关键字
其实,JVM在堆空间给对象分配空间时,每个对象都有一个隐藏的属性this,this指向该对象本身。即,如果用C语言来解释的话,this就是一个指向堆空间中对象本身的指针,只不过在Java中没有指针,叫做引用而已。this自己是对象的一部分,它也在堆空间,但是它又指向了它自己。一看图就明白了,就是这么回事儿。当然,我们还可以通过另一种直观的方法来理解this,我们可以。进行该操作需要用到hasCode方法(之后我们会讲到hasCode)。this关键字的本质到底是什么呢?
2023-12-27 11:04:12
491
原创 java基础系列(十)多态理解
多态是面向对象程序设计的三大特征之一,面向对象的三大特征:封装、继承、多态。封装给对象提供了隐藏内部特性和行为的能力,保护对象内部的状态,提高了代码的可用性和可维护性。继承关系使一个子类能继承父类的特征,而不需要再次编写相同的代码,并且附加一些新特征。子类是它的父类的特殊化,每个子类的实例都是其父类的实例。//父类类型 变量名 = new 子类类型();
2023-12-21 13:45:58
145
原创 C++基础系列(二)纯虚函数
定义纯虚函数的一般格式为:virtual返回类型 函数名(参数表)=0;含有纯虚函数的基类是不能用来定义对象的。纯虚函数没有实现部分,不能产生对象,所以含有纯虚函数的类是抽象类。定义纯虚函数必须注意:1定义纯虚函数时,不能定义虚函数的实现部分。即使是函数体为空也不可以,函数体为空就可以执行,只是什么也不做就返回。而纯虚函数不能调用。2 “=0”表明程序员将不定义该函数,函数声明是为派生类保留一个位置。=0”本质上是将指向函数体的指针定为NULL。3。
2023-12-20 16:16:46
279
转载 bat脚本的命令语法
自定义变量就是由我们来给他赋予值的变量要使用自定义变量就得使用set命令了,看例子:@echo offset var=我是值echo %var%pause保存为BAT执行,我们会看到CMD里返回一个 "我是值"var为变量名,=号右变的是要给变量的值这就是最简单的一种设置变量的方法了如果我们想让用户手工输入变量的值,而不是在代码里指定,可以用用set命令的/p参数例子:@echo offset /p var=请输入变量的值echo %var%pause。
2023-12-18 21:24:49
2940
原创 使用Android Studio的Gradle Tasks对源码生成jar包
As工具可以用来编译第三方源码(比如okhttp ,retrofit源码), 用于打jar包或aar包,使用工具自带的Tasks工具可以帮忙我们完成这些事情。
2023-12-12 08:30:12
600
原创 Vscode中字符串报错:Unknown word.cSpell
是vscode IDE工具中的插件 Code Spell Checker 会检查字符串的合理性,我们写的中式拼音的字符串,不是一个标准英文单词,就会提示错误,解决方法就是让该插件遇到特定词汇不报错。
2023-11-28 19:32:27
5340
2
原创 C++基础系列(一) 对象指针
在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址,而且函数名表示的就是这个地址。其返回值是一个 int 类型的指针,是一个地址。没有括号,*与int结合,int*为返回类型,p就是一个函数名,这时就是一个指针函数,只不过返回值类型为int*。有括号,*与p结合,*p就是个指针,指向返回值为整型且有两个整型参数的函数的指针,因此称为函数指针。可以简单粗暴的理解为,指针函数的*是属于数据类型的,而函数指针的星号是属于函数名的。
2023-10-19 17:19:43
678
原创 Ubuntu 配置repo环境
下载Android源码的时候,自己的Ubuntu电脑需要初始化repo环境,这样子你就可以使用 repo init -u ssh: repo sync 等命令下载代码, 在工作中,一般公司的代码仓 git-repo 是固定的,首次就需要把repo的初始化环境配置好,比较简单,随笔记录一下。
2023-10-05 18:59:10
7137
2
原创 编写Android.mk / Android.bp 引用三方 jar 包,aar包,so 库
在Android10之后,所有项目工程中,官方推荐使用Android.bp去编译构建,以前使用Android.mk构建的项目随着版本迭代升级,慢慢需要变更为Android.bp, 两者的语法都需要去了解并熟练使用。笔者之前写过Android.mk的语句介绍,里面有介绍每句代码的含义编写Android.mk把Android studio项目编译到AOSP源码中后来也总结过 Android.bp基本用法:Android.bp 语法和使用比较基础,也是在项目中运用到了就记录下来。
2023-09-28 15:20:11
6727
2
原创 Android 获取网络连接状态新方法
Android12上,有的app模块判断当前网络的类型和连接状态时,还是使用的旧的API,导致返回的结果不准确,影响代码逻辑判断,本篇文章就这一问题,整理一下判断网络类型和连接状态的新方法。
2023-08-03 22:28:51
8958
1
原创 ubuntu彻底卸载libreoffice和安装wps
Ubuntu环境卸载默认的Libreoffice软件, 安装 wps word文档编辑等软件
2023-07-09 11:57:24
3004
原创 安装Ubuntu系统详细教程
本篇文章详解介绍一下如何安装Ubuntu系统,笔者在安装的过程中踩过很多坑,重装了很多次,现在把安装过程中遇到的问题也列出来,供大家参考。
2023-06-18 17:11:52
76959
3
原创 我的创作纪念日
希望在Android这条路上有更多的积累,可以写出更多出彩的文章,可以和大家分享自己的理解和知识,也希望在这个平台上认识更多志同道合的朋友。当时开始做Android开发的时候,也是从小白开始的,也是看了很多人的博客,包括其他平台的文章, 后来一想自己也工作了这么久,有点工作经验积累了,也可以把自己知道的知识分享出来,供其他人参考。
2023-06-17 22:06:58
196
原创 Android 进程间通信机制(六) 手写AIDL文件
本文重点讲解一下AIDL文件结构以及类中每个方法的含义. 然后把AIDL中每个方法的用途理解清楚后, 我们就不依赖AS自带的工具创建, 而是自己手动去写一个AIDL文件, 在手写的代码中添加自己的日志, 根据打印理清楚客户端与服务端跨进程通信的流程图, 目的加深对IPC机制的理解.
2023-06-14 17:31:33
1748
原创 在Ubuntu上增加swap交换空间
Ubuntu默认分配的交互空间swap 为 2G 实际上在代码编译的过程中,如果你的CPU内存不超过16G的话,交换空间就有必要去设置更改一下。
2023-06-01 09:34:02
6969
1
原创 Ubuntu 更换阿里云镜像步骤
安装Ubuntu系统成功后,最好优先配置好源文件,方便安装工具和配置环境,本文介绍一下更换方法,在不同版本上的sources.list 配置。
2023-05-21 20:52:53
2293
原创 Android 屏蔽锁屏界面上的通知显示
在插入SD后, 锁屏状态下, 去掉提示“SD卡可用于传输照片和媒体文件”需求拆解: 要求正常显示在SystemUI下拉状态栏, 只需要屏蔽在锁屏状态下的通知.
2023-04-16 21:43:09
1517
1
原创 Android ActivityManagerService总结(四)startActivity流程
AMS(ActivityManagerService)是Activity管理的核心组件,提供了Activity的启动、生命周期管理、栈管理等功能,熟悉AMS会对我们认识Activity的工作原理有很大的帮助.AMS中内容实在是太多了,对它的分析也不可能面面俱到,从Activity的启动、Activity消息回传(onActivityResult)、Activity栈管理、AMS与WMS和PMS的协同工作这几个点深入理解一下,通过对源码的流程梳理, 对AMS有进一步的理解.
2023-04-04 22:55:02
1414
3
原创 Ubuntu adb / fastboot 报错:no permissions (missing udev rules? user is in the plugdev group);
当adb devices 和 fastboot devices 如果出现no permissions (missing udev rules? user is in the plugdev group报错, 可以按照上面的方法解决,亲测有效。
2023-04-04 17:42:25
2337
原创 startActivity的生命周期
AMS(ActivityManagerService)是Activity管理的核心组件,提供了Activity的启动、生命周期管理、栈管理等功能,熟悉AMS会对我们认识Activity的工作原理有很大的帮助.AMS中内容实在是太多了,对它的分析也不可能面面俱到,从Activity的启动、Activity消息回传(onActivityResult)、Activity栈管理、AMS与WMS和PMS的协同工作这几个点深入理解一下,通过对源码的流程梳理, 对AMS有进一步的理解.
2023-04-03 13:29:44
718
原创 Android ActivityManagerService总结(三)Activity管理相关数据结构
接上一篇文章, 介绍了一下AMS的内部数据结构, ProcessRecord容器,还有四大组件记录表 , 本篇文章继续讲解一下与Activity管理相关的数据结构, 重点关注如下5个类文件:ActivityRecord TaskRecord ActivityStack ActivityStackSupervisor。
2023-04-03 08:28:58
686
1
Android 进程间通信机制(六) 手写AIDL文件
2023-06-14
指纹人脸生物校验,基于android源生接口显示相应的对话框
2023-02-08
DownloadManager下载QQ.apk 例子
2022-11-01
Android 反编译apk工具包
2022-08-26
Android 反编译apk工具包
2022-08-26
AlarmManager + Broadcast 循环启动任务
2022-07-04
Andorid新闻客户端app
2020-10-16
android 框架解密
2019-04-25
Android经典项目案例开发实战宝典(郭金尚) 实例源代码 和 第5章文件管理器 电子文档
2014-12-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人