Emergency Numbers and Emergency Calling

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 signal
  • EMERGENCY_NUMBER_SOURCE_SIM: Number is from the SIM card
  • EMERGENCY_NUMBER_SOURCE_DATABASE: Number is from the platform-maintained database
  • EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG: Number is from the modem configuration
  • EMERGENCY_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 categories
  • POLICE: Police
  • AMBULANCE: Ambulance
  • FIRE_BRIGADE: Fire brigade
  • MARINE_GUARD: Marine Guard
  • MOUNTAIN_RESCUE: Mountain Rescue
  • MIEC: 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: