自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (3)
  • 收藏
  • 关注

原创 协程coroutineScope?.launch 和 ArchTaskExecutor 开子线程的区别

play())都运行在 IO 线程池的某个线程上,不会阻塞调用者线程(这里是主线程)。响应回来后协程恢复执行。简单说:协程用更少的线程资源实现同样的异步效果,并且提供了更好的生命周期控制和错误隔离。ArchTaskExecutor:如果用 executeOnBackgroundThread { ... } 包同样的逻辑,线程在等待 execute 返回期间被完全阻塞占用,是一种更"重"的资源使用方式。Dispatchers.IO:所有通过该 scope launch 的协程默认运行在 IO 线程池上。

2026-09-10 09:24:46 49

原创 android compose ui 结合 ViewModel适配方案

如下以ExposedDropdownMenuBox下拉框控件为例子,描述android compose ui 结合 ViewModel适配方案。

2026-01-24 14:46:06 753

原创 android gradle中如何引用 libs.versions.toml中定义的版本变量添加compose引用

enableFeaturePreview('VERSION_CATALOGS') // 启用版本目录功能预览。3.引用版本变量 配置compose引用库。1.启用版本目录功能预览。

2025-12-27 14:41:55 379

原创 Android 弹窗 显示背景高斯模糊效果(Android12以后版本)

Android SurfaceControl.Transaction 类是管理和批量执行 Surface 属性变更的核心工具,专门用于高效处理窗口和视图的图形效果。Transaction 主要负责将多个 Surface 操作组合成一个原子事务‌,确保图形系统能够一次性应用所有变更,避免画面撕裂和不一致问题。注意不是给view设置了高斯模糊背景,而是给view所在的activity外部容器设置了高斯模糊背景。设置view背景区域高斯模糊,指定模糊半径和圆角。设置高斯模糊的强度,通常20-80像素效果最佳。

2025-11-27 15:08:44 485

原创 ubuntu:beyond compare 4 This license key has been revoked 解决办法

单击右下角按钮“Enter Key”,输入以下秘钥【注意:包括开始和结尾的横线行】3.打开Beyond Conpare,弹出Trial Mode Error!1.在terminal界面找到bcompare所在位置,并删除目录。

2025-11-14 16:47:49 824

原创 Android bind service使用Binder 池的方法

1.创建aidl文件,创建单独的aidl仓库,在aidl仓库添加如下aidl文件 包括:1.1 主aidl文件 IIpcService.aidl(IpcService.onBind直接返回IIpcService接口实现),提供Binder 池获取方法。1.2 客户端监听aidl文件 IIpcServiceListener.aidl,用于客户端向服务端注册监听。1.3 Binder 池中模块1 aidl文件 IBinderModule1.aidl,处理模块1业务。

2025-10-23 19:02:12 468

原创 Androidstudio 上传当前module 或本地jar包到maven服务器。

或者双击gralde面板中publishing目录下的 publishAllPublicationsToMavenRepository。设置agp版本和maven插件版本(和gralde版本有对应关系)即可上传 模块目录下 libs/aa.jar文件到maven服务器。Androidstudio 将本地jar包上传到maven服务器。3.设置模块目录的build.gradle。2.设置项目根目录build.gradle。1.设置gradle版本到8.0。

2025-07-25 14:53:05 502

原创 ubuntu 运行脚本打开WIFI adb

2.给脚本添加执行权限:chmod +x adb_tcp_connect.sh。1.将如下述代码保存为adb_tcp_connect.sh文件。3.运行脚本:./adb_tcp_connect.sh。

2025-07-08 13:51:42 302

原创 Android混淆工具使用

当混淆后的应用发生崩溃时,日志显示混淆名称(如 a.b.c.d.a())。使用 mapping.txt 配合反混淆工具(如 retrace)可将堆栈还原为原始代码位置,便于定位问题.进入android sdk的目录,执行如下命令,将混淆后的trace.txt 转换成免混淆的日志。记录了混淆编译过程中被识别为冗余代码(未使用代码)并被移除的类、方法和字段。文件记录了被明确保留(未被混淆)的类、方法和字段。

2025-06-18 15:05:58 721

原创 Android编译时打印所有引用的so库路径及引用的aar或jar

在app module build.gradle 最后添加脚本。

2025-06-12 16:44:23 429

原创 Android Cameara2 + MediaRecorder 完成录像功能

打开相机预览流程是Camera2的默认流程可参考:https://blog.youkuaiyun.com/kk3087961/article/details/135616576。

2025-05-27 14:29:26 1068

