自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(223)
  • 资源 (4)
  • 收藏
  • 关注

原创 Python脚本启动应用并输入账号或密码

安装所需要的模块pyautogui、subprocess、psutil等,可以通过pip安装,下面以安装pyautogui为例cmd命令行中输入。环境:Python3.11 已经在Windows电脑中配置Python环境变量,且配置了pipd的环境变量;run_application_with_account方法为启动软件自动填入密码或账号,并模拟登录。如果每天要启动某个软件还要输入账号密码登录的需求的话,可以参考本文章;f_exeIsRunning方法主要是判断要启动的软件是否已经启动;

2024-05-27 18:12:38 214

原创 Postman汉化及低版本下载

例如:C:\Users\EDY\AppData\Local\Postman\app-9.12.2\resources。默认安装路径:C:\Users\{用户名}\AppData\Local\Postman。4.4.把汉化包app.zip放到Postman的安装路径resources目录下。注意:用户名是自己电脑的windows登录用户名,根据自己电脑修改即可;4.1.确保Postman下载的版本和汉化包下载的版本一直。4.2.找到Postman的安装目录。下载app.zip即可。4.Postman汉化。

2024-02-23 09:22:55 3281 2

原创 AOSP 下载编译Linux内核源码,各个发行版本号都有(官方文档)

官方文档,不需要科学上网:构建内核 | Android 开源项目 | Android Open Source Project

2023-12-18 13:02:10 1335

原创 Kotlin 如何确定协程是否启动

在上面的示例中,isActive 函数用于检查协程是否处于活动状态,也就是是否已启动但尚未完成。你还可以使用 Job 对象的 cancel 方法来取消协程,如果协程已经启动,但你想中止它的执行。这些是确定协程是否已启动的一些常见方法,你可以根据自己的需求使用不同的方式来管理和监控协程的状态。请注意,取消协程是一种控制协程生命周期的方式,但要小心处理取消,以确保资源得到释放。来管理协程,并使用一些函数来检查协程的状态。在Kotlin中,你可以确定协程是否已启动并正在运行,可以使用。

2023-10-24 22:52:27 2378

原创 Kotlin 协程的挂起和阻塞的区别

Kotlin协程引入了非常强大的异步编程模型,通过挂起而不是阻塞来实现并发操作。挂起(Suspending):挂起是指一个协程的执行可以在不阻塞线程的情况下暂停和恢复。挂起函数是一种能够让协程挂起并释放线程的特殊函数,允许其他协程在该协程挂起期间运行。协程可以在执行IO操作、等待网络请求、休眠或执行任何可能导致阻塞的操作时挂起。阻塞:阻塞是指线程在执行某个操作时被暂停,直到该操作完成,而不能执行其他任务。

2023-10-19 22:07:58 2897

原创 Kotlin 设置和获取协程名称

由于CoroutineContext重写了+号,所以创建协程作用域或者创建协程的时候可以通过 Dispatchers.IO + CoroutineName("协程A")为函数context: CoroutineContext参数传递值;创建协程作用域是或者创建协程是有个上下文参数(context: CoroutineContext)在协程内部调用如下API即可获取到协程名称。创建协程的launch函数。

2023-10-18 22:35:04 1387

原创 Kotlin 协程(线程)切换

是一个用于启动顶层协程的函数,它会阻塞当前线程,直到协程执行完成。根据具体的任务和上下文需求,你可以选择合适的函数来进行协程的上下文切换和管理。用于创建一个协程作用域,其中的所有子协程必须执行完成后,它才会执行完成。用于创建一个协程作用域,其中的协程是独立的,不会因为一个子协程的失败而取消其他子协程。避免回调地狱:它有助于避免回调地狱,因为你可以在不同的上下文中执行异步操作,而无需编写复杂的回调嵌套。是Kotlin协程中的一个常用协程函数,它的作用是切换协程的执行上下文(线程或调度器)。

2023-10-17 18:08:44 953

原创 Rxjava3 全新详解及常用操作符

RxJava 是一个基于 Java 的响应式编程库,用于处理异步事件流和数据流。它是由 Netflix 开发并开源,现在广泛用于 Android 和 Java 后端开发。RxJava 提供了一种用于组合和处理异步数据的丰富工具集,它的核心思想是将数据流视为一系列事件,以响应事件的方式进行处理。RxJava 提供了丰富的操作符,用于处理和转换数据流。这些操作符可以帮助你执行各种操作,包括过滤、映射、合并、变换等,以便更好地处理异步数据流。

2023-10-15 17:24:48 2135 1

原创 Android ViewBinding和DataBinding功能作用区别

