当前位置: 首页 > news >正文

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

背景:

有学员朋友在学习马哥的分屏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接口直接进行接口调用

在这里插入图片描述

本文章更多详细代码和资料需要购买课程获取
hal+perfetto+surfaceflinger
https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述

私聊作者+v(androidframework007)

其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

http://www.lryc.cn/news/353488.html

相关文章:

  • 定积分求解过程是否变限问题 以及当换元时注意事项
  • 保研机试算法训练个人记录笔记(七)
  • 【MySQL精通之路】SQL优化(1)-查询优化(23)-避免全表扫描
  • 【Linux】写时拷贝技术COW (copy-on-write)
  • 用python使用主成分分析数据
  • 用WPS将多张图片生成一个pdf文档,注意参数设置
  • virtual box ubuntu20 全屏展示
  • react中的数据驱动视图,useState()的使用
  • 金融数据库,实时行情,股票财务数据在线查询
  • 开源模型应用落地-LangSmith试炼-入门初体验-数据集评估(三)
  • 设计模式 15 Decorator Pattern 装饰器模式
  • cuda11.8安装torch2.0.1
  • 新手困 ViewModel与Activting的databinding2个对象 区别
  • Cocos Creator 声音播放与管理详解
  • 今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月26日,星期日
  • IDEA快速生成类注释和方法注释的方法
  • [集群聊天服务器]----(七)业务模块之一对一聊天、添加好友函数、好友类以及离线消息类
  • java中使用jedis连接redis
  • 【多线程开发 2】从代码到实战TransmittableThreadLocal
  • 【车载以太网测试从入门到精通】——SOME/IP协议测试
  • 作业39 sqrt应用
  • springboot 实现跨域的几种方式
  • springmvc Web上下文初始化
  • Verilog实战学习到RiscV - 2 : wire 和 reg 的区别
  • OpenGL给定直线起点和终点不同的颜色,使用中点Bresenham画线
  • IT行业的现状与未来发展趋势:从云计算到量子计算的技术变革
  • 电脑远程控制另一台电脑怎么弄?
  • 软件设计师备考 | 案例专题之面向对象设计 概念与例题
  • UniApp 2.0可视化开发工具:引领前端开发新纪元
  • 前端调用浏览器录音功能且生成文件(vue)