自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

android

Android 视屏悬浮窗

  • 博客(65)
  • 资源 (11)
  • 收藏
  • 关注

原创 ubutun 自定义命令

ll"然后 保存退出文本,执行surce ~/.bashrc 命令立即生效如下:找文件的时候直接findh 文件名即可,greph 一样。

2023-05-25 09:38:14 634

原创 Android input 事件分发 -- inputReader

Android input

2023-01-05 19:24:02 1361

原创 Android input 事件分发 -- InputManagerService 初始化

Android input 事件分发

2023-01-05 14:02:00 820

原创 android input 事件分发 --- 注册input

input event

2023-01-04 17:25:50 1166

原创 ActivityStackSupervisor、ActivityStack、ActivityDisplay、TaskRecord、ActivityRecord

ActivityRecord -> TaskRecord -> ActivityStack -> ActivityDisplay -> ActivityStackSupervisor

2022-11-11 10:41:29 1338

原创 四个action的执行过程

Android a/b面升级

2022-08-15 14:36:20 1592

原创 车机系统多屏互动

Android 车机分屏

2022-06-14 17:29:21 3924 13

原创 动态高斯模糊 surfaceView View

动态高斯模糊

2022-06-13 20:35:23 2173

原创 androidP Surface到SurfaceFlinger -->surface -> BufferQueue(一)

BufferQueue前言介绍BufferQueue::createBufferQueue前言结合前面的一篇文章创建Surface, 我们知道最后会调用到SurfaceFlinger的CreateLayer() 方法,然后会层层调用到 BufferQueue::createBufferQueue(),今天我们就来理理BufferQueue。介绍首先我们要知道BufferQueue的大致工作原理,一个surface会和一个Producer及生产者App进行绑定去产生view数据,然后会通过onFram

2021-12-28 22:04:19 1710

原创 androidP Surface到SurfaceFlinger -->创建Surface (二)

创建Surface (二)前言SurfaceFlinger createLayer前言我们接着androidP Surface到SurfaceFlinger -->创建Surface (一)来看,当new SurfaceControl之后在其构造函数内都做了什么?这一步跟下去就到了SurfaceFlinger了。SurfaceFlinger createLayer对于上层应用所建立的Surface对应到SurfaceFlinger 就是 createLayer我们来跟代码吧,还是从 Surface

2021-12-21 21:21:16 1254

原创 androidP Surface到SurfaceFlinger -->创建Surface (一)

创建Surface前言ViewRootImpl创建Surface前言 我们前面已经分析过Activity启动如何去连接到SurfaceFlinger了,接下来就看Activity的Surface的创建到SurfaceFlinger的过程。ViewRootImpl创建Surface 在调用了WindowManagerGlobal的addView方法之后会首先去创建一个ViewRootImpl将View和Window关联起来,在new ViewRootImpl的时候就创建了一个Surface对象

2021-12-20 20:56:42 2782

原创 androidP Surface到SurfaceFlinger --> Activity 连接 SurfaceFlinger(二)

Activity 连接 SurfaceFlingerSurfaceSession持有SurfaceComposerClientSurfaceSession持有SurfaceComposerClient紧接这上面段落继续跟踪SurfaceComposerClient,我们从Activity 连接 SurfaceFlinge(一)知道,在addWindow的时候都会去重新创建一个Session去和SurfaceFlinger进行连接,在Session的构造函数里面就会去new SurfaceComposer

2021-12-17 20:46:30 1178

原创 androidP Surface到SurfaceFlinger --> Activity 连接 SurfaceFlinge(一)

Activity 连接 SurfaceFlinger前言一、Activity 连接 SurfaceFlinger前言一直想要分析一下surface 的创建到SurfaceFlinger之间的关系,由于它们之间牵扯的东西比较多,终于感觉理的差不多了,记录一下。一个应用想要完成一个View的显示大致需要以下三部1、应用需要先和SurfaceFlinger建立通道,及连接SurfaceFlinger 拿到SurfaceFlinger 的远端代理。2、向SurfaceFlinger申请去创建Surface

2021-12-15 21:16:42 3214

原创 Android 面试问题总结

1、Android是如何解决binder不能进行大数据跨进程传递的?

2021-11-29 20:05:08 2763

原创 camera 之 createCaptureSession

