自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 从0到1学Binder-环境准备

终于要开始啃 binder 了,其实还没准备好,但是先走出去吧,目标是 2024 年一个整年能把 binder 学完。

2024-02-04 21:40:59 260

原创 万字解析Android Handler实现原理

史上最全Android Handler机制原理解析

2024-01-22 08:00:00 1013

原创 Android Native Crash 问题分析第一弹

如何定位遇到的Android Native Crash问题呢,这里的方法很有效,快来围观吧

2024-01-10 08:00:00 536

原创 [Android Camera精讲]CameraServer启动流程

为什么要讲启动流程呢,因为启动过程中初始化了很多东西,如果这部分略过不看的话, 在看Camera打开、预览等流程时就会很懵,有很多东西不知道哪里来的,其实就是开 机时,进程启动过程初始化的,所以这个很重要。

2024-01-08 08:00:00 1057

原创 Android 13内置可卸载应用

欢迎关注微信公众号和哔哩哔哩账号。

2023-11-10 23:54:53 409

原创 调试AOSP源码的官方神器-Android Studio for Platform(ASfP)

AOSP阅读调试官方神器ASfP

2023-10-31 07:05:46 932

原创 Android 13 内置三方应用app

也欢迎关注微信公众号期待与你的相识!

2023-10-14 23:41:00 720 2

原创 Android 13 CameraMetadata详解1 (内存分布以及增删改查)

初识camera metadata是不容易理解的,最起码笔者是这样。但是不理解又是不行的,所以只能硬着头皮去看源码,去归纳总结。简单来说,camera metadata就是一块用来存储camera相关参数的内存。比如拍照时的闪光灯,是打开还是关闭还是自动,这个参数就是存储在这块内存当中的。当然,camera的参数有很多,其类型有很多。camera metadata以一定的规则将这些信息全部存储起来,然后再用相同的规则取出。我们先给一张内存分布图,大家在看代码解析时,可以参考这张图来看。

2023-09-19 11:04:28 470 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 1107

原创 使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略

为了方便调试AOSP源码 ,花1000多大洋在pdd上买了一个99新的pixel5手机,从此终于可以在真机上调试代码了。

2023-07-26 22:26:01 584

原创 Android 13 openCamera流程详解

Android从5.0开始已经引入了Camera API2,所以我们后面的流程都是Camera API2调用流程。

2023-07-18 08:00:00 867 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 937

原创 Android 13 cameraserver启动流程

我们会发现CameraService里没有instantiate函数,但是它继承了BinderService,而BinderService里是有instantiate函数实现的。binder相关的我们这里就不详细介绍了,主要介绍Camera相关的业务流程。前面的两篇文章我们已经介绍了CameraProvider进程(Camera HAL)的启动流程,今天我们开始讲cameraserver进程的启动流程。接下来看下CameraService的构造函数,因为上面addService的时候执行了new操作。

2023-06-25 06:58:25 502

原创 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 749

原创 Android 13 Camera HAL启动流程(1)

Android Camera系统开发的开篇,先介绍Camera HAL启动流程

2023-05-30 23:22:34 1637

原创 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 1534 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 2456 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 1402

原创 【机器学习-西瓜书】更文挑战【Day1】:1.1 引言

机器学习-西瓜树 1.1

2022-06-14 22:23:27 96

原创 冒泡排序详解-简单易学,轻松上手

文章目录定义排序过程案例讲解定义冒泡排序,英文名Bubble Sort,这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。排序过程以升序(从小到大排序)为例,冒泡排序中,每一轮排序都会将相邻两元素进行比较,如果前一个元素大于后一个元素,则将两元素位置交换,这样一轮排序完成之后,最大的元素就会处于最后的位置。然后进行第二轮排序,过程同步骤1类似,只是最后一个元素不再参与比较,因为它已经是最大的

2022-05-22 22:59:26 176

原创 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 1470

原创 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 1958 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 4839

原创 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 455

原创 Android WatchDog (2)- Monitor接口详解(Android 12)

WatchDog 核心函数和内部接口Monitor介绍

2021-12-18 22:53:34 2458

原创 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 1885

原创 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 9858 2

原创 Android 8.1 Camera2架构解析(1) CameraService和CameraProvider服务启动流程

Android 8.1 Camera2架构解析&amp;amp;lt;一&amp;amp;gt;CameraService和CameraProvider服务启动流程层级架构概览CameraService和CameraProvider服务启动流程CameraService和CameraProvider服务启动流程)层级架构概览CameraService和CameraProvider服务启动流程我们对Markdown编辑...

2019-03-17 15:35:23 2964

空空如也

空空如也

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

TA关注的人

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