aosp14的分屏接口ISplitScreen接口获取方式更新-学员疑问答疑

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

背景:

有学员朋友在学习马哥的分屏pip自由窗口专题时候,做相关分屏做小桌面项目时候,因为原来课程版本是基于android 13进行的讲解的,但是现在公司已经开始逐渐进行相关的android 14的适配了,但是android 14这块相比android 13还是有一些差异,适配起来有点难度,刚好借此机会给大家分享一下。
在这里插入图片描述分屏小桌面最后成果:
在这里插入图片描述

差异核心点

aosp13版本上
这个地方是有直接的splitscreen可以获取,所以当时使用的是splitscreen
在这里插入图片描述
在这里插入图片描述后面在SplitScreen加入了相关的接口

在这里插入图片描述

aosp14版本上
可以看出和aosp13版本确实差异有点大,已经直接看不到对应的SplitScreen相关的接口了
在这里插入图片描述
那么如何进行修改呢?

aosp14适配方案思路

切入点:
目标就是为了可以调用ISplitScreen相关接口,aosp13的SplitScreen其实本质也是调用的ISplitScreenImpl的接口
在这里插入图片描述
ISplitScreenImpl实际是ISplitScreen的aidl的服务端,所以目的是用来提供给桌面等可以跨进程通讯用的。那么桌面本身可以启动分屏,本质就是因为传递了相关的ISplitScreen的binder对象给了桌面,所以顺着找这个ISplitScreen的binder实体传递思路寻找到,其实如下代码进行binder对象传递:
都是基于aosp14代码
frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/sysui/ShellController.java
在这里插入图片描述
可以看到是在这里进行的putBinder对象,放到了Bundle传递到了launcher进行
在这里插入图片描述

对于ISplitScreen相关binder的key是如下:
在这里插入图片描述
知道了这个key然后代码中grep结果如下:
在这里插入图片描述看看这个方法:
在这里插入图片描述

再看看createExternalInterface
在这里插入图片描述
哈哈是不是看到和aosp13版本一样的对象了。
再看看addExternalInterface
在这里插入图片描述
明显看出了addExternalInterface就是前面源头

在这里插入图片描述到这里就已经基本上找到了可以获取ISplitScreen接口方法了

解决获取ISplitScreen接口案例

只需要在params填入数据完成后在获取既可以
在这里插入图片描述
打印结果如下:
在这里插入图片描述
正常获取了接口,接下来也可以通过ISplitScreen接口直接进行接口调用

在这里插入图片描述
更多framework实战干货,请关注下面“千里马学框架”

Android11/Android Q分屏功能实现 android分屏功能 阅读详情

相关推荐

android T分屏流程

android T上对分屏流程进行了重构,之前用WINDOWING_MODE_SPLIT_SCREEN_PRIMARY等windowingMode来判断当前窗口是否分屏已经失效;分屏的触发操作放在了wm shell下,运行在systemui进程;将分屏涉及到的reparent、reorder等系列操作封装到WindowContainerTransaction中通过WindowOrganizer的applyTransaction来通知system server进行相关处理实现分屏。

xiaoyantan的博客 5522

Android分屏流程分析

安卓分屏流程分析

qq_36063677的博客 6180

Android11分屏

Android分屏功能适配与配置指南 本文详细介绍了Android分屏功能的实现与适配方法。对于普通应用,开发者可通过设置resizeableActivity属性控制是否支持分屏,并利用最小宽度限定符适配不同分屏比例。系统提供了onTopResumedActivityChanged回调来管理多窗口状态。 系统应用适配方面,介绍了通过ActivityTaskManager启动分屏的方法,以及使用ActivityInfo判断应用是否支持分屏的技术细节。 分屏模块配置部分讲解了系统支持分屏的条件判断,包括内存要求

jsm1010的博客 1835

Android S分屏相关组件总结

总的来说,它们共同协作,实现了分屏模式的管理、窗口的显示和交互。

技术老鸟仍在坚持着,大家一起加油 604

Android9.0源码,实现悬浮按钮,点击一键分屏,再版

实现流程图如下: 源码路径,https://download.youkuaiyun.com/download/gaoyuekang/11594258。 详细描述: 属于系统服务,存放目录在/system/app 下,其实应该放在/system/service目录下,小细节忽略吧。本服务,通过监听系统广播,随主进程被拉起。 关键代码如下: 1. 启动: public class S...

