实时视频

在危急情况下,实时视频等多媒体信息有助于紧急呼叫接线员了解情况。例如:

  • 车辆事故:现场直播视频可帮助他们了解涉及的车辆。
  • 火灾:了解火势和损失程度。
  • 医疗紧急情况:引导用户进行心肺复苏,挽救生命。

ELS 现在可以拦截接听方发起的向用户请求实时视频的短信,并提供集成式视频体验。由于此功能专门用于紧急情况,因此具有以下优势:在紧急情况持续期间,摄像头权限应预先授予。

此功能的主要目标是为用户提供:

  • 无需复杂的权限即可获得顺畅的直播视频体验
  • 为所有 Android 用户提供一致的体验

运作方式

ELS 实时视频流程,显示了 Android 用户的紧急呼叫或短信如何触发 ELS,包括新的实时视频令牌。当接听电话的软件检测到此令牌并将其通过短信消息(其中包含指向实时 WebRTC 视频流的链接)传递回 Android 用户时,ELS 即可提供集成式视频体验。

集成指南

1. 接球

更新 ELS 配置以启用实时视频后,当用户的手机支持该功能时,您将开始在 HTTPS ELS 消息中收到 live_video_token 字段。此功能支持 Android 8 Oreo 及更高版本的设备。

令牌是设备上生成的 ID,每次通话或发短信时都会发生变化,由以下部分组成:

  • 6 个随机字符
  • 字母数字
  • 大写

2. 邀请

检测到令牌后,请通过网址(例如网址参数)在包含视频流链接的短信中传递该令牌,例如:https://example.com/live?token=AFZ791。ELS 会在紧急通话或短信期间检测传入的短信,并查找匹配的实时视频令牌,在本例中为:AFZ791

当设备检测到有效的网址和令牌后,系统会向用户显示一个对话框,询问用户是否要接受该请求。如果对方点击 Accept,系统会在集成式 WebView 体验中打开您的请求短信中发送的链接。

3. 实时视频体验

您的直播视频链接需要支持两种体验:

A. 基于网络浏览器的体验

这可能包括您自己的自定义界面,例如:

  • 按钮
  • 位置信息请求
  • 对话框和意见征求

B. 集成式体验

为此,您必须:

  • 移除所有按钮,因为触摸事件将无法正常运行
  • 直接启动到视频流,不显示任何对话框

检测

您可以通过观察包含 Live 的用户代理来检测集成模式。

移动浏览器体验中的用户代理示例:Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36

集成式 WebView 体验中的用户代理示例:Mozilla/5.0 (Linux; Android 10; K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/125.000 Mobile Safari/537.36 Live/25.23.10

在 JavaScript 中,您可以使用以下代码实现此目的:

if (navigator.userAgent.includes("Live")) {
    <!-- Render integrated experience -->
} else {
    <!-- Render your your own custom UI -->
}

权限

  • 对于集成式直播视频,相机权限应预先授予,您应像往常一样通过 JavaScript 请求这些权限。
  • 位置信息、音频和其他权限将被自动拒绝。

引子

为了提供最佳用户体验,集成体验将提供用于翻转摄像头和切换手电筒的界面元素。

函数名称 返回 说明
相机 switchCamera Promise<bool> 加载时,从后置摄像头(面向模式 = 环境)开始,因为在紧急情况下,后置摄像头最有用。每次调用该函数时,在可用摄像头之间切换。成功切换相机时返回 true
手电筒 toggleFlashlight Promise<bool> 每次调用该函数时,都会切换手电筒的开启和关闭状态。成功切换手电筒时返回 true
手电筒 isFlashlightAvailable bool 返回 truefalse,具体取决于当前相机模式下闪光灯的可用性。在调用 switchCamera 后,假设返回值在 switchCamera 的 Promise 解析后立即反映更新后的可用性状态。
手电筒 isFlashlightOn bool 手电筒开启时返回 true,否则返回 false。在调用 toggleFlashlight 之后,假设返回值反映了更新后的手电筒开启状态,因为 toggleFlashlight 的 Promise 会立即解析