- 博客(72)
- 资源 (3)
- 收藏
- 关注
原创 Android 系统Service流程
1.应用bindService时 会先创建一个LoadedApk.ServiceDispatcher对象和一个LoadedApk.ServiceDispatcher.InnerConnection(继承IServiceConnection.Stub) 是aidl 服务端实现类对象mIServiceConnection,
2025-02-14 17:12:04
1053
原创 adb shell 查询Android应用cpu内存占用及优化
在Android系统性能分析时,经常会拿到系统历史cpu和内存占用日志,来分析某段时间哪些应用cpu和内存占用是否特别高以及变化来确定应用内存或cpu是否需要优化。
2025-01-07 13:56:33
1691
原创 AMS初始化、应用启动及activity启动流程分析(Android11)
源码查看路径:http://xrefandroid.com/android-11.0.0_r48/涉及到源码文件:由Android系统启动流程可知SystemServer进程启动时,会调用SystemServer.startBootstrapServices 启动系统Boot级别服务,该方法会启动ams,调用流程如下:1.创建ActivityTaskManagerService并启动。
2024-11-13 19:26:36
1168
原创 Android系统广播流程
主要用到的源码文件提供应用注册广播入口,和ams通信。分发广播信息给为应用注册的广播,其内部的aidl实现类InnerReceiver接收Android系统中广播,注册一个广播会创建一个InnerReceiver对象。初始化3种广播队列,处理注册广播流程缓存注册的广播对象binder等信息,处理发送广播流程处理广播分发流程,和广播超时策略。mParallelBroadcasts存储无序广播列表。
2024-10-31 17:02:08
527
原创 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
313
原创 Android系统启动流程简介
ActivityManagerService通过Binder机制与ActivityManager进行通信,提供对系统中其它组件的管理和监控功能.从上面可知SystemServer.startBootstrapServices 启动系统Boot级别服务 会启动ams,调用如下:SystemServiceManager.startService(@NonNull final SystemService service) 方法。
2024-08-13 19:14:05
996
原创 gradle 插件版本 4.2.2对应gradle 发行版本以及支持的 kotlin版本
gradle 插件版本 4.2.2对应gradle 发行版本以及支持的 kotlin版本 如下:项目 build.gradle文件中:gradle-wrapper.properties 文件中:官方匹配关系如下链接:
2024-08-09 10:57:59
1382
原创 不销毁activity实现白天黑夜主题切换
一.onCreate初始化AppCompatActivity.onCreate 先调用getDelegate() 创建 AppCompatDelegateImplN(最终继承AppCompatDelegateImplV9->AppCompatDelegateImplBase)对象 delegate,然后调用 delegate.installViewFactory()AppCompatDelegateImplV9 实现接口LayoutInflater.Factory2。
2024-08-02 17:00:34
801
原创 Android应用与SurfaceFlinger建立连接及通信的过程
Android应用与SurfaceFlinger建立连接及通信的过程主要用到的文件。
2024-07-19 17:23:02
835
原创 Android中毛玻璃效果的两种实现
方法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
2153
原创 高通 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
2368
原创 Android activity主题设置
注意 如果AndroidManifest 默认陪着一个主题,然后onCreate代码中动态切换主题,主题背景色切换 会有一个闪的过程。方法1 AndroidManifest 设置theme。方法2 Activity 中设置theme。
2024-03-20 10:54:39
533
原创 Android mvvm使用流程
ViewModelProvider初始化时如果不传递 ViewModelProvider.Factory,则ViewModelProvider内部会使用默认的 Factory,getTestLiveData 返回LiveData提供 数据给ViewModel,ViewModel 及view层获取到LiveData即监听数据的变化。ViewModel 类提供了一种保存和管理界面相关数据的机制,并确保这些数据在配置更改(如设备旋转)时不会丢失或重新创建。3.创建view类UiTestActivity。
2024-02-26 13:06:23
796
原创 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
1324
原创 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
1030
原创 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
2660
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
972
原创 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
479
原创 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
1470
原创 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
576
原创 shell 常见命令
====模拟点击返回键 keyevent 4,home键3。====apksigner命令查看查看apk文件是v几签名。====命令查询 v1 和v2签名apk的签名详情信息。====== adb 查询Android系统版本。主体公共密钥算法: 2048 位 RSA 密钥。签名算法名称: SHA256withRSA。====根据包名称获取 apk 路径。=====强制设置存储空间低。====清除对应包的数据和缓存。=====添加log缓冲区大小。====依据包名查询签名信息。====依据包名查询版本号。
2024-01-18 10:29:40
431
原创 launcher 点击和滑动屏幕过程分析
若onInterceptTouchEvent方法 return true,则会进入 onTouchEvent事件中,onInterceptTouchEvent只会执行一次本次ACTION_MOVE而onTouchEvent会执行多次包括上面的ACTION_DOWN,ACTION_MOVE,ACTION_UP的事件;------------------------------------------------------滑动一次log-----------------------------
2024-01-18 10:26:15
401
原创 android onInterceptTouchEvent和onTouchEvent的执行关系
------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收。-------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收。-------onInterceptTouchEvent不拦截 part2---------onTouchEvent接收。-------onInterceptTouchEvent不拦截 part2--------onTouchEvent接收。
2024-01-18 10:25:26
397
原创 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
378
原创 android 抓log 方法
dmesg是kernel的log,凡是跟kernel相关的,比如driver出了问题(相机,蓝牙,usb,启动,等等)开机信息亦保存在/var/log目录中,名称为dmesg的文件里。在导出到u盘的log中,进入目录 /android_logs/logm/ 查看the_xx_top.log。adb logcat -v time > D:\Monkey\录音机\logcat.txt。//2.抓普通log 到文件, 将文件保存为1.bat,双击执行。
2024-01-18 10:09:08
622
原创 Android JNI, .so library 调试命令
详情见:http://blog.csdn.net/jianzhengzhouzjz/article/details/7766656。----高通平台还有一种方法调试。
2024-01-18 09:59:02
409
原创 fastboot 单独烧录bootimage
用which fastboot命令找到fastboot所在的目录,然后进入此目录;2.将下段代码保存成download_bootimage.bat,双击该bat文件即可。fastboot 目录 ~/7710/out/host/linux-x86/bin。注:单独烧录 其他模块同此方法,如:烧录 system.img 第三行变成。1.将编译好的bootimage.img 放到烧录目录里面,执行命令:make bootimage (常用的。1. 将fastboot的所有者属性改成root。
2024-01-18 09:57:50
534
原创 将整个android项目导入Eclipse
4,然后File-New-java Project 指定Location为android源码所在的目录(也就是.classpath文件的复制的位置)。1, 将源码目录下 development/ide/eclipse/.classpath 文件 拷贝到当前源码根目录。cp development/ide/eclipse/.classpath ~/源码目录名。3,修改下eclipse文件里eclipse.ini配置参数。2, 修改拷贝过来文件的权限。
2024-01-18 09:56:51
416
原创 ubuntu 使用adb shell命令配置
该文件在路径 ~/.android/ 目录下 ,若不存在创建该文件。adb_usb.ini 在文件里面输入插入手机的设备id信息,如:0x1782。这个1782 就是我连接的手机设备id,如果不能确定是哪个,可以拔掉usb线,再次输入下lsusb命令,对比一下就可以知道你的设备id是什么了。想要在ubuntu下使用adb 命令识别新连接的手机设备需要先配置一下adb_usb.ini 文件。获取设备id方法:在命令行 输入lsusb 就可以看到。这个1782就是设备的id,
2024-01-18 09:54:35
454
原创 Android支持包冲突的解决
另外还有一个建议,在我们自己创建library给别人使用时,如果需要依赖com.android.support的话,建议用provided的方式依赖(android studio3.0中更改为compileOnly),这样只会在编译时有效,不会参与打包。以免给使用者带来不便。api是android studio3.0中新的依赖方式,对依赖方式还不熟悉的话可以看这篇文章:Android Studio3.0新的依赖方式。module:删排除group中的指定module。
2024-01-18 09:51:15
564
原创 android 自定义通知栏
/自定义的布局视图。一、创建通知栏布局文件 view_notification_layout.xml。// .setContentText("您有一项新活动")//.setContent(views)//设置布局。// .setContentTitle("活动")
2024-01-17 10:38:36
731
原创 android TabLayout 相关
1. TabLayout 设置 指示条 颜色、高度,字体颜色大小等。3.TabLayout 设置子item margin值方法。2.TabLayout 添加tab方法。
2024-01-17 10:36:38
403
原创 Glide 加载图片 到动态ImageView
下面在获取到下载图片尺寸信息后,基于图片宽高比,设置imageview宽高,给imageview 设置图片资源,
2024-01-17 10:33:43
405
原创 RecyclerView 使用 可动态添加删除编辑
/此处获取自定义bean列表。//通过父类中 getView 方法获取view,不用每次从父布局中遍历。(int viewId) { //将view存储到数组中,每次从数组中读取view。调用removeItem方法可以动态删除列表条目。调用editItem方法可以动态编辑列表条目。调用addItem方法可以动态添加列表条目。
2024-01-17 10:24:28
498
原创 t卡升级时擦除用户data和cache
将String arg = "--update_package=" + filename;修改方法installPackage()
2024-01-16 09:49:26
364
原创 关于屏幕的几个概念 - px, dp,密度等
一般情况下需要创建出values 、values-mdpi 、 values-hdpi文件夹,以备在一些没有规定的尺寸屏幕上找不到资源的情况。然后在里面使用不同的dimens文件,Layout中不要使用显示的数字,所有的尺寸定义全都援引dimens里面的内容。pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
2024-01-16 09:47:27
375
原创 camera2 预览拍照流程及其预览拍照镜像处理方法
/添加这句可以获取实时预览数据回调,一般ImageReader 设置格式为ImageFormat.YUV_420_888 处理实时yuv预览帧。//如果拍照的时候是停止预览的,再拍照回调完成后需要在调用mCameraSession.setRepeatingRequest。//执行拍照,CaptureCallback只是处理拍照状态回调,拍照数据从上面的ImageReader回调获取。//创建拍照请求构建器对象,该对象需要设置ImageReader的surface对象,设置图片方向等。
2024-01-16 09:39:06
842
1
原创 camera2 传参流程以及hal添加自定义参数方法
/遍历获取tag_info_t 中的 ANDROID_CONTROL_AF_MODE 信息 afMode,此时为tag赋值 ANDROID_CONTROL_AF_MODE。1.在 camera_metadata_tags.h 文件camera_metadata_tag中ANDROID_CONTROL_START和 ANDROID_CONTROL_END 之间添加ANDROID_CONTROL_FACEBEAUTY类型,//android_control 数组定义了例如 afMode 对应的key。
2024-01-15 13:25:37
580
原创 android camera2 拍摄yuv图片,并将yuv 保存成Bitmap的方法
预览分辨率为:1280*720,这是获取的 YUV_420_888格式对应的yuv数据log日志,从log看看plane1和plane2 的getPixelStride 是2, 说明间隔的原色才是有效的元素。//获取yuv图像的平面个数,plane0返回的是y分量。即plane1的行内索引为0,2,4,6..对应的是u分量中间插入的是v分量,且数组长度是1280*720/2 -1。yuv420p(例如yv12):每两行的4个字节对应一个像素的y,每两行的2个字节(uv)对应前面的一个像素的y。
2024-01-15 11:04:38
1520
Android camera用到的aidl文件和aidl编译出来.h 和cpp文件
2024-03-12
aidl demo用到的源码和生成java和cpp
2024-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人