原创 Android 应用wifi direct连接通信实现

1.必须启用Wi-Fi功能:在设备设置中开启Wi-Fi主开关(即使未连接路由器)关闭冲突功能:若已开启「热点共享」或连接到其他Wi-Fi网络,需先关闭相关功能以避免硬件占.-- Wi-Fi Direct 核心权限 -->-- Android 10+ 需位置权限 -->1.1.代码调用打开WIFI// 获取Wi-Fi管理器实例// 开启Wi-Fiif (!

2025-04-19 16:56:00 1870

原创 新版Android Studio设置gradleJDK版本方法

进入 File-Settings界面点击截图选项。

2025-04-15 11:12:58 714

原创 Android 应用蓝牙连接通信实现

Log.d("Bluetooth", "发现设备: " + device.getName() + " - " + device.getAddress());//配对过后,创建RFCOMM Socket并连接到服务:使用UUID指定服务标识符,创建RFCOMM Socket并连接到远程设备。// 获取已连接设备的MAC地址。//name:字符串参数,表示服务的名称,这个名称会被写入设备的SDP(服务发现协议)数据库。1. 客户端设备(主动发起连接的设备)创建RFCOMM Socket并连接 连接远程设备。

2025-04-10 19:07:21 1622

原创 Android 系统ContentProvider流程

先从pms获取ContentProvider基本信息创建 ContentProvider实现类对象,然后将ContentProvider 的 Binder 接口对象封装到 ProcessRecord.pubProviders供应客户端aidl调用。

2025-03-29 16:58:09 1423

原创 通过协程将异步调用转换为同步调用且添加请求超时策略

【代码】通过协程将异步调用转换为同步调用且添加请求超时策略。

2025-03-26 15:36:50 256

原创 Android 系统Service流程

1.应用bindService时 会先创建一个LoadedApk.ServiceDispatcher对象和一个LoadedApk.ServiceDispatcher.InnerConnection(继承IServiceConnection.Stub) 是aidl 服务端实现类对象mIServiceConnection,

2025-02-14 17:12:04 1234

原创 adb shell 查询Android应用cpu内存占用及优化

在Android系统性能分析时,经常会拿到系统历史cpu和内存占用日志,来分析某段时间哪些应用cpu和内存占用是否特别高以及变化来确定应用内存或cpu是否需要优化。

2025-01-07 13:56:33 7369

原创 AMS初始化、应用启动及activity启动流程分析(Android 11)

源码查看路径:http://xrefandroid.com/android-11.0.0_r48/涉及到源码文件:由Android系统启动流程可知SystemServer进程启动时,会调用SystemServer.startBootstrapServices 启动系统Boot级别服务,该方法会启动ams,调用流程如下:1.创建ActivityTaskManagerService并启动。

2024-11-13 19:26:36 1613

原创 Android系统广播流程

主要用到的源码文件提供应用注册广播入口,和ams通信。分发广播信息给为应用注册的广播,其内部的aidl实现类InnerReceiver接收Android系统中广播,注册一个广播会创建一个InnerReceiver对象。初始化3种广播队列,处理注册广播流程缓存注册的广播对象binder等信息,处理发送广播流程处理广播分发流程,和广播超时策略。mParallelBroadcasts存储无序广播列表。

2024-10-31 17:02:08 770

原创 HashMap,SparseArray和ArrayMap 使用场景

优点:SparseArray在存储和读取数据时候,使用的是二分查找法,在获取数据的时候非常快,比HashMap快的多,因为HashMap获取数据是通过遍历Entry[]数组来得到对应的元素。因为它避免了自动装箱的过程,如果key为long类型,它还提供了一个LongSparseArray来确保key为long类型时的使用,一、SparseArray 内部使用两个数组mKeys和mValues来进行数据存储,一个存储key,另外一个存储value。1.2、如果key类型为其它的类型,则使用ArrayMap。

2024-09-19 17:02:13 535

原创 Android系统启动流程简介

ActivityManagerService通过Binder机制与ActivityManager进行通信,提供对系统中其它组件的管理和监控功能.从上面可知SystemServer.startBootstrapServices 启动系统Boot级别服务 会启动ams,调用如下:SystemServiceManager.startService(@NonNull final SystemService service) 方法。

2024-08-13 19:14:05 1317

原创 Android Gradle插件(AGP)版本与Gradle版本及jdk版本对应关系

gradle 插件版本 4.2.2对应gradle 发行版本以及支持的 kotlin版本 如下:项目 build.gradle文件中:gradle-wrapper.properties 文件中:官方匹配关系如下链接:

