Merge "Add Parcelable EmergencyNumber and APIs" am: 379ca95c89
am: e414f5ed16
Change-Id: Ic3f48cc3df90edde8c5ed1941a4e5a6f4e7ab572
This commit is contained in:
@@ -689,6 +689,7 @@ java_defaults {
|
||||
"android.hardware.vibrator-V1.2-java",
|
||||
"android.hardware.wifi-V1.0-java-constants",
|
||||
"android.hardware.radio-V1.0-java",
|
||||
"android.hardware.radio-V1.3-java",
|
||||
"android.hardware.usb.gadget-V1.0-java",
|
||||
],
|
||||
|
||||
|
||||
@@ -43025,6 +43025,36 @@ package android.telephony.data {
|
||||
|
||||
}
|
||||
|
||||
package android.telephony.emergency {
|
||||
|
||||
public final class EmergencyNumber implements android.os.Parcelable {
|
||||
method public int describeContents();
|
||||
method public java.lang.String getCountryIso();
|
||||
method public int getEmergencyNumberSourceBitmask();
|
||||
method public java.util.List<java.lang.Integer> getEmergencyNumberSources();
|
||||
method public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
|
||||
method public int getEmergencyServiceCategoryBitmask();
|
||||
method public java.lang.String getNumber();
|
||||
method public boolean isFromSources(int);
|
||||
method public boolean isInEmergencyServiceCategories(int);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.telephony.emergency.EmergencyNumber> CREATOR;
|
||||
field public static final int EMERGENCY_NUMBER_SOURCE_DEFAULT = 8; // 0x8
|
||||
field public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG = 4; // 0x4
|
||||
field public static final int EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING = 1; // 0x1
|
||||
field public static final int EMERGENCY_NUMBER_SOURCE_SIM = 2; // 0x2
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_AIEC = 64; // 0x40
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_AMBULANCE = 2; // 0x2
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE = 4; // 0x4
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD = 8; // 0x8
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_MIEC = 32; // 0x20
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE = 16; // 0x10
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_POLICE = 1; // 0x1
|
||||
field public static final int EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED = 0; // 0x0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
package android.telephony.euicc {
|
||||
|
||||
public final class DownloadableSubscription implements android.os.Parcelable {
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (c) 2018, The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.telephony.emergency;
|
||||
|
||||
parcelable EmergencyNumber;
|
||||
374
telephony/java/android/telephony/emergency/EmergencyNumber.java
Normal file
374
telephony/java/android/telephony/emergency/EmergencyNumber.java
Normal file
@@ -0,0 +1,374 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.telephony.emergency;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.hardware.radio.V1_3.EmergencyNumberSource;
|
||||
import android.hardware.radio.V1_3.EmergencyServiceCategory;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* A parcelable class that wraps and retrieves the information of number, service category(s) and
|
||||
* country code for a specific emergency number.
|
||||
*/
|
||||
public final class EmergencyNumber implements Parcelable {
|
||||
|
||||
private static final String LOG_TAG = "EmergencyNumber";
|
||||
|
||||
/**
|
||||
* Defining Emergency Service Category as follows:
|
||||
* - General emergency call, all categories;
|
||||
* - Police;
|
||||
* - Ambulance;
|
||||
* - Fire Brigade;
|
||||
* - Marine Guard;
|
||||
* - Mountain Rescue;
|
||||
* - Manually Initiated eCall (MIeC);
|
||||
* - Automatically Initiated eCall (AIeC);
|
||||
*
|
||||
* Category UNSPECIFIED (General emergency call, all categories) indicates that no specific
|
||||
* services are associated with this emergency number; if the emergency number is specified,
|
||||
* it has one or more defined emergency service categories.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true, prefix = { "EMERGENCY_SERVICE_CATEGORY_" }, value = {
|
||||
EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
|
||||
EMERGENCY_SERVICE_CATEGORY_POLICE,
|
||||
EMERGENCY_SERVICE_CATEGORY_AMBULANCE,
|
||||
EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE,
|
||||
EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD,
|
||||
EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE,
|
||||
EMERGENCY_SERVICE_CATEGORY_MIEC,
|
||||
EMERGENCY_SERVICE_CATEGORY_AIEC
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface EmergencyServiceCategories {}
|
||||
|
||||
/**
|
||||
* Emergency Service Category UNSPECIFIED (General emergency call, all categories) bit-field
|
||||
* indicates that no specific services are associated with this emergency number; if the
|
||||
* emergency number is specified, it has one or more defined emergency service categories.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED =
|
||||
EmergencyServiceCategory.UNSPECIFIED;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Police.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_POLICE = EmergencyServiceCategory.POLICE;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Ambulance.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_AMBULANCE =
|
||||
EmergencyServiceCategory.AMBULANCE;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Fire Brigade.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE =
|
||||
EmergencyServiceCategory.FIRE_BRIGADE;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Marine Guard.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD =
|
||||
EmergencyServiceCategory.MARINE_GUARD;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Mountain Rescue.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE =
|
||||
EmergencyServiceCategory.MOUNTAIN_RESCUE;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Manually Initiated eCall (MIeC)
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_MIEC = EmergencyServiceCategory.MIEC;
|
||||
/**
|
||||
* Bit-field that indicates Emergency Service Category for Automatically Initiated eCall (AIeC)
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_SERVICE_CATEGORY_AIEC = EmergencyServiceCategory.AIEC;
|
||||
|
||||
private static final Set<Integer> EMERGENCY_SERVICE_CATEGORY_SET;
|
||||
static {
|
||||
EMERGENCY_SERVICE_CATEGORY_SET = new HashSet<Integer>();
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_POLICE);
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_AMBULANCE);
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE);
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD);
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE);
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_MIEC);
|
||||
EMERGENCY_SERVICE_CATEGORY_SET.add(EMERGENCY_SERVICE_CATEGORY_AIEC);
|
||||
}
|
||||
|
||||
/**
|
||||
* The source to tell where the corresponding @1.3::EmergencyNumber comes from.
|
||||
*
|
||||
* The emergency number has one or more defined emergency number sources.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true, prefix = { "EMERGENCY_NUMBER_SOURCE_" }, value = {
|
||||
EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING,
|
||||
EMERGENCY_NUMBER_SOURCE_SIM,
|
||||
EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG,
|
||||
EMERGENCY_NUMBER_SOURCE_DEFAULT
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface EmergencyNumberSources {}
|
||||
|
||||
/**
|
||||
* Bit-field which indicates the number is from the network signaling.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING =
|
||||
EmergencyNumberSource.NETWORK_SIGNALING;
|
||||
/**
|
||||
* Bit-field which indicates the number is from the sim.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_SIM = EmergencyNumberSource.SIM;
|
||||
/** Bit-field which indicates the number is from the modem config. */
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG =
|
||||
EmergencyNumberSource.MODEM_CONFIG;
|
||||
/**
|
||||
* Bit-field which indicates the number is available as default.
|
||||
*
|
||||
* 112, 911 must always be available; additionally, 000, 08, 110, 999, 118 and 119 must be
|
||||
* available when sim is not present.
|
||||
*
|
||||
* Reference: 3gpp 22.101, Section 10 - Emergency Calls
|
||||
*/
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_DEFAULT = EmergencyNumberSource.DEFAULT;
|
||||
|
||||
private static final Set<Integer> EMERGENCY_NUMBER_SOURCE_SET;
|
||||
static {
|
||||
EMERGENCY_NUMBER_SOURCE_SET = new HashSet<Integer>();
|
||||
EMERGENCY_NUMBER_SOURCE_SET.add(EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING);
|
||||
EMERGENCY_NUMBER_SOURCE_SET.add(EMERGENCY_NUMBER_SOURCE_SIM);
|
||||
EMERGENCY_NUMBER_SOURCE_SET.add(EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG);
|
||||
EMERGENCY_NUMBER_SOURCE_SET.add(EMERGENCY_NUMBER_SOURCE_DEFAULT);
|
||||
}
|
||||
|
||||
private final String mNumber;
|
||||
private final String mCountryIso;
|
||||
private final int mEmergencyServiceCategoryBitmask;
|
||||
private final int mEmergencyNumberSourceBitmask;
|
||||
|
||||
/** @hide */
|
||||
public EmergencyNumber(String number, String countryIso,
|
||||
int emergencyServiceCategories,
|
||||
int emergencyNumberSources) {
|
||||
this.mNumber = number;
|
||||
this.mCountryIso = countryIso;
|
||||
this.mEmergencyServiceCategoryBitmask = emergencyServiceCategories;
|
||||
this.mEmergencyNumberSourceBitmask = emergencyNumberSources;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public EmergencyNumber(Parcel source) {
|
||||
mNumber = source.readString();
|
||||
mCountryIso = source.readString();
|
||||
mEmergencyServiceCategoryBitmask = source.readInt();
|
||||
mEmergencyNumberSourceBitmask = source.readInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the dialing number of the emergency number.
|
||||
*
|
||||
* The character in the number string is only the dial pad
|
||||
* character('0'-'9', '*', or '#'). For example: 911.
|
||||
*
|
||||
* @return the dialing number.
|
||||
*/
|
||||
public String getNumber() {
|
||||
return mNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the country code string (lowercase character) in ISO 3166 format of the emergency number.
|
||||
*
|
||||
* @return the country code string (lowercase character) in ISO 3166 format.
|
||||
*/
|
||||
public String getCountryIso() {
|
||||
return mCountryIso;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the bitmask of emergency service categories {@link EmergencyServiceCategories} of
|
||||
* the emergency number.
|
||||
*
|
||||
* @return bitmask of the emergency service categories {@link EmergencyServiceCategories}
|
||||
*/
|
||||
public @EmergencyServiceCategories int getEmergencyServiceCategoryBitmask() {
|
||||
return mEmergencyServiceCategoryBitmask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the emergency service categories {@link EmergencyServiceCategories} of the emergency
|
||||
* number.
|
||||
*
|
||||
* @return a list of the emergency service categories {@link EmergencyServiceCategories}
|
||||
*/
|
||||
public List<Integer> getEmergencyServiceCategories() {
|
||||
List<Integer> categories = new ArrayList<>();
|
||||
if (serviceUnspecified()) {
|
||||
categories.add(EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED);
|
||||
return categories;
|
||||
}
|
||||
for (Integer category : EMERGENCY_SERVICE_CATEGORY_SET) {
|
||||
if (isInEmergencyServiceCategories(category)) {
|
||||
categories.add(category);
|
||||
}
|
||||
}
|
||||
return categories;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the emergency service category is unspecified for the emergency number
|
||||
* {@link #EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED}.
|
||||
*
|
||||
* @return {@code true} if the emergency service category is unspecified for the emergency
|
||||
* number {@link #EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED}; {@code false} otherwise.
|
||||
*/
|
||||
private boolean serviceUnspecified() {
|
||||
return mEmergencyServiceCategoryBitmask == EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the emergency number is in the specified emergency service category(s)
|
||||
* {@link EmergencyServiceCategories}.
|
||||
*
|
||||
* @return {@code true} if the emergency number is in the specified emergency service
|
||||
* category(s) {@link EmergencyServiceCategories}; {@code false} otherwise.
|
||||
*
|
||||
* @param categories - emergency service categories {@link EmergencyServiceCategories}
|
||||
*/
|
||||
public boolean isInEmergencyServiceCategories(@EmergencyServiceCategories int categories) {
|
||||
if (categories == EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED) {
|
||||
return serviceUnspecified();
|
||||
}
|
||||
return (mEmergencyServiceCategoryBitmask & categories) == categories;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the bitmask of the sources {@link EmergencyNumberSources} of the emergency number.
|
||||
*
|
||||
* @return bitmask of the emergency number sources {@link EmergencyNumberSources}
|
||||
*/
|
||||
public @EmergencyNumberSources int getEmergencyNumberSourceBitmask() {
|
||||
return mEmergencyNumberSourceBitmask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of {@link EmergencyNumberSources} of the emergency number.
|
||||
*
|
||||
* @return a list of {@link EmergencyNumberSources}
|
||||
*/
|
||||
public List<Integer> getEmergencyNumberSources() {
|
||||
List<Integer> sources = new ArrayList<>();
|
||||
for (Integer source : EMERGENCY_NUMBER_SOURCE_SET) {
|
||||
if ((mEmergencyNumberSourceBitmask & source) == source) {
|
||||
sources.add(source);
|
||||
}
|
||||
}
|
||||
return sources;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the emergency number is from the specified emergency number source(s)
|
||||
* {@link EmergencyNumberSources}.
|
||||
*
|
||||
* @return {@code true} if the emergency number is from the specified emergency number
|
||||
* source(s) {@link EmergencyNumberSources}; {@code false} otherwise.
|
||||
*
|
||||
* @param sources - {@link EmergencyNumberSources}
|
||||
*/
|
||||
public boolean isFromSources(@EmergencyNumberSources int sources) {
|
||||
return (mEmergencyNumberSourceBitmask & sources) == sources;
|
||||
}
|
||||
|
||||
@Override
|
||||
/** @hide */
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeString(mNumber);
|
||||
dest.writeString(mCountryIso);
|
||||
dest.writeInt(mEmergencyServiceCategoryBitmask);
|
||||
dest.writeInt(mEmergencyNumberSourceBitmask);
|
||||
}
|
||||
|
||||
@Override
|
||||
/** @hide */
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EmergencyNumber = " + "[Number]" + mNumber + " / [CountryIso]" + mCountryIso
|
||||
+ " / [ServiceCategories]"
|
||||
+ Integer.toBinaryString(mEmergencyServiceCategoryBitmask)
|
||||
+ " / [Sources]" + Integer.toBinaryString(mEmergencyNumberSourceBitmask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!EmergencyNumber.class.isInstance(o)) {
|
||||
return false;
|
||||
}
|
||||
return (o == this || toString().equals(o.toString()));
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<EmergencyNumber> CREATOR =
|
||||
new Parcelable.Creator<EmergencyNumber>() {
|
||||
@Override
|
||||
public EmergencyNumber createFromParcel(Parcel in) {
|
||||
return new EmergencyNumber(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EmergencyNumber[] newArray(int size) {
|
||||
return new EmergencyNumber[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user