手机与电视,是陪伴在我们生活最常见,陪伴最长久的智能设备。迅猛发展的移动终端与通信技术,赋予了手机更广阔多元的应用生态,大屏电视则以大视野和震撼影音,弥补了手里方寸带来的视觉局限。而今,手机的延伸需求越来越突出,无线投屏也正逐渐成为观看移动终端内容的主流方式之一,并在影音娱乐、远程教育、在线办公等方面扮演不可或缺的角色。

  通过接入华为终端分布式技术Cast+ Kit,可以实现以华为手机为中心,以Cast+镜像投屏、Cast+流媒体投屏为载体,完成从手机小屏到高清大屏的柔滑转换,为用户带来大屏观影、大屏阅读和游戏自带8倍镜的全新感受。

  话不多说,我们直接进入一星期教你快速集成华为Cast+ Kit的实战演练环节。跟着下方攻略即可轻松完成开发。

首先,接口调用过程一图了解——



  简单来说开发接入大致可以分为六个流程,首先需要进行变量声明并获取PlayerClient实例;然后在应用启动时,获取PlayerClient实例,启动服务,注册监听;三要进行投屏业务相关内容设置,包括投屏属性设置、鉴权模式信息设置和可被周边设备发现的相关设置;四则是设置投屏显示Surface,这里需要注意的是应用层面,要求保证投屏过程中不能录屏、截屏、录音,要求SurfaceView要设置FLAG_SECURE;最后的两步则是与投屏相关的内容,也就是启动投屏、暂停投屏和断开连接的的执行。

集成开发全攻略——

  1. 首先创建一个应用工程,在AndroidManifest中添加所需要的权限

  1. 在lib目录下添加SDK的aar文件,并在应用级的build.gradle里面加上SDK的依赖。

  1. 初始化相关服务和实例

注册回调函数:

  在IeventListener的onEvent中,sink端(设备)会上报各种消息,包括初始化服务、收到对端设备发来的连接请求、鉴权成功等;onDisplayEvent是手机端的回调,displayinfo是手机侧的信息

  1. 在初始化成功后,构建大屏投屏能力。设置其显示分辨率、显示帧数、开启被发现、配置低时延策略等等。

  1. 移动端PIN码输入正确或密码输入正确或非首次非密码模式投屏,会上报EVENT_ID_CONNECT_REQ消息,该消息下会携带请求连接移动端设备的ProjectionDevice信息。

  1. 首次PIN码模式会上报EVENT_ID_PIN_CODE_SHOW消息,PIN码可从dislayinfo.getPinCode()获得。

  1. EVENT_ID_CONNECT_REQ消息后,顺序上报EVENT_ID_DEVICE_CONNECTED和EVENT_ID_PAUSED消息。PAUSED消息下大屏端可以设置Surface并开始播放投屏视频流,前提是必须保证Surface有效并且收到PAUSED后才开始投屏操作,以免因设备原因出现黑屏问题。





      集成完成啦,我们来感受下黑科技华为Cast+增强投屏技术带来的新体验吧。

    首先华为Cast+Kit采用系统级连接入口,操作简单,在下拉菜单中选择“无线投屏”,点击相应设备后就可以完成投屏。



  那么投屏效果如何呢?在市面上整体无线投屏时延基本在200ms左右的环境下,华为Cast+Kit拥有多项自研技术,可实现50ms的投屏超低时,保障了大型手机游戏的手眼合一。

  *数据来自华为实验室,不同网络环境下投屏时延存在差异

  关于华为 Cast+Kit更多开发详情,包括业务介绍、开发指南、接入准备、SDK如何获取等,戳以下空降链接:

  https://developer.华为.com/consumer/cn/cast-kit


往期链接:别让算法和数据结构拖你职业生涯的后腿

原作者:普拉斯

