Emergency calling is fundamental and critical for devices because they must work for Android users while satisfying various carrier and regulatory requirements all over the world. The Android framework provides users with a fast and safe emergency calling experience.
Android 10 provides improved support for emergency call functions, maintenance, and updates in the local Android platform by using a detailed emergency number list from the SIM, network, modem, and database. Android 10 also supports emergency calling based on the type of emergency services such as police, fire, or ambulance. Android 10 provides improved support for multi-SIM devices by sharing emergency numbers from multiple subscriptions in the TelephonyManager API.
In Android 10 with Radio HAL 1.4, emergency calling is improved by separating emergency calls from normal calls in the HAL interface to optimize the emergency calling path and allowing devices to dial the appropriate emergency number configured in the Android database.
Implementation
To implement the emergency calling and emergency number functions, implement
the following
TelephonyManager
and hardware interface APIs.
TelephonyManager APIs
Implement the following APIs:
- Implement
getEmergencyNumberList
to get valid emergency numbers for emergency calling based on the emergency number source including the locale, SIM cards, default, modem, Android database, and network. For each emergency number, specify the corresponding emergency service category such as police, ambulance, and fire. - Implement
isEmergencyNumber
to identify whether a phone number is an emergency number. - Implement
isPotentialEmergencyNumber
to identify a number as an emergency number if it has the same starting digits as any of the emergency numbers.
The values for emergency number sources are:
EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING
: Number is from the network signalEMERGENCY_NUMBER_SOURCE_SIM
: Number is from the SIM cardEMERGENCY_NUMBER_SOURCE_DATABASE
: Number is from the platform-maintained databaseEMERGENCY_NUMBER_SOURCE_MODEM_CONFIG
: Number is from the modem configurationEMERGENCY_NUMBER_SOURCE_DEFAULT
: Number is available by default. The numbers 112 and 911 must always be available. 000, 08, 110, 999, 118, and 119 must be available when no SIM is present. For more details, see Section 10: Emergency Calls in 3GPP TS 22.101.
The values for emergency service categories are:
UNSPECIFIED
: General emergency call, all categoriesPOLICE
: PoliceAMBULANCE
: AmbulanceFIRE_BRIGADE
: Fire brigadeMARINE_GUARD
: Marine GuardMOUNTAIN_RESCUE
: Mountain RescueMIEC
: Manually Initiated eCall (MIeC)AIEC
: Automatically Initiated eCall (AIeC)
For more details, see Section 10: Emergency Calls in 3GPP TS 22.101.
Hardware interface APIs
Implement
emergencyDial
in IRadio.hal
. Implement
emergencyDialResponse
in IRadioResponse.hal
to send a response with response type, serial number,
and error information.
To report the current list of emergency numbers, implement
currentEmergencyNumberList
in IRadioIndication.hal
. Implement
EmergencyNumber
in types.hal
, which contains information about the emergency number including
the number address, the mobile country code (MCC), mobile network code (MNC),
emergency service category,
emergency uniform resource name (URN), and
emergency number source.
To indicate how an emergency call is handled, use
EmergencyCallRouting
.
An emergency call can be requested using emergency routing or normal call
routing as required. If this is UNKNOWN
, routing is decided based on the
implementation.
Validation
To validate your implementation, run the following CTS and VTS tests.
CTS tests
VTS tests
References
For additional information on related technical specifications and standards, see:
- 3GPP TS 22.101, Section 10: Emergency Calls
- 3GPP TS 24.008, Section 9.2.13.4: Emergency Number List
- 3GPP TS 23.167, Section 6: Functional description
- 3GPP TS 24.503, Section 5.1.6.8.1: General
- RFC 5031: A Uniform Resource Name (URN) for Emergency and Other Well-Known Services