总结一下:ViewBinding 主要用于更轻松地访问视图,提高代码的可读性和性能。DataBinding 更进一步,不仅可以访问视图,还可以将数据与视图建立绑定关系,实现数据和 UI 的双向同步。你可以根据项目需求和复杂性来选择使用 ViewBinding 或 DataBinding,如果你只需要简化视图绑定,使代码更整洁,并不需要高级的数据绑定功能,那么 ViewBinding 是一个很好的选择。

2023-10-14 14:22:22 515

原创 Android Fragment中使用Arouter跳转到Activity后返回Fragment不回调onActivityResult

Fragment总就可以重写onActivityResult方法,在此方法获取上一个Activity返回来的数据了或者处理相关业务逻辑了;注意onActivityResult方法中int requestCode, int resultCode的区别;注意传递的参数Bundle也可以如下传递Bundle参数。Activity中获取Bundle参数。通过Arouter跳转。设置Bundle参数。

2023-10-11 13:07:08 1242 1

原创 Android.bp常用语法和预定义属性

Android.bp是Android构建系统中用于定义模块和构建规则的配置文件,它使用一种简单的声明式语法。以下是Android.bp的一些常见语法规则和约定:注释:单行注释使用//符号。多行注释使用/和/包围。和go语言相同// 这是单行注释/* 这是多行注释 */模块定义:每个模块都以module_type字段开始,指定模块的类型,例如cc_library、java_library等。模块定义由大括号{}包围,包含模块的属性和规则。

2023-09-19 08:17:02 1628

原创 AOSP源码中Android.mk文件中的反斜杠符号(\)的作用和使用

在AOSP(Android Open Source Project)源码中的Android.mk文件中,反斜杠符号(\)的主要作用是将一行代码拆分成多行,以提高可读性并帮助组织较长的代码块。这对于定义复杂的构建规则和变量时特别有用。多行命令:Android.mk文件通常包含用于构建Android系统的一系列命令。如果一个命令很长,可以使用反斜杠将其拆分为多行,使代码更易于阅读。例如:my_target:@echo "这是一个一行写不完的很长命令 \拼接的命令"

2023-09-16 00:28:38 427

原创 AOSP Android 系统源码编译出的framework.jar和android.jar之间的区别

AOSP(Android Open Source Project)编译出的 android.jar 和 framework.jar 都是 Android 平台开发中的重要组件,但它们有不同的作用和用途:用途:android.jar 包含了 Android API 的定义,它是 Android 应用程序开发的核心库。开发者在编写 Android 应用程序时,使用 android.jar 中的类和方法来与 Android 系统进行交互,访问设备功能和系统服务。

2023-09-15 08:40:02 1388

原创 Android 系统源码目录frameworks/base/packages和packages/apps下的APP区别

总之,frameworks/base/packages 目录包含 Android 系统核心框架的一部分,其中的应用程序和服务是系统的一部分,与核心功能紧密相关。而 packages/apps 目录包含用户级应用程序,提供给用户的常见应用程序和工具,但不是 Android 操作系统的核心组件。这两个目录的应用程序在性质和功能上有所不同,但都构成了 Android 操作系统的一部分。

2023-09-08 09:06:28 889

原创 Ubuntu 启动出现grub rescue

2023-08-29 15:48:16 4761 1

原创 Markdown 语法大全

Markdown是一种轻量级标记语言,用于将文本转换为HTML或其他格式。它设计简单,易于学习,用于创建格式化文档,如博客文章、文档、简报等。

2023-08-25 16:52:49 167

原创 Repo manifests默认default.xml清单文件中的各个标签详解

Repo是一个用于管理多个Git存储库的工具,通常与Google的Android开发项目一起使用。它允许您在一个命令下轻松地进行多个Git存储库的同步、下载和管理。

2023-08-24 14:10:46 2130

原创 C语言代码的编译过程及命令

C语言代码编译过程分为四步:预处理 ,编译,汇编,链接。

2023-06-10 17:07:17 1078

原创 AndroidStudio AGP插件和Gradle之间的版本对应关系(官方)

Google官方的文档,可以保证实时性和权威性。

2023-06-08 10:19:22 4536

原创 Android MVVM 中的DataBinding详细介绍

前言从我开始接触Android再用使用MVC当时不太懂架构,也不太懂和框架的区别,后来随着工作经验的增多这些架构自然而然的都会用到或者体会到他们在软件开发中的作用;今天不谈MVC和MVP这些算是老的架构了,不过很多公司还在用MVP,MVC的估计很少了,估计有人或说MVP用着用着又用回MVC了,其实都差不多是在MVC的基础上发展进化而来,MVC可以说他们的先祖;今天简单学习以下MVVM架构基础和应用;MVVM。

2023-04-21 16:36:14 831 1

原创 Kotlin List几种常见应用及Java List

