- 博客(79)
- 资源 (3)
- 收藏
- 关注
原创 Android Cameara2 + MediaRecorder 完成录像功能
打开相机预览流程是Camera2的默认流程可参考:https://blog.csdn.net/kk3087961/article/details/135616576。
2025-05-27 14:29:26
780
原创 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
972
原创 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
899
原创 Android 系统ContentProvider流程
先从pms获取ContentProvider基本信息创建 ContentProvider实现类对象,然后将ContentProvider 的 Binder 接口对象封装到 ProcessRecord.pubProviders供应客户端aidl调用。
2025-03-29 16:58:09
1109
原创 Android 系统Service流程
1.应用bindService时 会先创建一个LoadedApk.ServiceDispatcher对象和一个LoadedApk.ServiceDispatcher.InnerConnection(继承IServiceConnection.Stub) 是aidl 服务端实现类对象mIServiceConnection,
2025-02-14 17:12:04
1095
原创 adb shell 查询Android应用cpu内存占用及优化
在Android系统性能分析时,经常会拿到系统历史cpu和内存占用日志,来分析某段时间哪些应用cpu和内存占用是否特别高以及变化来确定应用内存或cpu是否需要优化。
2025-01-07 13:56:33
3829
原创 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
1280
原创 Android系统广播流程
主要用到的源码文件提供应用注册广播入口,和ams通信。分发广播信息给为应用注册的广播,其内部的aidl实现类InnerReceiver接收Android系统中广播,注册一个广播会创建一个InnerReceiver对象。初始化3种广播队列,处理注册广播流程缓存注册的广播对象binder等信息,处理发送广播流程处理广播分发流程,和广播超时策略。mParallelBroadcasts存储无序广播列表。
2024-10-31 17:02:08
593
原创 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
349
原创 Android系统启动流程简介
ActivityManagerService通过Binder机制与ActivityManager进行通信,提供对系统中其它组件的管理和监控功能.从上面可知SystemServer.startBootstrapServices 启动系统Boot级别服务 会启动ams,调用如下:SystemServiceManager.startService(@NonNull final SystemService service) 方法。
2024-08-13 19:14:05
1069
原创 gradle 插件版本 4.2.2对应gradle 发行版本以及支持的 kotlin版本
gradle 插件版本 4.2.2对应gradle 发行版本以及支持的 kotlin版本 如下:项目 build.gradle文件中:gradle-wrapper.properties 文件中:官方匹配关系如下链接:
2024-08-09 10:57:59
1684
原创 不销毁activity实现白天黑夜主题切换
一.onCreate初始化AppCompatActivity.onCreate 先调用getDelegate() 创建 AppCompatDelegateImplN(最终继承AppCompatDelegateImplV9->AppCompatDelegateImplBase)对象 delegate,然后调用 delegate.installViewFactory()AppCompatDelegateImplV9 实现接口LayoutInflater.Factory2。
2024-08-02 17:00:34
850
原创 Android应用与SurfaceFlinger建立连接及通信的过程
Android应用与SurfaceFlinger建立连接及通信的过程主要用到的文件。
2024-07-19 17:23:02
874
原创 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
2561
原创 高通 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
2839
原创 Android activity主题设置
注意 如果AndroidManifest 默认陪着一个主题,然后onCreate代码中动态切换主题,主题背景色切换 会有一个闪的过程。方法1 AndroidManifest 设置theme。方法2 Activity 中设置theme。
2024-03-20 10:54:39
570
原创 Android mvvm使用流程
ViewModelProvider初始化时如果不传递 ViewModelProvider.Factory,则ViewModelProvider内部会使用默认的 Factory,getTestLiveData 返回LiveData提供 数据给ViewModel,ViewModel 及view层获取到LiveData即监听数据的变化。ViewModel 类提供了一种保存和管理界面相关数据的机制,并确保这些数据在配置更改(如设备旋转)时不会丢失或重新创建。3.创建view类UiTestActivity。
2024-02-26 13:06:23
840
原创 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
1385
原创 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
1105
原创 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
3232
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
1009
原创 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
489
原创 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
1572
原创 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
617
原创 shell 常见命令
====模拟点击返回键 keyevent 4,home键3。====apksigner命令查看查看apk文件是v几签名。====命令查询 v1 和v2签名apk的签名详情信息。====== adb 查询Android系统版本。主体公共密钥算法: 2048 位 RSA 密钥。签名算法名称: SHA256withRSA。====根据包名称获取 apk 路径。=====强制设置存储空间低。====清除对应包的数据和缓存。=====添加log缓冲区大小。====依据包名查询签名信息。====依据包名查询版本号。
2024-01-18 10:29:40
456
原创 launcher 点击和滑动屏幕过程分析
若onInterceptTouchEvent方法 return true,则会进入 onTouchEvent事件中,onInterceptTouchEvent只会执行一次本次ACTION_MOVE而onTouchEvent会执行多次包括上面的ACTION_DOWN,ACTION_MOVE,ACTION_UP的事件;------------------------------------------------------滑动一次log-----------------------------
2024-01-18 10:26:15
413
原创 android onInterceptTouchEvent和onTouchEvent的执行关系
------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收。-------onInterceptTouchEvent不拦截 part1---------onTouchEvent不接收。-------onInterceptTouchEvent不拦截 part2---------onTouchEvent接收。-------onInterceptTouchEvent不拦截 part2--------onTouchEvent接收。
2024-01-18 10:25:26
405
原创 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
392
原创 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
663
原创 Android JNI, .so library 调试命令
详情见:http://blog.csdn.net/jianzhengzhouzjz/article/details/7766656。----高通平台还有一种方法调试。
2024-01-18 09:59:02
418
原创 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
567
原创 将整个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
430
原创 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
478
原创 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
615
原创 android 自定义通知栏
/自定义的布局视图。一、创建通知栏布局文件 view_notification_layout.xml。// .setContentText("您有一项新活动")//.setContent(views)//设置布局。// .setContentTitle("活动")
2024-01-17 10:38:36
824
原创 android TabLayout 相关
1. TabLayout 设置 指示条 颜色、高度,字体颜色大小等。3.TabLayout 设置子item margin值方法。2.TabLayout 添加tab方法。
2024-01-17 10:36:38
409
原创 Glide 加载图片 到动态ImageView
下面在获取到下载图片尺寸信息后,基于图片宽高比,设置imageview宽高,给imageview 设置图片资源,
2024-01-17 10:33:43
410
Android camera用到的aidl文件和aidl编译出来.h 和cpp文件
2024-03-12
aidl demo用到的源码和生成java和cpp
2024-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人