本部分分为两个部分:
- 内容 - ELS 消息的内容。
- 格式 - 这些邮件的发送方式和解码方式(如果需要)。
内容
ELS V1
通过短信发送的 ELS 消息符合最新的 ETSI AML 规范。这个 称为 ELS V1,这是 ELS 合作伙伴选择的最常用方法。通过 以下是最相关的部分:
键名 | 值 | 单位 | 示例 |
A"ML |
版本 | - | 1 |
lt |
纬度 | 度 | +37.42175 |
lg |
经度 | 度 | -122.08461 |
top |
位置的时间戳 | yyyyMMddHHmmss(UTC 时间) | 20150613010948 |
rd |
位置信息精确度 | 米 | 20.0 |
lc |
位置信息置信度 | 置信度百分比 | 68 |
pm |
定位方法(Wi-Fi、GPS、小区、空) | “W”“G”“C”“N” | W |
si |
IMSI(仅包含原始 IMSI 的前 6 位数字,其余几位) 替换为 0) | - | 123456000000000 |
ei |
IMEI | - | 355458061005220 |
mcc |
网络 MCC | - | 310 |
mnc |
网络 MNC | - | 260 |
ml |
邮件长度(包括邮件长度和标头) | - | 123 |
定位方法
位置为空
示例
没有位置信息:
A"ML=1;lt=+00.00000;lg=+000.00000;rd=N;top=20220131173734;lc=0;pm=N;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=127
计算出的位置:
A"ML=1;lt=+51.53321;lg=-0.12601;rd=14;top=20220131171748;lc=68;pm=W;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=126
ELS Beta 版
ELS Beta 版是一些合作伙伴使用的实验性格式, 让合作伙伴有机会尝试不同领域的内容。
以下是最相关的部分:
键名 | 值 | 单位 | 示例 |
A"ML |
版本 | - | 2 |
en |
紧急电话号码 | - | 911 |
et |
紧急呼叫时间戳 | UNIX 纪元时间(以秒为单位)(整数) | 1593187189 |
lo |
位置(纬度、经度、精确度)- 纬度和经度必须 被截断至小数点后 5 位,精度为小数点后 1 位 - 精度为 0 表示未知 | 度(浮点数)、度数(浮点数)、米(浮点数) | 37.42175、122.08461、20.1 |
lt |
定位时间(相对于紧急时间)- 此字段可以忽略 如果不存在位置(“lo”)字段或无时间戳(“et”)字段 展示 | 秒(整数) | 5 |
lc |
位置信息置信度 | 置信度百分比(整数) | 68 |
lz |
垂直位置(海拔高度、垂直精确度)- 此字段可以是 如果不存在位置(“lo”)字段,则会被忽略 - 所有字段均截断至小数点后 1 位;精确度为 0 表示未知 | 米(浮点数)、米(浮点数) | -10.1、10.1 |
ls |
位置来源(Wi-Fi、小区、GPS、一体化、未知)- 此字段可能是 如果不存在位置(“lo”)字段,则被忽略 | “W”“G”“C”“F”“U” | W |
ei |
IMEI | - | 355458061005220 |
nc |
网络 MCC/MNC | - | 310260 |
hc |
家庭 MNC/MNC | - | 310260 |
lg |
语言标签 | IETF BCP 47 | en-US |
置信度
海拔高度(Z 轴)
ELS 会在 ELS Beta 版消息中报告垂直位置和精确度。海拔高度:lz
以高于 WGS84 参考椭球体的米为单位报告(WGS 是参考
GPS 使用的世界大地测量系统)和精确度(以米为单位,海拔高度、垂直方向)
准确率。如果不存在位置信息 (lo
) 字段,系统可能会忽略此字段。全部
字段会截断到小数点后 1 位,精度 0.0
表示
unknown
。垂直精确度的定义与位置精确度相同,并且
置信度百分位由合作伙伴设置。默认值设置为 68%。
自信。有关详情,请参阅 Android 文档
getVerticalAccuracyMeters() 提供的。
示例
位置尚未计算的情况:
A"ML=2;en=911;et=1643816841;ei=123456789012345;nc=23415;hc=23415
位置计算成功的情况:
A"ML=2;en=911;et=1643816929;lo=51.53321,-0.12601,14.7;lt=6;lc=68;lz=77.6,1.0;ls=W;ei=123456789012345;nc=23415;hc=23415
表现形式
可采用以下格式通过短信发送 ELS 信息:
- 短信:普通短信。此格式从以下日期开始受支持: Android P。
- 数据短信:短信的内容与短信完全相同,但是 进行编码(详情请参阅下文)。此格式 与 ELS 兼容的 Android 设备。
短信
阅读和解析文本短信相对简单。大量移动设备 运营商提供此服务,还可以为您提供推送或拉取 API, 发送到标准电话号码的短信内容。
数据流量短信
从 Android P 开始,系统就支持常规文本短信格式。较早 设备将使用需要解码的数据短信发送 ELS 消息。ELS 数据 短信使用 GSM 03.38 7 位默认字符集进行编码,然后 设置为数据短信的二进制载荷。
下文将介绍数据短信(与普通短信)的确切定义。 有关 GSM 03.38 7 位编码的确切定义,请参阅 3GPP 23.038(具体请参阅第 6.1.2.1.1 节)。
解码数据短信
对于 Google 将短信用于 ELS 的情况,ELS 仅关注 从手机向移动服务中心 (SMSC) 发送短信 - 短信提交类型 消息。SMSC 应该能够顺利接收这些消息 它们是常规短信标准的一部分(不过,在实践中,我们观察到 涉及从基础架构设置和政策到 难以正确解码数据短信)。在下文中,ELS 会将 从手机向 SMSC 发送 SMS-SUBMIT 信息,遵循常规短信方式 标准 (GSM 3.40)。ELS 将数据短信定义为常规短信的子集,且:
- 在短信标头中设置了 User-Data-Header-Indicator 标志( GSM 03.40 或 3GPP 23.040 消息的第一个八位字节)
- 在短信的用户数据中包含 User-Data-Header
- User-Data-Header 包含应用端口地址 信息元素标识符 (IEI)
ELS 必须采用这种方式发送短信,而不是普通短信 可确保 ELS 数据短信不会出现在 Android 设备的 消息应用。稍后,我们展示了一个经过编码的短信示例,以便更好地解释这一点。
请注意,我们没有在此处指定具体的数据编码方案 (DCS)。DCS 用于标识“用户数据”细分中的编码。不过,对于 在可预见的未来,Data-Coding-Scheme 将始终设置为 8 位数据, 可提供最大灵活性,且实际数据本身将使用 GSM 03.38 7 位默认字母表。因此,每个 7 位编码元素 只占用 7 位,而不占用 8 位。
假设用户数据段上限为 140 个字节,且 包含端口信息的 User-Data-Header 的大小下限为 7 个字节; 最多保留 133 个字节(152 个 7 位编码元素)来对 真正的紧急消息这些字节可能会被解码,以发现 ELS 数据短信 消息。
示例
因此,在解码此示例数据短信后,得到的是二进制用户数据。 以下十六进制字符串:
415193D98BEDD8F4DEECE6A2C962B7DA8E7DEEB56232990B86A3D9623B39B92783EDE86F784F068BD560B6D80C1683E568B81D7BDCB3E176F076EFB89BA77B39DCCD56A3C966B15D39DD9BD570B2590E56CBC168B21A4DB66B8FC7BD590CB66BBBC73D990DB66BB37B31D94CC12CBBCF74B40E1493CD1A
解码 GSM 03.38
以下示例对前几个八位字节进行解码,其余八位字节保留为 进行练习我们建议参考 3GPP 23.038,并使用许多 实用的在线工具(例如 http://smstools3.kekekasvi.com/topic.php?id=288).在“八位字节”列中, 以黄色突出显示的部分表示未用于 并将留在下一个七月九宫内 列中,以黄色突出显示的部分表示来自之前的各位的位 八位字节
十六进制颜色值 | 八位字节 | 九宫格 | 字符(十六进制) |
41 |
01000001 |
1000001 |
A (41) |
51 |
01010001 |
0100010 |
" (22) |
93 |
10010011 |
1001101 |
M (4D) |
D9 |
11011001 |
1001100 |
L (4C) |
8B |
10001011 |
0111101 |
= (3D) |
ED |
11101101 |
0110001 |
1 (31) |
D8 |
11011000 |
0111011 |
; (3B) |
|
|
1101100 |
l (6C) |
F4 |
11110100 |
1110100 |
t (74) |
DE |
11011110 |
0111101 |
= (3D) |
这里的最终结果是,之前的一条消息可能会被解码为 以下字符串:
A"ML=1;lt=37.42175;lg=-122.08461;rd=20;top=20150613010948;lc=68;pm=G;si=987654231;ei=358239059042542;mcc=310;mnc=260;ml=123
这些短信应可通过大多数公开可用的短信进行解码 软件开发应用。