教你如何开发一个完败Miracast的投屏新功能的更多相关文章

  1. 基于.NetCore开发博客项目 StarBlog - (16) 一些新功能 (监控/统计/配置/初始化)

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  2. 教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法

    曾经,用惯了python print命令的人,惊叹于python语法的精简:后来,用过了tornado.django等web开发框架,不得不佩服当初开发这些框架的人们.于是,我们开始使用它们的框架== ...

  3. 如何用HMS Nearby Service给自己的APP开发一个名片交换功能?

      在工作和生活中,遇见新的同事或者合作伙伴,交换名片是一个常见的用户需求,纸质名片常忘带.易丢失,是客户的一个痛点.因此,市场上出现了很多交换电子名片的APP和小程序.那么,如何给自己的APP开发一 ...

  4. Android | 教你如何用代码开发一个拍照翻译小程序

    引子   想必有很多小伙伴喜欢外出旅游,能去海外玩一圈那是更好不过了,旅游前大家一定会对吃.穿.住.行.游玩路线做各种攻略,然后满怀期待的出发- 想象中的旅游   出发前,想象中的旅游目的地可能有漂亮 ...

  5. 【转】开发一个这样的 APP 要多长时间?

    作者:蒋国刚 www.cnblogs.com/guogangj/p/4676836.html 呵呵. 这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座.开始了…… 我有些尴尬地拿着 ...

  6. 开发一个这样的 APP 要多长时间?

    作者:蒋国刚 www.cnblogs.com/guogangj/p/4676836.html 这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座.开始了…… 我有些尴尬地拿着水杯,正 ...

  7. Android开发笔记:安卓程序截屏方法

    1,基于Android SDK的截屏方法 (1)主要就是利用SDK提供的View.getDrawingCache()方法.网上已经有很多的实例了.首先创建一个android project,然后进行L ...

  8. 手把手教你用Vue2+webpack+node开发一个H5 app

    手把手教你用Vue2+webpack+node开发一个H5 app ​前一篇vue2 + webpack + node 开发一个小demo说到了用vue的一些基本用法,这一篇就讲一个复杂一点的更完整的 ...

  9. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统系列博文索引

    近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开 ...

随机推荐

  1. Java实现 LeetCode 301 删除无效的括号

    301. 删除无效的括号 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果. 说明: 输入可能包含了除 ( 和 ) 以外的字符. 示例 1: 输入: "()())()&quo ...

  2. Java实现 LeetCode 191 位1的个数

    191. 位1的个数 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 1: 输入:000000000000000000000000000 ...

  3. Linux fdisk手动分区

    查询系统中可以被识别的硬盘:fdisk -l 可以看到,我的服务器只有一块硬盘,容量是53.7GB,有1个分区,文件系统类型是Linux,Id 是83(82是Linux swap分区,相当于Windo ...

  4. JPA入门及深入

    一:ORM介绍 ORM(Object-Relational Mapping) 表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能够做到建立对象与数 ...

  5. JSP基础知识点(转传智)

    一.JSP概述    1.JSP:Java Server Pages(运行在服务器端的页面).就是Servlet.    学习JSP学好的关键:时刻联想到Servlet即可.    2.JSP的原理  ...

  6. Python3 源码阅读-深入了解Python GIL

    今日得到: 三人行,必有我师焉,择其善者而从之,其不善者而改之. 今日看源码才理解到现在已经是2020年了,而在2010年的时候,大佬David Beazley就做了讲座讲解Python GIL的设计 ...

  7. 如何安装 Sublime text 编辑器相关的插件

    Sublime是一个伟大的编辑器,具有可靠的基础功能,使编写代码变得愉快.您可以安装一个包管理器,以便于安装插件和添加新功能. 为什么使用包管理器(package manager) 包管理器可以方便地 ...

  8. Laravel中Homestead添加多站点时遇到问题

    Homestead做Laravel的开发还是很方便的,但是在添加多站点的时候,发现几个坑,来做个记录. 首先,官方文档给了修改homestead.yaml文件的方式,只需要在sites字节下添加一个新 ...

  9. Apache(httpd)详解

    httpd详解(思维导图) 1. httpd服务 ASF 服务器类型 http服务器 应用程序服务器 httpd的特性 高度模块化 DSO机制 MPM httpd的并发响应模型 prefork wor ...

  10. mybatis 学习教程

    https://www.cnblogs.com/ashleyboy/category/1246107.html