camera 之 createCaptureSession1、createCaptureSession 参数解析2、createCaptureSession 流程分析3、时序图1、createCaptureSession 参数解析1.1、结合上一篇 [openCamera](https://blog.csdn.net/lisiwei1994/article/details/119999793?spm=1001.2014.3001.5501) 成功之后就会通知回调到 CameraDevice.StateC

2021-08-31 20:57:02 3354 3

原创 camera 之 openCamera

openCameraopenCamera() 方法参数解析openCamera() 代码跟踪openCamera() 方法参数解析1、 打开 camera我们可以直接调用系统service,获得CameraManager,然后调用openCamera();CameraManager cameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);cameraManager.openCamera(mC

2021-08-30 20:50:44 4341

转载 Camera hal 之 CameraProvider

Camera hal 之 CameraProvider 一、CameraProvider的作用二、CameraProvider的启动、初始化一、CameraProvider的作用cameraProvider的主要作用就是向下调用CameraModule,通过CameraModule 来和 Camera driver 交流,向上通过binder会被framework java 层的CameraProviderManager调用,然后CameraProviderManager 最终会被CameraServi

2021-08-26 10:28:48 2456

原创 camera hal 之 CameraModule

camera之 hal CameraModuleCameraModule的作用加载camera hal soCameraModule的作用 我理解的CameraModule的主要作用就是承上启下的作用,在Android 开源规则下hal层各个厂商可以根据知识产权将自己的hal层实现不对外公开,这个CameraModule就是负责加载厂商hal camera so,然后调用相关方法的。加载camera hal so 在 CameraProvider 中持有 CameraModule的对象,在Cam

2021-08-24 20:14:41 1330

原创 c++注册c语言回调

c++ 注册 c 语言回调最近在做项目遇到了一个问题,我使用c++ class 调用c语言写得一个so注册回调,然后这个c 的so ,callback 通知c++ 类。test.hclass test{public: test(); void functionCallback(int type, int size, void *data);private: struct dsi_registry_listener instrumentListener; //c so

2021-02-03 16:08:16 1257

原创 android / liunx 性能问题排查

android 性能异常排查查询主要异常的进程查询主要异常进程的线程给线程标上名字查询主要异常的进程1、使用top命令查看主要cpu使用情况如图 VehicleDeamon cpu使用率异常查询主要异常进程的线程2、使用命令 top -H -p pid, 如 top -H -p 2549如图可以看到 线程名为 emulatorSendWL的线程cpu的使用率是比较高的。给线程标上名字头文件 #include <sys/prctl.h>在线程代码中使用 prctl(PR_S

2021-01-21 16:03:37 867

原创 AndroidP RRO overlay (四)

AndroidP RRO overlay (四)应用重新创建之后,加载overlay资源应用重新创建之后,加载overlay资源我们overlay原理二和三,分别说明了应用createIdmap和如何通知重启应用,这篇就紧接着分析,应用重启之后如何去调用overlay apk的资源。我们这边假设havc.apk在res/values/colors.xml里面定义了一个color值为<color name="havc_icon">#fff4b400</color>然后在 h

2021-01-19 13:57:37 918 1

原创 AndroidP RRO overlay (三)

原理二应用重新加载资源createIdmap之后的事应用重新加载资源createIdmap之后的事

2021-01-18 20:15:05 925

原创 AndroidP RRO overlay (二)

RRO 原理1、create Idmap1、create Idmap我们 AndroidP RRO overlay (一)中介绍了怎么使用命令来替换overlay,那接下来就看看执行这个 adb shell cmd overlay enable --user 0 com.android.car.hvacOverlay 之后做了哪些事。接收这个命令的类是frameworks/base/services/core/java/com/android/server/om/OverlayManagerShe

2021-01-07 19:27:05 1364 1

原创 AndroidP RRO overlay (一)

Android RRO overlay1、Android P overlay1.2 静态 overlay原理1.3 动态overlay1、Android P overlay新年第一帖,最近又开始接手Android overlay了,说实话一开始接手overlay的时候我是拒绝的,因为我不是很喜欢和界面打交道,但是总是要恰饭的,结果越干还越有意思,这里就给大家分享一下,我的心得。干overlay的应该都知道,android 的overlay分为静态overlay(SRO)和动态overlay(RRO),

2021-01-07 16:32:04 1718 4

原创 Android P 分屏显示

分屏显示一、前提概要:二、实现概要:2.1 我们要一启动左边显示仪表os、右边显示ivi.一、前提概要:我是做车机ivi开发的,目前有个需求是仿特斯拉的娱乐系统显示,用一个大屏左边来显示仪表os、右边来显示ivi。二、实现概要:我的ivi是基于Android os来发的,所以分屏方案也是基于Android的应用分屏来实现的。但是原来Android的应用分屏不能完全满足我们的要求:1、我们要一启动左边显示仪表os、右边显示ivi。2、左右分屏大小要固定,不能拖拽,不支持用户进入recent vi

2020-11-03 19:34:33 4098 5

原创 android 手势识别 (缩放 单指滑动 多指滑动)

@[TOC](Android P 手势识别)1、前提介绍:关于Android 手势识别就是当前view 根据用户的不同touch行为,给出不同的处理结果。这里我介绍一下我自己做的一些手势识别如下。2、单指相关2.1 单指点击、长按、拖动、左滑、右滑、上滑、下滑,在frameworks/base/core/java/android/view/GestureDetector.java Android原生代码就已经实现了。我们使用的时候只需要继承 SimpleOnGestureListener cla

2020-10-30 16:08:53 4176 1

原创 AndroidP SEAndroid 项目实战

SEAndroid 项目实战1、介绍2、如何配置2.1、sepolicy的来源1、介绍 首先什么是 SEAndroid,我们都知道 Android 是基于 linux系统搭建的,而 SELinux(Security-EnhancedLinux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux 历史上最杰出的新安全子系统,SEAndroid 也是基于 SELinux 从 Android 4.4平台之后加入到 Android 系统的,SEAndroid在SELinux的基础上添加了

2020-09-08 15:26:42 1095 4

原创 androidP audio system (三) ---> audioFlinger

audioFlinger介绍audioFlinger的启动和运行AudioFlinger 对音频设备的管理介绍 我们前面知道AudioFlinger是android audio的核心内容,启动了承上启下的左右,向上向上层提供音频应用层所需的功能接口,向下直接接触audio hal来管理音频设备。audioFlinger的启动和运行贴士: 一下代码讲解均是androidP 源码frameworks/av/media/audioserver/audioserver.rcservice audi

2020-09-03 11:07:32 705

原创 androidP audio system (二) ---> 音频框架

音频框架1、linux 中的音频框架1.1、声卡介绍1.2、声卡组成2 音频驱动2.1 OSS2.2 ALSA3、android 音频框架1、linux 中的音频框架1.1、声卡介绍 众所周知,android 系统是以linux为基准的,那么在介绍android 音频框架之前,稍微带一下linux的音频系统。 早期的声卡以插件的方式连接到电脑主板上的,并提供了复杂的音频设备,后期随着技术的发展又出现了“集成声卡”,“集成声卡”又分为“软声卡”和“硬声卡” --- 如果声卡只有解码芯片,没有“主

2020-09-02 18:59:34 612

原创 androidP audio system (一) ---> 音频基础

audio音频基础1、音频的录制过程:2、音频的回放过程3、音频采样3.1 采样速率3.2 采样深度4、声道和立体声4.1 单声道音频基础1、音频的录制过程: 1.1 首先需要,音频的采集设备,比如microiphone,捕获声音信息(初始捕获的信息肯定是模拟信号) 1.2 采集完模拟信号之后就通过模数转换,将模拟信号转化为计算机可以识别的二进制文件 1.3 然后对这些二进制音频数据再进行渲染、过滤等。 1.4 经过上面处理后,由于音频数据还比较大

2020-09-01 10:43:43 333

原创 linux ipc 消息队列

这里写目录标题一、介绍二、函数范例结果一、介绍1、消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。换句话说,我们就是利用这个数据结构 进行进程间的通信,我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。二、函数1.ftok(1)原型: key_t ftok( char * fname, int id )(2)参数: fname:指定的

2020-08-31 18:53:44 341

原创 liunx ipc 共享内存

共享内存介绍基本原理函数范例执行结果介绍 共享内存是liunx平台的一种IPC机制,不同进程可以对同一块内存进行读写,由于所有进程对共享内存的访问就和访问自己的内存空间一样,而不需要进行额外系统调用或内核操作,同时还避免了多余的内存拷贝,所以,这种方式是效率最高、速度最快的进程间通信方式。共享内存和android中binder的通信机制相比,避免了一次copy操作。一般对于共享内存的操作为了避免进程之间的紊乱,会配合使用类似信号量等别的机制加以访问限制访问顺序。基本原理 我们知道共享内存的

2020-08-28 19:32:34 111

原创 liunx ipc 信号量

这里写目录标题介绍原理函数范例注意ipcs -aipcs -qipcs -sipcs -mipcs -q -i idipcs -m -lipcs -cipcs -m -cipcs -q -cipcs -s -cipcs -pipcs -m -pipcs -q -pipcs -tipcs -q -tipcs -m -tipcs -s -tipcs -u介绍信号量准确的来说不算是一种ipc通信机制,更像是一种ipc通信的辅助机制,在信号量的约束下,不同进程访问共享资源或者临界资源的时候,会判断当前信号量是否

2020-08-28 14:03:03 159

原创 linux ipc 有名管道

有名管道介绍作用关键方法用列介绍 1、有名管道是linux系统下的一种ipc通信机制。 2、命名管道也被称为FIFO文件,是一种特殊的文件。作用 1、有名管道是相对于无名管道而产生的,我们知道无名管道只能亲信进程间可以使用,而有名管道在互不相干的两个进程之间可以实现数据交换。关键方法 int mkfifo(const char *filename, mode_t mode) 参数:filename 有名管道文件名(包括路径);mode 权限(读写0666) 注意点

2020-08-27 11:06:42 112

原创 linux ipc 无名管道

介绍 1、无名管道是linux系统下的一种ipc通信机制。 2、在linux下一切皆文件,管道也不列外,管道也是一种特殊的文件,在使用pipe()方法申请的时候,会得到两个文件描述符,一个用于写,一个用于读,这个特殊的“文件”,你可以理解为在系统的内存空间申请了一块地址专门用来进行读写。作用 1、 主要用于进程间的通信,但是这里注意这里的进程是具有特殊关系的亲信进程,比如父进程和子进程、父进程和孙子进程、兄弟进程。 2、为什么只能亲信进程之间使用管道进行IPC通信呢?

2020-08-26 19:58:17 111

原创 C++ 锁

一、互斥锁二、读写锁三、自旋锁四、共享锁

2020-06-04 09:50:08 208

原创 UpdateAttempterAndroid及action机制

一、我们从上一篇已经知道整个update_engine的核心就是UpdateAttempterAndroid,那我们就接着来看UpdateAttempterAndroid都做了写什么事。我们知道BinderUpdateEngineAndroidService的核心方法就是applyPayload(),而BinderUpdateEngineAndroidService :: applyPayload()的内部又调用的是UpdateAttempterAndroid的applyPayload(),这里就主要分析

2020-05-25 16:30:54 1212

原创 updateEngine的内部启动流程

一、这一块主要分析的就是从update_Engine启动到核心类UpdateAttempterAndroid的这个过程。代码路径:system/update_engine/代码分析:main.ccint main(int argc, char** argv) { DEFINE_bool(logtofile, false, "Write logs to a file in log_dir."); DEFINE_bool(logtostderr, false, "Wr

2020-05-25 11:30:33 1302 1

原创 java SystemUpdater 到 c++ updateEngine

一、java SystemUpdater代码路径:packages/apps/Car/SystemUpdater主要代码文件这是android9上Google提供的一个apk,可以理解就是本地U盘测试update_engine升级的一个app。这个app的主要作用就是:1、读取U盘中的升级文件,用户点击目标升级文件。2、调用updateEngine传递主要参数,收updateEngine的callback向用户显示升级升级进度3、在升级结束之后通知powermanager重启机器。分析代码

2020-05-22 20:58:47 937

原创 A/B升级和过去的recover升级的区别。

一、什么是A/B升级1、A/B系统就是设备上有两套系统可以用,其中一套处于active状态,另一套处于备用状态,但是userdata只有一份,两套系统共用,我们在进行系统升级的时候,可以在active的系统中去对备用系统进行更新。当然,设备出厂时这两套系统肯定是一样的。2、出厂时设备上有两套可以正常工作的系统,升级时确保设备上始终有一个可以工作的系统,减少设备变砖的可能性,方便维修和售后3、如果OTA升级失败,设备可以回退到升级前的旧系统,并且可以尝试再次更新升级二、传统recovery系统(and

2020-05-22 19:40:33 3659

NativeApp.tar

NativeApp.tar

2021-06-24

selinux.rar

这压缩包里面有做过的完成项目的SEAndroid配置,具体的细节和经验

2020-08-19

AndroidP CarUxRestrictionsService.xlsx

在车机侧,为了降低车载娱乐在驾驶途中分散驾驶员的驾驶注意力,android AutoMotive,特地提供了在驾驶途中的车载娱乐限制功能,优化驾驶体验、提高驾驶员的驾驶注意力。

2020-03-17

Activity和Service通过aidl交互(跨进程)

不同的两个应用A和B,A中有Service,B中通过aidl和A实现交互

2019-01-31

android touch事件解析

测试过程自己重载了Testlinearlayout 继承自 linearLayout ,里面包含了一个重载的TestButton继承自Button

2018-12-29

BottomNavigationView》底部导向栏 和 《viewPager》的结合使用

BottomNavigationView》底部导向栏 和 《viewPager》的结合使用

2018-12-14

两个Activity在调用StartActivity的时候传递序列化信息

两个Activity在调用StartActivity的时候传递序列化信息

2018-11-22

listView 中OnItem点击画面

这个是在使用listView之后,点击Onitem做出点击响应,实现画面跳转

2018-11-21

listIView的使用

listView的具体使用,代码下载下来就可以使用,备注详细

2018-11-21

android listView

listview结合sildingLyout的使用,下拉刷新。为什么非要50个字节

2018-11-21

Android 视频悬浮窗

本代码资源是关于,Android视频悬浮窗的,里面的代码可以直接运行

2018-10-29

空空如也

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

TA关注的人

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