在危急情况下,实时视频等多媒体信息有助于紧急呼叫接线员了解情况。例如:
- 车辆事故:现场直播视频可帮助他们了解涉及的车辆。
- 火灾:了解火势和损失程度。
- 医疗紧急情况:引导用户进行心肺复苏,挽救生命。
ELS 现在可以拦截接听方发起的向用户请求实时视频的短信,并提供集成式视频体验。由于此功能专门用于紧急情况,因此具有以下优势:在紧急情况持续期间,摄像头权限应预先授予。
此功能的主要目标是为用户提供:
- 无需复杂的权限即可获得顺畅的直播视频体验
- 为所有 Android 用户提供一致的体验
运作方式
集成指南
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 |
返回 true 或 false,具体取决于当前相机模式下闪光灯的可用性。在调用 switchCamera 后,假设返回值在 switchCamera 的 Promise 解析后立即反映更新后的可用性状态。 |
| 手电筒 | isFlashlightOn |
bool |
手电筒开启时返回 true,否则返回 false。在调用 toggleFlashlight 之后,假设返回值反映了更新后的手电筒开启状态,因为 toggleFlashlight 的 Promise 会立即解析 |