gaoyuekang的博客 5560

android11实现代码进入分屏、代码退出分屏功能

自android7开始,分屏功能官方就已经实现了。Android11的操作方式是点击rescent键,选择一个应用进入分屏,然后系统会自动在下半屏显示另一个应用。 然后客户是客制化的系统,没有任务栏和状态栏。所以需要开发通过代码进入分屏的方式,并且客户希望可以自由开启一个应用进入上分屏或下分屏,自由退出上分屏或下分屏。这些原生Android11都是没有的,只能新开发。

我的博客 2218

Android7.0多窗口实现原理(二)

本文基于AOSP Android-7.1.1-R9代码进行分析。 Android N的的多窗口框架中,总共包含了三种模式。 Split-Screen Mode: 分屏模式。 Freeform Mode 自由模式:类似于Windows的窗口模式。 Picture In Picture Mode:画中画模式(PIP) 经过一段时间的研究,总结一句话:多窗口框架的核心思想是分栈和设置栈边界。本文会从系统源码角度分析分栈以及设置栈边界的步骤和原理,从而解析多窗口三种模式的实现方式。 栈 既然提到了分栈,

Jason_Lee155的博客 6232

Android9.0悬浮按钮一键分屏SplitScreen.zip

基于Android9.0源码开发。实现屏幕侧边悬浮按钮,点击一键进入分屏模式的demo 积分改不了!!!!不能免费!!!!需要的留邮箱吧

Android U 分屏相关流程——整体流程介绍

原生的分屏功能是在多任务中,点击应用图标选择分屏,在选择多任务中的其他应用进行分屏。

yimelancholy的博客 5370

PCIe网卡驱动实现分析(三)--- cache一致性

在现代处理器系统中,CPU的主频远高于主存读写速度,主存的读写速度成为程序执行效率的瓶颈;为了解决这个问题,在CPU和主存之间引入了Cache存储器,基于程序执行的局部性原理,在程序执行时,将正在使用的数据从主存拷贝一份到Cache,这样CPU就可以直接从Cache读写数据以改善主存读写速度慢的问题;

a935854743的博客 1779

基于javaEE的图书管理系统

极简的图书管理系统,无任何样式修饰,适合新手练手(图文并释) 1、实现了用户注册、登录,图书的添加、修改、删除和修改操作 2、工具需要:eclipse、mysql、Tomcat 3、做系统之前在eclipse需要配置Tomcat服务器和导入mysql连接数据库的jar包 4、数据库中建一个user表存用户信息,一个book表存图书信息 一、各种页面 index.html文件,系统运行的首页,有登录...

qq_44357792的博客 2万+

Android分屏功能原理(基于Android12L)

Android分屏功能原理(基于Android12L)分屏功能目的是为了提高用户的生产效率,提高多应用使用的便捷性;Android 很早版本就已经提供了分屏功能,不过随着版本的迭代,特别是Google开始关注Android大屏设备的用户使用体验,内部的实现逻辑也和以前有很大的差别值得注意的是原生Android分屏功能只允许在任务管理器中选择分屏应用,如果应用未打开过,就无法分屏Android13上...

Android技术之家 4335

GPU八卡A100使用INT4-W4A16量化大模型实验