1,创建可空的List集合,这种不常见,因为不可变(只能读)又是空集合;Kotlin中也提供了创建Java中List集合的API。Kotlin中自己也定义了类似于Java中的List集合。Kotlin中List集合主要分为可变和不可变。Kotlin也是可以使用Java中的List。MutableList内联函数传一个List。Java写法,直接调用JavaAPI。Collections.kt中定义的。1,创建可控的List集合。创建非空可变的List集合。2,创建非空List集合。

2023-04-18 12:05:14 530

原创 Android LiveData基本使用及注意点

LiveData也是Jetpack中的一个组件,是一个可被观察的数据持有类,具有Activity/Fragment/Server生命周期感知的(即当处于活跃状态下才可以接收数据的更新),类似于观察者设计模式,LiveData是被观察者,Activity/Fragment/Service为观察者,例如在Activity中注册观察者,当被观察发生改变时,观察能收到改变;LiveData只有当观察者的生命周期处于活跃状态时才会去通知观察者。实现了Observer类的观察者,可以注册监听LiveData;

2023-04-16 23:28:13 1778 1

原创 C++类模板常见用途和注意实现

template //模板参数可以有一个或者多个class 类名 {};

2023-03-11 20:45:53 586

原创 C++ 纯虚函数和抽象类

虚析构不是不必须,只有当子类有成员存储开辟在堆区存储时,需要父类添加虚析构,这样当子类被回收时子类的析构函数才会调用;类中有纯虚函数的类称为抽象类;抽象类无法实例化对象;抽象类的子类必须重写父类中的纯虚函数;纯虚函数从定义的角度看,其实就是在虚函数的基础上去掉大括号,变为=0即可;纯虚析构需要声明也需要实现;声明了纯虚析构函数的类也是抽象类;定义:virtual 函数返回值类型 函数名() = 0;virtual ~类名() = 0;

2022-12-08 14:52:56 315

原创 C++中的多态和虚函数及多态原理

多态:事物的一种形态,在不同的子类中表现为多种形态,就称为多态;多态分为静态和动态多态静态多态包括运算符重载和函数重载,复用函数名;动态多态包括虚函数派生类;静态多态地址在编译期已经确定函数地址;动态多态函数地址在运行是确定;虚函数成员函数前面加virtual后变为虚函数,虚函数主要功能用来实现多态;多态的条件:1,有继承关系 2,子类重写父类的虚函数 3,父类指针或引用指向或者引用子类对象;注意重写和重载的区分,重写是子类继承父类的虚函数后重新定义虚函数内容,在子类中要去掉virtual关键字;使用代码阐

2022-12-05 23:31:16 382

原创 Android挂载系统分区执行mount和remount

adb root //adb 获取root权限;adb remount /system //从新挂载system目录或者说分区adb shell //进入Android命令su //获取root权限,不然无法执行挂载命令mount -o rw,remount /system //rw 和remount选线的先后顺序可能导致错误;chomd 777 /systemmount [-afFrsvw] [-t TYPE] [-o OPTIONS...] [[DEVICE] DIR] //通过adb shell ,在

2022-12-05 16:15:33 8466 1

原创 C++中常用数组及几种数组定义方式

只定义,不初始化;数组类型 数组名 [数组长度];int arr[5];

2022-11-24 23:34:18 15473

原创 C++ 常用的N种运算符

运算符又可以分为算数运算符,赋值运算符,比较运算符,逻辑运算符等,切入的角度不同,可能分类也不同;用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。同假为假,其余为真;加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数。检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。检查左操作数的值是否大于右操作数的值,如果是则条件为真。检查左操作数的值是否小于右操作数的值,如果是则条件为真。

2022-11-17 15:26:21 625

原创 C++ 关键字及标识符命名规则

(见例1) enum {};inline: 定义一个函数为内联. 内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。标识符(这里说的标识符代表常量或者变量 类名 函数名等)起名字的时候,标识符不能使用关键字,标识符使用字母,数字和下划线;register: 定义一个寄存器变量. 他可以提高数据的存取速度,可以快速的存储以提高处理效率。static: 用法1:函数内部声明的static变量,可作为对象间的一种通信机制。一般定义在函数内部的,没有添加任何其他修饰符的变量都是自动变量。

2022-11-16 21:32:16 813

原创 C++ 主函数几种语法

总结,所以main函数中的argc参数其实是命令行运行程序是输入的参数个数,其中包括文件名,外加后面跟着的参数个数;使用VisualStudio运行如下代码结果如下,参数就一个文件名,及文件名组成字符串参数;4,返回值为void,且参数为void的main函数。3,返回值为int,且参数为void的main函数。5,返回值为void,且无参数的main函数。2,返回值为int,且main函数带参数。1,返回值为int,且main不带参数。C++main函数的两种写法。二,测试main函数的参数。

