Promotion of atel.lnx.2.0-00029.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
1080282 I491ff8dd8d06a54aa92740f7307a41fe96bb7d7b Launch Emergency Call on Speed Dialing key 9.
1087615 I146e6c358bd44b8a4a5fc872c1ef4f0ffe2cc5ae IMS-VT:Process crash during MT_VT call accept scenario
1078562 I9fc213eaa8d1a46797b34a962bb58d7656f4773a Dialer: Screen does not light when incominging call in
Change-Id: I4c17c7fa15c718a29653d44f3dcfc796628149ca
CRs-Fixed: 1078562, 1080282, 1087615
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b87e31f..ccbb8b4 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -63,6 +63,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+ <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<!-- This tells the activity manager to not delay any of our activity
start requests, even if they happen immediately after the user
presses home. -->
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 9d2820d..ab4a5f2 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -707,6 +707,7 @@
if (CallList.getInstance().isDsdaEnabled() && (mInCallActivity != null)) {
mInCallActivity.updateDsdaTab();
}
+ wakeUpScreen();
}
@Override
@@ -947,7 +948,9 @@
}
Call call = mCallList.getIncomingCall();
- answerIncomingCall(context, call.getVideoState());
+ if (call != null) {
+ answerIncomingCall(context, call.getVideoState());
+ }
}
/**
diff --git a/res/values/config.xml b/res/values/config.xml
index e992426..b6632c1 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -36,4 +36,6 @@
<!--not display SIP dial icon -->
<bool name="config_hide_SIP_dial_icon">false</bool>
+ <integer name="speed_dial_emergency_number_assigned_key">9</integer>
+
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 98d9dc6..ce088cd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1119,6 +1119,9 @@
<string name="dialog_speed_dial_airplane_mode_message">To use speed dial, first turn off Airplan
e mode.</string>
+ <!-- Speed Dial can not be set for the key used for Emergency number-->
+ <string name="speed_dial_can_not_be_set">Speed Dial Can not be set for this Key</string>
+
<string name="yes">Yes</string>
<string name="no">No</string>
diff --git a/src/com/android/dialer/SpeedDialListActivity.java b/src/com/android/dialer/SpeedDialListActivity.java
index d3889a3..2d6cef2 100644
--- a/src/com/android/dialer/SpeedDialListActivity.java
+++ b/src/com/android/dialer/SpeedDialListActivity.java
@@ -40,6 +40,7 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
+import android.os.SystemProperties;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.Settings;
@@ -64,6 +65,7 @@
import android.widget.PopupMenu;
import android.widget.QuickContactBadge;
import android.widget.TextView;
+import android.widget.Toast;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
@@ -110,6 +112,9 @@
private static final int MENU_REPLACE = 1001;
private static final int MENU_DELETE = 1002;
+ private static final String PROPERTY_RADIO_ATEL_CARRIER = "persist.radio.atel.carrier";
+ private static final String CARRIER_ONE_DEFAULT_MCC_MNC = "405854";
+
private static class Record {
long contactId;
String name;
@@ -135,6 +140,9 @@
private SubscriptionManager mSubscriptionManager;
+ private boolean mEmergencyCallSpeedDial = false;
+ private int mSpeedDialKeyforEmergncyCall = -1;
+
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -161,6 +169,11 @@
mAdapter = new SpeedDialAdapter();
setListAdapter(mAdapter);
+
+ String property = SystemProperties.get(PROPERTY_RADIO_ATEL_CARRIER);
+ mEmergencyCallSpeedDial = CARRIER_ONE_DEFAULT_MCC_MNC.equals(property);
+ mSpeedDialKeyforEmergncyCall = getResources().getInteger(
+ R.integer.speed_dial_emergency_number_assigned_key);
}
@Override
@@ -315,6 +328,11 @@
}
} else {
int number = position + 1;
+ if (mEmergencyCallSpeedDial && (number == mSpeedDialKeyforEmergncyCall)) {
+ Toast.makeText(SpeedDialListActivity.this, R.string.speed_dial_can_not_be_set,
+ Toast.LENGTH_SHORT).show();
+ return;
+ }
final Record record = mRecords.get(number);
if (record == null) {
showAddSpeedDialDialog(number);
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 78e4760..2b21ac3 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -30,6 +30,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -196,6 +197,9 @@
/** Stream type used to play the DTMF tones off call, and mapped to the volume control keys */
private static final int DIAL_TONE_STREAM_TYPE = AudioManager.STREAM_DTMF;
+ private static final String PROPERTY_RADIO_ATEL_CARRIER = "persist.radio.atel.carrier";
+ private static final String CARRIER_ONE_DEFAULT_MCC_MNC = "405854";
+
private OnDialpadQueryChangedListener mDialpadQueryListener;
private DialpadView mDialpadView;
@@ -1135,6 +1139,33 @@
}
}
+ private int getNumberfromId(int id) {
+ int number = -1;
+ switch(id) {
+ case R.id.zero: number = 0; break;
+ case R.id.one: number = 1; break;
+ case R.id.two: number = 2; break;
+ case R.id.three: number = 3; break;
+ case R.id.four: number = 4; break;
+ case R.id.five: number = 5; break;
+ case R.id.six: number = 6; break;
+ case R.id.seven: number = 7; break;
+ case R.id.eight: number = 8; break;
+ case R.id.nine: number = 9; break;
+ }
+ return number;
+ }
+
+ private void placeEmergencyCall() {
+ Resources resources = getContext().getResources();
+ String emergencyNumber = resources.getString(
+ com.android.internal.R.string.power_key_emergency_number);
+ Intent intent = new Intent(Intent.ACTION_CALL_EMERGENCY);
+ intent.setData(Uri.fromParts(PhoneAccount.SCHEME_TEL, emergencyNumber, null));
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+
@Override
public boolean onLongClick(View view) {
final Editable digits = mDigits.getText();
@@ -1231,6 +1262,14 @@
case R.id.nine: {
if (mDigits.length() == 1) {
//removePreviousDigitIfPossible();
+ String property = SystemProperties.get(PROPERTY_RADIO_ATEL_CARRIER);
+ boolean isCarrierOneSupported = CARRIER_ONE_DEFAULT_MCC_MNC.equals(property);
+ if (isCarrierOneSupported &&
+ (getNumberfromId(id) == getContext().getResources().getInteger(
+ R.integer.speed_dial_emergency_number_assigned_key))) {
+ placeEmergencyCall();
+ return true;
+ }
final boolean isAirplaneModeOn =
Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;