本实验旨在探索在环境下,对大语言模型进行权重量化的可行性、效率与性能影响。通过采用工具集成 GPTQ 算法,实现对所有线性层的权重量化(W4A16 方案最终通过lm-eval工具在GSM8K任务上对压缩模型进行评估。

goodgood_UP的博客 1909

推荐项目:Android Split Pane Layout

推荐项目:Android Split Pane Layout 项目简介 Android Split Pane Layout 是一个开源的 Android 库,它允许开发者在同一个 Activity 中实现屏幕分隔布局,以支持平板电脑和其他大屏幕设备上的多任务处理。 项目功能与用途 通过使用 Android Split Pane Layout,您可以轻松地在应用程序中添加类似于 Google Chr...

gitblog_00031的博客 453

高通Camera AWB跳变问题实战:从夕阳场景到参数调优的完整避坑指南

本文深入解析高通Camera AWB跳变问题,特别是在夕阳场景下的色温突变现象。通过分析灰区统计失效、光源混合干扰等成因,提供从参数调优到诊断工具链的完整解决方案,包括动态灰区扩展算法、色温平滑过渡方案及高通平台特定优化技巧,帮助工程师有效解决AWB跳变问题。

sre5engineer的博客 860

QGroundControl高级配置与自定义功能实战指南

本文深入探讨了QGroundControl(QGC)的高级配置与自定义功能,为无人机开发者、系统集成商和高级用户提供实战指南。内容涵盖从品牌界面定制、自定义MAVLink消息处理,到插件开发与自动化部署的全流程,旨在帮助用户解锁QGC的隐藏潜力,打造专属的行业解决方案。

weixin_29234509的博客 242

Android的分屏模式

Android分屏模式是一项功能强大且实用的功能,可以为用户带来更好的多任务处理体验。无论是对于普通用户还是应用开发者,了解和掌握分屏模式的使用方法和开发指南都至关重要。

特立独行的博客 5434

sift、surf、orb 特征提取——三维重建

参考文章:[sift、surf、orb 特征提取及最优特征点匹配] 最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记。 SIFT 简介 SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。 实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的

bb_sy_w的博客 4362

Android U 多任务启动分屏——SystemUI流程

前文说到通过接口跨进程调用到了SystemUI进程,我们继续分析分屏在systemui中的实现,这些实现都是在WMShell中实现的。

yimelancholy的博客 2930

C#上位机开发入门:从基础到进阶的全方位指南

C#作为一门现代化编程语言,具备强大的功能和广泛的生态支持,适合用于开发各种类型的上位机应用。通过学习并掌握UI开发、通信协议、多线程编程、数据库操作等技能,你可以打造出稳定、易用、性能优异的上位机软件。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 8317

1 硬件工程师笔面试高频知识考点真题及解析——电阻

本文系统介绍了电阻的基础知识、选型要点及各类特殊电阻的应用。主要内容包括:1. 电阻选型需考虑阻值、封装、功率、精度、耐压等参数;2. 高频信号优先选用小封装电阻以减小寄生参数;3. 采样电阻需高精度、低温漂以保证测量准确性;4. 详细解析了上拉/下拉电阻、0欧电阻、磁珠等元件的特性与区别;5. 介绍了压敏电阻、热敏电阻等特殊电阻的工作原理及应用场景;6. 阐述了阻抗匹配的重要性及常见匹配方法。文章为电子工程师提供了全面的电阻选型与应用指南。

XU157303764的博客 2874

android 14分屏实战之小米su7的3分屏实现方案讨论及线索征集

调研竞品是如何实现的方案,那当然需要有竞品的设备,可以进行相关的dumpsys,这里因为手上没有su7的车机和汽车可以进行dump,所以暂时没办法进行实际的dump设备查看,即无法分析出小米su7是如何实现的这个3分屏。好了暂时想到就是上面3个方案,其实还是比较推荐方案1,毕竟交互动画体验可以较多的复用2分屏,但是复用也意味着修改较多原来的逻辑,这个暂时还没有时间实战实现这个功能,各位学员们有兴趣可以去尝试实现一下。彻底不使用原来的分屏方案,使用自由窗口方案,整体的3分屏,其实就是3个自由窗口显示着。

learnframework的博客 3044

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 12/13 分屏设置Task的Bounds区域-系统车机开发必学

这里面进行对应分屏相关的一个业务处理, 比如分割线拖拽对两个分屏大小影响等。最后都会通过包装成WindowContainerTransaction对象,再通过WindowOrganizerController的本地代理,跨进程传递到systemserver的WindowOrganizerController类中进行处理.hi,近来研究分屏时候发现android 13上的分屏和以前的分屏代码差别比较大。最后就是调用的windowConfiguration.getBounds。其实Task的Bounds就是。

liaosongmao1的专栏 1391

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android N App分屏模式完全解析(下)

转载地址:http://unclechen.github.io/2016/03/12/Android-N-App%E5%88%86%E5%B1%8F%E6%A8%A1%E5%BC%8F%E5%AE%8C%E5%85%A8%E8%A7%A3%E6%9E%90-%E4%B8%8B%E7%AF%87/ 在上篇中,介绍了什么是App分屏模式,以及如何设置我们的App来进入分屏模式。这次我

scott2017的博客 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 分享常见selinux相关命令
下一篇: aosp14安卓14无法事件注入报错was not directed at a window owned by uid
千里马学框架
博客等级 码龄6年 1万+粉丝 651原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值