2022-11-16 20:35:39 1222

原创 C++ 变量和常量

以上6行代码一定要记住,基本在初学阶段写Demo测试语法,或者学语法时都会用到;通常常量有两种方式定义1,#define 宏常量 2,使用const修饰的变量;使用的开发工具VisualStudio社区公开版;

2022-11-16 20:27:34 277

原创 Retrofit com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept

如果Android端发现不了问题,可以把Retrofit接收端的接口返回数据改成ResponseBody对象这样不管接口返回什么样的数据,都可以解析得到,不会报错了,然后可以根据数据生成具体的对象;比如接口报错返回一个Html,而且Retrofit请求接口方法,数据要解析成List格式的数据;2,如果是已在使用的接口,需要确认一下接口返回来的数据是否有变化;1,如果刚开始调试接口,那就是Android端和服务端没有约定好接口返回的数据格式;

2022-10-24 18:21:53 3603

原创 使用QFIL升级高通芯片的Android系统

7,回到QFIL软件,Select Programmer项点击Browse...,选择上一步解压好的升级包,找到prog_emmc_firehose_8909_ddr.mbn 即.mbn结尾的文件;10,如果点击Download之后出现升级出现异常:Android板断电,重启Android板设备,与之相连线也拔掉,QFIL软件也重新打开;9,把视线转移到SC806 Android板子,按住FORCE_BOOT(强刷键)按键之后同时在按住POWER键,然后点击QFIL升级工具中的Download。

2022-09-28 11:20:00 4617

原创 Ubuntu无法输入管道符及其他符号

键盘输入错乱

2022-06-27 17:14:12 1601

原创 Linux 修改国内镜像源

为apt 修改为国内镜像源地址;

2022-06-21 14:28:27 3860

原创 获取必应每日一图的几种方式

第一种方式1,打开必应官网 必应2,按F12,查看网页源码3,找到图片所以在div位置,属性中一般会有url地址参数,如下图:/th?id=OHR.PFNPAZ_ZH-CN7929165864_1920x1080.jpg&rf=LaDigue_1920x1080.jpg4,根据3获取的URL地址参数,再和必应的官方地址拼接,得到:https://cn.bing.com/th?id=OHR.PFNPAZ_ZH-CN7929165864_1920x1080.jpg&rf=L.

2022-05-30 19:16:47 1705 1

原创 Windows中使用命令行杀进程

使用命令杀进程的几种方式:1,根据进程名称杀进程:taskkill /f /t /im qq.exe //此例是杀QQ进程2,通过进程号杀进程 :taskkill /pid 9396 -f //规则taskkill /pid [进程号] -t(结束该进程) -f(强制结束该进程以及所有子进程) 这种方式是成功的;进程号获取方式:快捷键ctrl + alt + delete 找到任务管理器,PID即为进程号如果没有PID,右键名称,勾选PID即可;杀进程命令:tas...

2022-05-14 19:36:02 32042 1

原创 repo下载安装及初始化环境

1,普通用户下下载repo脚本通过android-x86官网提供的方式安装repo及相关软件;sudo apt -y install git gcc curl make repo libxml2-utils flex m4sudo apt -y install openjdk-8-jdk lib32stdc++6 libelf-devsudo apt -y install libssl-dev python-enum34 python-mako syslinux-utils2,默认情况下

2022-01-26 10:35:30 6138

原创 mmm找不到问题

Android源码编译

2021-12-30 19:07:12 956

原创 Android TextToSpeech TTS中文文本转语音(语音合成)

简介TTS即从文本到语音(TextToSpeech)一,使用第三方提供的SDK或者API,例如:科大讯飞,百度,阿里等;二,使用Android系统自带的API :TextToSpeechTextToSpeech中的API文档(官方):TextToSpeech | Android Developers,记录各个方法,变量,常量详细介绍;三,TextToSpeech的使用如下代码是做了简单封装;public class TTSUtils extends UtterancePro..

2021-11-09 20:19:53 10304

lombok.zip(2020.3)

AndroidStudio2020.3 或者Idea2020.3以上版本使用lombok 插件

2021-10-21

IPackage.jar

系统提供的安装卸载接口;不过默认是隐藏的;Androidstudio中无法使用;所以需要我们在使用的时候提供和系统一样的api接口,依赖到项目中,这样在使用的时候就不报错了;

2019-12-08

AndroidStudio AIDL进程间通信及Binder连接池的实现

使用Android studio 实现两个app通过AIDL 和Binder连接池的进程间通信

2019-04-14

重新编译Google串口开源库生成的.so动态库

在Android.mk文件中加入LOCAL_LDFLAGS += -fPIC,重新编译的.so动态库

2018-11-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除