- 博客(32)
- 收藏
- 关注
原创 从0到1学Binder-环境准备
终于要开始啃 binder 了,其实还没准备好,但是先走出去吧,目标是 2024 年一个整年能把 binder 学完。
2024-02-04 21:40:59 260
原创 Android Native Crash 问题分析第一弹
如何定位遇到的Android Native Crash问题呢,这里的方法很有效,快来围观吧
2024-01-10 08:00:00 539
原创 [Android Camera精讲]CameraServer启动流程
为什么要讲启动流程呢,因为启动过程中初始化了很多东西,如果这部分略过不看的话, 在看Camera打开、预览等流程时就会很懵,有很多东西不知道哪里来的,其实就是开 机时,进程启动过程初始化的,所以这个很重要。
2024-01-08 08:00:00 1060
原创 Android 13 CameraMetadata详解1 (内存分布以及增删改查)
初识camera metadata是不容易理解的,最起码笔者是这样。但是不理解又是不行的,所以只能硬着头皮去看源码,去归纳总结。简单来说,camera metadata就是一块用来存储camera相关参数的内存。比如拍照时的闪光灯,是打开还是关闭还是自动,这个参数就是存储在这块内存当中的。当然,camera的参数有很多,其类型有很多。camera metadata以一定的规则将这些信息全部存储起来,然后再用相同的规则取出。我们先给一张内存分布图,大家在看代码解析时,可以参考这张图来看。
2023-09-19 11:04:28 475 1
原创 Android 13 Camera预览流程详解
环境说明硬件设备AOSP版本Camera HAL So库Google提供的参考实现 camera.v4l2以上环境看起来似乎有些奇怪,因为Android 13的时候其实已经不再用[email protected]了,我们之所以拿这个来分析,是因为目前很多公司使用的AOSP版本并不是最新的,这个2.4版本使用的是比较多的。当然,我们分析完2.4后,后面也会分析最新的基于AIDL实现的camera.provider进程。
2023-09-11 21:03:42 1115
原创 使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略
为了方便调试AOSP源码 ,花1000多大洋在pdd上买了一个99新的pixel5手机,从此终于可以在真机上调试代码了。
2023-07-26 22:26:01 591
原创 Android 13 openCamera流程详解
Android从5.0开始已经引入了Camera API2,所以我们后面的流程都是Camera API2调用流程。
2023-07-18 08:00:00 872 2
原创 Android 13 Java调用Native本地服务
/ frameworks/base/core/java/android/bean/BeanManager.java // 我们新建了一个bean目录用来保存我们的BeanManager类,对应的包名为 // android.bean package android . bean;
2023-06-30 23:37:36 938
原创 Android 13 cameraserver启动流程
我们会发现CameraService里没有instantiate函数,但是它继承了BinderService,而BinderService里是有instantiate函数实现的。binder相关的我们这里就不详细介绍了,主要介绍Camera相关的业务流程。前面的两篇文章我们已经介绍了CameraProvider进程(Camera HAL)的启动流程,今天我们开始讲cameraserver进程的启动流程。接下来看下CameraService的构造函数,因为上面addService的时候执行了new操作。
2023-06-25 06:58:25 504
原创 Android 13 Camera HAL启动流程(2)
好的,本节主要讲了hw_get_module的函数实现,Camera HAL的启动流程我们就先讲到这里,当然还没结束,具体So库的地方也是简单介绍了一下。对于具体厂商So库的实现,我们只把关键的地方介绍一下(以Google默认实现为例),不会做深入的分析,后续有机会的话会把几个大平台的Camera HAL实现大概介绍一下(以网上公开资料讲解),或者尝试自己去写一个完整的Camera HAL实现,这就是后话了。第一个参数为CAMERA_HARDWARE_MODULE_ID ,定义的地方为。
2023-06-04 23:21:52 750
原创 i7-12700K核显部署Stable DiffusionAI画图环境
具体流程可以参考以下链接,本人也是参考这个,然后遇到问题Google,最后成功搭建。由于目前显卡价格昂贵,所以目前用的核显,电脑配置如下,操作系统为window11。安装Python3.10.6和git,注意这两个工具都添加到系统环境变量中。下载完成后放到如下目录,并且重命名为Model.ckpt。其实很简单,但是会有一些坑,所以记录一下整个过程。执行上面两条命令,将33210替换成自己的端口号。通过以下路径找到http代理端口号。
2023-05-05 23:48:31 812
原创 Android 13添加自定义Java系统服务(二)
*** {@hide}// 自定义类型前面必须加上in或者out或者inout标识符 // in: 表示参数只能由客户端传递到服务端,基本类型默认只支持in修饰符 // out: 表示参数只能由服务端传递到客户端,服务端如果修改了参数对象的值 // 那么客户端的值也会改变,但是服务端无法读取客户端对象的值 // inout: 表示参数可以双向传递 void sayHelloTo(in Person person , String words);
2023-04-12 22:33:17 449 2
原创 Android 13添加自定义Java系统服务(一)
Binder默认可以传输基本类型的数据,如果要传递类对象,则这个类需要实现序列化。我们先定义一个序列化的自定义类型,用于binder间参数传递。创建自定义类型,实现Parcelable接口// 注意定义成员变量的顺序,后面读取和写入都必须按这个顺序 private String mName;// 注意定义成员变量的顺序 this . mName = in . readString();mAge = age;return 0;
2023-04-07 23:32:17 1540 3
原创 Android 13添加自定义native服务
简单解释一下,我们需要为定义的服务定义一个标签,ServiceManager执行addService操作时会进行检查,如果不定义标签的话会使用默认的default_android_service,但Selinux是不允许以这个标签add service的。将一组数据用快速排序进行排序后输出,然后服务退出,通过日志可以看到,服务退出后init发送了signal 9,到此服务进程退出。也可以不加上面的编译选项,直接make beanserver_client,然后将生成的产物adb push到系统目录也可以。
2023-04-01 09:44:29 2466 9
原创 Ubuntu 22.04编译AOSP Android 13
下面选择自己想要的版本,如果想要启动模拟器的话,要选择sdk开头的,比如aosp_car_x86_64-userdebug是无法启动模拟器的,sdk_car_x86_64-userdebug 可以启动模拟器。-j后面的数字为使用cpu的线程数,我的电脑是20线程,我选择16防止电脑卡顿,后面编译也是如此。创建保存代码的目录,我下载分支为android-13.0.0_r35,如果想下载其他分支,请查看。等待编译完成,我编译了一个半小时,如果选择-j16的话应该会更快。如果切换了终端窗口,则执行。
2023-03-24 22:54:43 1408
原创 冒泡排序详解-简单易学,轻松上手
文章目录定义排序过程案例讲解定义冒泡排序,英文名Bubble Sort,这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。排序过程以升序(从小到大排序)为例,冒泡排序中,每一轮排序都会将相邻两元素进行比较,如果前一个元素大于后一个元素,则将两元素位置交换,这样一轮排序完成之后,最大的元素就会处于最后的位置。然后进行第二轮排序,过程同步骤1类似,只是最后一个元素不再参与比较,因为它已经是最大的
2022-05-22 22:59:26 177
原创 Android Camera2 openCamera流程详解(1)
本文用Android 11 的代码进行梳理。Android Camera2 open Camera的接口为CameraManager的openCamera函数,如下:frameworks/base/core/java/android/hardware/camera2/CameraManager.java648 @RequiresPermission(android.Manifest.permission.CAMERA)649 public void openCamera(@Non
2022-05-19 23:02:35 1471
原创 MacOS OpenCV 4.5.5 开发环境搭建图文教程Python+VSCODE(超详细)
OpenCV概述OpenCV全称是Open Source Computer Vision Library,也就是开源的计算机视觉库。其实就是处理图形和图像的开源算法库,比如人脸识别、图片内容识别、自动驾驶等场景。同时它的开发也是跨平台的,支持Windows、Linux、macOS、Android、IOS,提供了C/C++、Python、Ruby、Matlab等语言的接口。废话不多说了,大概就介绍这么多,在后面的具体使用中再加深对其概念的理解吧。本系列文章将用Python语言进行OpenCV的开发实战。
2022-05-09 01:49:11 1959 2
原创 ubuntu 22.04安装VMWare WorkStation
官网下载安装包,下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html下载完成后修改权限:chmod u+x VMware-Workstation-Full-16.2.3-19376536.x86_64.bundle运行安装包:sudo ./VMware-Workstation-Full-16.2.3-19376536.x86_64.bundle步骤三执行完成后,在应..
2022-04-23 19:23:38 4842
原创 Android WatchDog(4) - watchdog线程(Android 12)
WatchDog启动流程中我们讲到,WatchDog启动时会启动名为watchdog的mThread线程,本节我们分析该线程的run函数,也作为WatchDog系列的最后一篇。long timeout = CHECK_INTERVAL;//30s// Make sure we (re)spin the checkers that have become idle within// this wait-and-check intervalfor (int i=0; i<mHandlerCheck
2022-01-04 23:53:22 945
原创 Android WatchDog(3)- HandlerChecker详解(Android 12)
前言复杂的东西往往很难掌握,但是我们可以把问题进行拆解,拆解成一个个容易理解的小模块,当每个小模块都掌握后,整个大模块也就迎刃而解了。本章将主要讲解WatchDog的实现原理,尽量做到简单、清晰。先看下WatchDog内部类Monitor:interface MonitorMonitor是WatchDog的内部接口,如下: public interface Monitor { void monitor(); }可以看到该接口只有一个monitor()方法,凡是想
2021-12-19 08:49:22 456
原创 Android WatchDog (2)- Monitor接口详解(Android 12)
WatchDog 核心函数和内部接口Monitor介绍
2021-12-18 22:53:34 2460
原创 Android WatchDog(1)- 启动流程(Android 12)
SystemServer启动时会启动WatchDog并进行初始化,如下: private void startBootstrapServices(@NonNull TimingsTraceAndSlog t) { t.traceBegin("startBootstrapServices"); // Start the watchdog as early as possible so we can crash the system server //
2021-12-14 23:40:55 1886
原创 ubuntu 20.04 缺少导致libpng12-0 导致apt无法更新
网上的解决方法:下载libpng12库,复制到相应目录,试过没用我的解决方法:删除掉自己添加的源,文件/etc/apt/sources.list
2020-05-08 10:39:36 3136 1
原创 vim E35: No previous regular expression
找到 ~/.viminfo文件,然后sudo chmod 777 viminfo,问题解决!
2020-03-12 13:13:01 9863 2
原创 Android 8.1 Camera2架构解析(1) CameraService和CameraProvider服务启动流程
Android 8.1 Camera2架构解析&amp;lt;一&amp;gt;CameraService和CameraProvider服务启动流程层级架构概览CameraService和CameraProvider服务启动流程CameraService和CameraProvider服务启动流程)层级架构概览CameraService和CameraProvider服务启动流程我们对Markdown编辑...
2019-03-17 15:35:23 2969
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人