2024-08-09 10:57:59 3952

原创 不销毁activity实现白天黑夜主题切换

一.onCreate初始化AppCompatActivity.onCreate 先调用getDelegate() 创建 AppCompatDelegateImplN(最终继承AppCompatDelegateImplV9->AppCompatDelegateImplBase)对象 delegate,然后调用 delegate.installViewFactory()AppCompatDelegateImplV9 实现接口LayoutInflater.Factory2。

2024-08-02 17:00:34 983

原创 Android应用与SurfaceFlinger建立连接及界面显示过程

Android应用与SurfaceFlinger建立连接及通信的过程主要用到的文件。

2024-07-19 17:23:02 1153

原创 Android中毛玻璃效果的两种实现Android12及以前版本

方法1 先将图片缩小,然后放大图片,再设置为控件背景以达到更模糊的效果,同时也提升模糊算法的处理效率。对比下来同样的模糊半径 ,方法1 的模糊效果更好,且方法1 的模糊半径可以设置范围更大。2.使用Android自带类RenderScript 实现。Android中毛玻璃效果主要有两种实现方式。3.FastBlurUtil.java 类。1.使用JAVA算法FastBlur实现。2.BitmapUtil.java 类。方法2 模糊半径只能设置1-25。1.activity中调用。

2024-05-07 17:34:19 3288

原创 高通 camera hal 流程

以高通 msm8998 平台为例介绍高通 camera hal。库文件名称:camera.msm8998.so源码目录:/hardware/qcom/camera/msm8998/QCamera2主要文件:QCamera2Hal.cpp 定义了 HAL_MODULE_INFO_SYMQCamera2Hal.cpp 中定义的 HAL_MODULE_INFO_SYM 初始化 camera_module_t 对象,

2024-05-06 19:15:28 4012

原创 Android activity主题设置

注意 如果AndroidManifest 默认陪着一个主题,然后onCreate代码中动态切换主题,主题背景色切换 会有一个闪的过程。方法1 AndroidManifest 设置theme。方法2 Activity 中设置theme。

2024-03-20 10:54:39 734

原创 Android mvvm使用流程

ViewModelProvider初始化时如果不传递 ViewModelProvider.Factory,则ViewModelProvider内部会使用默认的 Factory,getTestLiveData 返回LiveData提供 数据给ViewModel,ViewModel 及view层获取到LiveData即监听数据的变化。ViewModel 类提供了一种保存和管理界面相关数据的机制,并确保这些数据在配置更改(如设备旋转)时不会丢失或重新创建。3.创建view类UiTestActivity。

2024-02-26 13:06:23 1076

原创 Android aidl流程

com.android.demo.aidl.IIpcService asInterface 方法 返回new com.android.demo.aidl.IIpcService.Stub.Proxy(obj),即返回IIpcService.Stub.Proxy实例。创建 IIpcService.aidl和IIpcServiceListener.aidl,具体源码和aidl工具生成的IIpcService.java和IIpcServiceListener.java。

2024-02-06 14:59:39 1610

原创 Android aidl 工具使用

o和-h参数分别指定.cpp文件和.h文件输出的路径。PS:如果设置参数ndk,生成的文件可以不依赖Android源码。1.aidl 工具在sdk中路径:~/Android/Sdk/build-tools/33.0.0-rc2/2.IIpcServiceListener.aidl文件。C++接口文件比较多,一个aidl文件生成4个文件。3.-I DIR, --include=DIR import搜索路径,指定依赖的aidl文件所在目录。查看生成的头文件和cpp文件 1。查看生成的java文件1。

2024-02-06 09:42:02 1332

原创 android camera client、CameraService及camera hal调用流程

这里的 hardware::camera::provider::V2_4::ICameraProvider 对应 android.hardware.camera.provider@2.4 .so模块,CameraProvider就是与HAL层so的交互。因为 Camera 也继承 ::android::hardware::BnCameraClient 所以可以将 Camera 赋值给 TCamCallbacks(即 TCam为::android::hardware::ICameraClient)

2024-02-02 14:10:17 4473 3

原创 Android中的智能指针流程

智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。5.2 从如下模板类 sp定义可知,创建sp时会调用sp::sp,然后调用other->incStrong,即 weakref_impl 的 incStrong ,最终调用。3.2从如下模板类 wp定义可知,创建wp 时会调用wp::wp,然后调用other->createWeak,即weakref_impl的 createWeak,最终调用。要想访问弱指针所指向的对象,

2024-01-25 16:14:35 1180

原创 c++类和java类使用的差异

7.c++ const int顺序可颠倒,int const也可以。6.c++ 类 继承使用: public 父类,其中public 是用来修饰每个基类。4.c++ 类初始化对象my方式 和java不同。在java类中全局镜头变量,可以声明final, 也可以不声明。5.c++ 类 中静态变量访问 符号不同,c++使用::,JAVA使用.2.c++ 的函数声明在类内部,c++ 的函数定义在类的外部;----------java类代码示例。----------c++类代码示例。3.c++ 类定义结束;

2024-01-22 15:02:48 578

原创 Ubuntu和windows连接串口设备方法

查看 设备管理器查看串口连接的事哪个端口, 在putty端口下拉栏,选择串口设备用的端口例如:COM4。speed输入115200,connection type选择Serial,点击open即可。2.串口板连接主机和电脑后执行命令进入串口界面。2.打开PUTTY工具,进入对应界面,如图所示。Ubuntu和windows连接串口设备方法。1.下载并安装 minicom工具。1.下载并安装putty工具。二、windows连接串口。一、Ubuntu连接串口。

2024-01-18 16:05:36 1973

原创 kotlin 调用对应java实现

public final class LoginResult { 对应变量 get set方法等}2.2 open class kotlin调用 ,open表示可继承。kotlin 调用对应java实现。--------- java实现。----------java实现。----------java实现。----------java实现。----------java实现。----------java实现。----------java实现。----------java实现。----------java实现。

2024-01-18 13:12:39 790

原创 shell 常见命令

====模拟点击返回键 keyevent 4,home键3。====apksigner命令查看查看apk文件是v几签名。====命令查询 v1 和v2签名apk的签名详情信息。====== adb 查询Android系统版本。主体公共密钥算法: 2048 位 RSA 密钥。签名算法名称: SHA256withRSA。====根据包名称获取 apk 路径。=====强制设置存储空间低。====清除对应包的数据和缓存。=====添加log缓冲区大小。====依据包名查询签名信息。====依据包名查询版本号。

2024-01-18 10:29:40 603

原创 launcher 点击和滑动屏幕过程分析

若onInterceptTouchEvent方法 return true,则会进入 onTouchEvent事件中,onInterceptTouchEvent只会执行一次本次ACTION_MOVE而onTouchEvent会执行多次包括上面的ACTION_DOWN,ACTION_MOVE,ACTION_UP的事件;------------------------------------------------------滑动一次log-----------------------------

2024-01-18 10:26:15 487

原创 android onInterceptTouchEvent和onTouchEvent的执行关系

------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收。-------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收。-------onInterceptTouchEvent不拦截 part2---------onTouchEvent接收。-------onInterceptTouchEvent不拦截 part2--------onTouchEvent接收。

2024-01-18 10:25:26 463

原创 launcher 壁纸相关

开启壁纸选择器,所有<intent-filter> <action android:name="android.intent.action.SET_WALLPAPER" /> 所有action为android.intent.action.SET_WALLPAPER的应用都会进入壁纸选择列表,默认壁纸读取的是frameworks/base/core/res/res/drawable-相关dpi/default_wallpaper.jpg。文件记录的壁纸的宽度高度等信息。2.壁纸如何随着屏幕切换移动?

2024-01-18 10:24:27 450

C语言教程 txt版 和清华的C语言教程配套

C语言教程txt版和清华的C语言教程配套

2010-03-02

Ubuntu脚本统计Android应用实时CPU内存占用生成统计报告

Ubuntu脚本统计Android应用实时CPU内存占用生成统计报告

2024-11-15

Ubuntu脚本统计Android应用实时CPU内存占用,生成统计报告

Ubuntu脚本统计Android应用实时CPU内存占用,生成统计报告

2024-11-15

Android camera用到的aidl文件和aidl编译出来.h 和cpp文件

Android camera用到的aidl文件和aidl编译出来的BnCameraService.h,BpCameraService.h,ICameraService.cpp,ICameraService.h, 单独编译方法见: https://blog.youkuaiyun.com/kk3087961/article/details/136051743 如下文章用到该编译文件: android camera client、CameraService及camera hal调用流程 https://blog.youkuaiyun.com/kk3087961/article/details/135992303

2024-03-12

aidl demo用到的源码和生成java和cpp

具体操作步骤参考 https://blog.youkuaiyun.com/kk3087961/article/details/136051743?spm=10

2024-02-06

c#俄罗斯方块源码

c#俄罗斯方块源码.还不错。

2008-04-23

空空如也

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

TA关注的人

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