diff options
71 files changed, 297 insertions, 89 deletions
diff --git a/api/current.txt b/api/current.txt index 82fd7d0fa134..79fb8dfc50bf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -27400,6 +27400,7 @@ package android.telephony { field public static final int CALL_BARRED = 20; // 0x14 field public static final int CDMA_ACCESS_BLOCKED = 35; // 0x23 field public static final int CDMA_ACCESS_FAILURE = 32; // 0x20 + field public static final int CDMA_CALL_LOST = 41; // 0x29 field public static final int CDMA_DROP = 27; // 0x1b field public static final int CDMA_INTERCEPT = 28; // 0x1c field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 26; // 0x1a @@ -27412,6 +27413,8 @@ package android.telephony { field public static final int CS_RESTRICTED = 22; // 0x16 field public static final int CS_RESTRICTED_EMERGENCY = 24; // 0x18 field public static final int CS_RESTRICTED_NORMAL = 23; // 0x17 + field public static final int DIALED_MMI = 39; // 0x27 + field public static final int EMERGENCY_ONLY = 37; // 0x25 field public static final int ERROR_UNSPECIFIED = 36; // 0x24 field public static final int FDN_BLOCKED = 21; // 0x15 field public static final int ICC_ERROR = 19; // 0x13 @@ -27422,12 +27425,13 @@ package android.telephony { field public static final int LIMIT_EXCEEDED = 15; // 0xf field public static final int LOCAL = 3; // 0x3 field public static final int LOST_SIGNAL = 14; // 0xe - field public static final int MAXIMUM_VALID_VALUE = 36; // 0x24 + field public static final int MAXIMUM_VALID_VALUE = 42; // 0x2a field public static final int MINIMUM_VALID_VALUE = 0; // 0x0 field public static final int MMI = 6; // 0x6 field public static final int NORMAL = 2; // 0x2 field public static final int NOT_DISCONNECTED = 0; // 0x0 field public static final int NOT_VALID = -1; // 0xffffffff + field public static final int NO_PHONE_NUMBER_SUPPLIED = 38; // 0x26 field public static final int NUMBER_UNREACHABLE = 8; // 0x8 field public static final int OUT_OF_NETWORK = 11; // 0xb field public static final int OUT_OF_SERVICE = 18; // 0x12 @@ -27436,6 +27440,7 @@ package android.telephony { field public static final int SERVER_UNREACHABLE = 9; // 0x9 field public static final int TIMED_OUT = 13; // 0xd field public static final int UNOBTAINABLE_NUMBER = 25; // 0x19 + field public static final int VOICEMAIL_NUMBER_MISSING = 40; // 0x28 } public class NeighboringCellInfo implements android.os.Parcelable { diff --git a/core/java/com/android/internal/widget/LockPatternView.java b/core/java/com/android/internal/widget/LockPatternView.java index d841d5323841..7fe03f5b165f 100644 --- a/core/java/com/android/internal/widget/LockPatternView.java +++ b/core/java/com/android/internal/widget/LockPatternView.java @@ -22,17 +22,18 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; -import android.graphics.Color; +import android.graphics.ColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.os.Debug; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; import android.util.AttributeSet; -import android.util.TypedValue; import android.view.HapticFeedbackConstants; import android.view.MotionEvent; import android.view.View; @@ -110,14 +111,11 @@ public class LockPatternView extends View { private float mSquareWidth; private float mSquareHeight; - private Bitmap mBitmapBtnDefault; - private Bitmap mBitmapBtnTouched; - private Bitmap mBitmapCircleDefault; - private Bitmap mBitmapCircleGreen; - private Bitmap mBitmapCircleRed; - - private Bitmap mBitmapArrowGreenUp; - private Bitmap mBitmapArrowRedUp; + private final Bitmap mBitmapBtnDefault; + private final Bitmap mBitmapBtnTouched; + private final Bitmap mBitmapCircleDefault; + private final Bitmap mBitmapCircleAlpha; + private final Bitmap mBitmapArrowAlphaUp; private final Path mCurrentPath = new Path(); private final Rect mInvalidate = new Rect(); @@ -129,6 +127,10 @@ public class LockPatternView extends View { private int mAspect; private final Matrix mArrowMatrix = new Matrix(); private final Matrix mCircleMatrix = new Matrix(); + private final PorterDuffColorFilter mRegularColorFilter; + private final PorterDuffColorFilter mErrorColorFilter; + private final PorterDuffColorFilter mSuccessColorFilter; + /** * Represents a cell in the 3 X 3 matrix of the unlock pattern view. @@ -266,17 +268,22 @@ public class LockPatternView extends View { setClickable(true); + mPathPaint.setAntiAlias(true); mPathPaint.setDither(true); - int defaultColor = Color.WHITE; - TypedValue outValue = new TypedValue(); - if (context.getTheme().resolveAttribute(android.R.attr.textColorPrimary, outValue, true)) { - defaultColor = context.getResources().getColor(outValue.resourceId); - } + int regularColor = getResources().getColor(R.color.lock_pattern_view_regular_color); + int errorColor = getResources().getColor(R.color.lock_pattern_view_error_color); + int successColor = getResources().getColor(R.color.lock_pattern_view_success_color); + regularColor = a.getColor(R.styleable.LockPatternView_regularColor, regularColor); + errorColor = a.getColor(R.styleable.LockPatternView_errorColor, errorColor); + successColor = a.getColor(R.styleable.LockPatternView_successColor, successColor); + mRegularColorFilter = new PorterDuffColorFilter(regularColor, PorterDuff.Mode.SRC_ATOP); + mErrorColorFilter = new PorterDuffColorFilter(errorColor, PorterDuff.Mode.SRC_ATOP); + mSuccessColorFilter = new PorterDuffColorFilter(successColor, PorterDuff.Mode.SRC_ATOP); - final int color = a.getColor(R.styleable.LockPatternView_pathColor, defaultColor); - mPathPaint.setColor(color); + int pathColor = a.getColor(R.styleable.LockPatternView_pathColor, regularColor); + mPathPaint.setColor(pathColor); mPathPaint.setAlpha(mStrokeAlpha); mPathPaint.setStyle(Paint.Style.STROKE); @@ -284,25 +291,26 @@ public class LockPatternView extends View { mPathPaint.setStrokeCap(Paint.Cap.ROUND); // lot's of bitmaps! - // TODO: those bitmaps are hardcoded to the Holo Theme which should not be the case! - mBitmapBtnDefault = getBitmapFor(R.drawable.btn_code_lock_default_holo); - mBitmapBtnTouched = getBitmapFor(R.drawable.btn_code_lock_touched_holo); - mBitmapCircleDefault = getBitmapFor(R.drawable.indicator_code_lock_point_area_default_holo); - mBitmapCircleGreen = getBitmapFor(R.drawable.indicator_code_lock_point_area_green_holo); - mBitmapCircleRed = getBitmapFor(R.drawable.indicator_code_lock_point_area_red_holo); - - mBitmapArrowGreenUp = getBitmapFor(R.drawable.indicator_code_lock_drag_direction_green_up); - mBitmapArrowRedUp = getBitmapFor(R.drawable.indicator_code_lock_drag_direction_red_up); + // TODO: those bitmaps are hardcoded to the Quantum Theme which should not be the case! + mBitmapBtnDefault = getBitmapFor(R.drawable.btn_code_lock_default_qntm_alpha); + mBitmapBtnTouched = getBitmapFor(R.drawable.btn_code_lock_touched_qntm_alpha); + mBitmapCircleDefault = getBitmapFor( + R.drawable.indicator_code_lock_point_area_default_qntm_alpha); + mBitmapCircleAlpha = getBitmapFor(R.drawable.indicator_code_lock_point_area_qntm_alpha); + mBitmapArrowAlphaUp = getBitmapFor( + R.drawable.indicator_code_lock_drag_direction_up_qntm_alpha); // bitmaps have the size of the largest bitmap in this group final Bitmap bitmaps[] = { mBitmapBtnDefault, mBitmapBtnTouched, mBitmapCircleDefault, - mBitmapCircleGreen, mBitmapCircleRed }; + mBitmapCircleAlpha}; for (Bitmap bitmap : bitmaps) { mBitmapWidth = Math.max(mBitmapWidth, bitmap.getWidth()); mBitmapHeight = Math.max(mBitmapHeight, bitmap.getHeight()); } + mPaint.setAntiAlias(true); + mPaint.setDither(true); mPaint.setFilterBitmap(true); mCellStates = new CellState[3][3]; @@ -963,7 +971,12 @@ public class LockPatternView extends View { } private void drawArrow(Canvas canvas, float leftX, float topY, Cell start, Cell end) { - boolean green = mPatternDisplayMode != DisplayMode.Wrong; + if (mPatternInProgress) { + mPaint.setColorFilter(mRegularColorFilter); + } else { + boolean success = mPatternDisplayMode != DisplayMode.Wrong; + mPaint.setColorFilter(success ? mSuccessColorFilter : mErrorColorFilter); + } final int endRow = end.row; final int startRow = start.row; @@ -977,7 +990,6 @@ public class LockPatternView extends View { // compute transform to place arrow bitmaps at correct angle inside circle. // This assumes that the arrow image is drawn at 12:00 with it's top edge // coincident with the circle bitmap's top edge. - Bitmap arrow = green ? mBitmapArrowGreenUp : mBitmapArrowRedUp; final int cellWidth = mBitmapWidth; final int cellHeight = mBitmapHeight; @@ -994,8 +1006,8 @@ public class LockPatternView extends View { mArrowMatrix.preScale(sx, sy); mArrowMatrix.preTranslate(-mBitmapWidth/2, -mBitmapHeight/2); mArrowMatrix.preRotate(angle, cellWidth / 2.0f, cellHeight / 2.0f); // rotate about cell center - mArrowMatrix.preTranslate((cellWidth - arrow.getWidth()) / 2.0f, 0.0f); // translate to 12:00 pos - canvas.drawBitmap(arrow, mArrowMatrix, mPaint); + mArrowMatrix.preTranslate((cellWidth - mBitmapArrowAlphaUp.getWidth()) / 2.0f, 0.0f); // translate to 12:00 pos + canvas.drawBitmap(mBitmapArrowAlphaUp, mArrowMatrix, mPaint); } /** @@ -1008,24 +1020,28 @@ public class LockPatternView extends View { boolean partOfPattern) { Bitmap outerCircle; Bitmap innerCircle; - + ColorFilter outerFilter; if (!partOfPattern || mInStealthMode) { // unselected circle outerCircle = mBitmapCircleDefault; innerCircle = mBitmapBtnDefault; + outerFilter = mRegularColorFilter; } else if (mPatternInProgress) { // user is in middle of drawing a pattern - outerCircle = mBitmapCircleGreen; + outerCircle = mBitmapCircleAlpha; innerCircle = mBitmapBtnTouched; + outerFilter = mRegularColorFilter; } else if (mPatternDisplayMode == DisplayMode.Wrong) { // the pattern is wrong - outerCircle = mBitmapCircleRed; + outerCircle = mBitmapCircleAlpha; innerCircle = mBitmapBtnDefault; + outerFilter = mErrorColorFilter; } else if (mPatternDisplayMode == DisplayMode.Correct || mPatternDisplayMode == DisplayMode.Animate) { // the pattern is correct - outerCircle = mBitmapCircleGreen; + outerCircle = mBitmapCircleAlpha; innerCircle = mBitmapBtnDefault; + outerFilter = mSuccessColorFilter; } else { throw new IllegalStateException("unknown display mode " + mPatternDisplayMode); } @@ -1048,7 +1064,9 @@ public class LockPatternView extends View { mCircleMatrix.preScale(sx * scale, sy * scale); mCircleMatrix.preTranslate(-mBitmapWidth/2, -mBitmapHeight/2); + mPaint.setColorFilter(outerFilter); canvas.drawBitmap(outerCircle, mCircleMatrix, mPaint); + mPaint.setColorFilter(mRegularColorFilter); canvas.drawBitmap(innerCircle, mCircleMatrix, mPaint); } diff --git a/core/res/res/drawable-hdpi/btn_code_lock_default.png b/core/res/res/drawable-hdpi/btn_code_lock_default.png Binary files differdeleted file mode 100644 index 4469ce07cbf3..000000000000 --- a/core/res/res/drawable-hdpi/btn_code_lock_default.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png b/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png Binary files differdeleted file mode 100644 index 449d4272acd6..000000000000 --- a/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/btn_code_lock_default_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_code_lock_default_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..7cc3c1121dc9 --- /dev/null +++ b/core/res/res/drawable-hdpi/btn_code_lock_default_qntm_alpha.png diff --git a/core/res/res/drawable-hdpi/btn_code_lock_touched.png b/core/res/res/drawable-hdpi/btn_code_lock_touched.png Binary files differdeleted file mode 100644 index 0410dd3c8242..000000000000 --- a/core/res/res/drawable-hdpi/btn_code_lock_touched.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/btn_code_lock_touched_holo.png b/core/res/res/drawable-hdpi/btn_code_lock_touched_holo.png Binary files differdeleted file mode 100644 index 66cb1eca1c05..000000000000 --- a/core/res/res/drawable-hdpi/btn_code_lock_touched_holo.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/btn_code_lock_touched_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_code_lock_touched_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..70397d21dfb9 --- /dev/null +++ b/core/res/res/drawable-hdpi/btn_code_lock_touched_qntm_alpha.png diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png Binary files differdeleted file mode 100644 index 698c3ecfbbab..000000000000 --- a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..b9b400fb3a01 --- /dev/null +++ b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png Binary files differdeleted file mode 100644 index c45b956cfd32..000000000000 --- a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default_holo.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default_qntm_alpha.png Binary files differindex 7fe402a59370..b1601f4e4fae 100644 --- a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default_holo.png +++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default_qntm_alpha.png diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png Binary files differdeleted file mode 100644 index b9fd0a453b06..000000000000 --- a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green_holo.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_qntm_alpha.png Binary files differindex 4052eed858a8..a038a13bd445 100644 --- a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green_holo.png +++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_qntm_alpha.png diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png Binary files differdeleted file mode 100644 index 94e947da3544..000000000000 --- a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png +++ /dev/null diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red_holo.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red_holo.png Binary files differdeleted file mode 100644 index 738d0fe63025..000000000000 --- a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red_holo.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/btn_code_lock_default.png b/core/res/res/drawable-ldpi/btn_code_lock_default.png Binary files differdeleted file mode 100644 index 149da9bff119..000000000000 --- a/core/res/res/drawable-ldpi/btn_code_lock_default.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/btn_code_lock_touched.png b/core/res/res/drawable-ldpi/btn_code_lock_touched.png Binary files differdeleted file mode 100644 index ad9a313b0314..000000000000 --- a/core/res/res/drawable-ldpi/btn_code_lock_touched.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-ldpi/indicator_code_lock_drag_direction_red_up.png Binary files differdeleted file mode 100644 index ac8e42aeba84..000000000000 --- a/core/res/res/drawable-ldpi/indicator_code_lock_drag_direction_red_up.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/indicator_code_lock_point_area_default.png b/core/res/res/drawable-ldpi/indicator_code_lock_point_area_default.png Binary files differdeleted file mode 100644 index 5b77b9ffb346..000000000000 --- a/core/res/res/drawable-ldpi/indicator_code_lock_point_area_default.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/indicator_code_lock_point_area_green.png b/core/res/res/drawable-ldpi/indicator_code_lock_point_area_green.png Binary files differdeleted file mode 100644 index c7c0b9a4d28b..000000000000 --- a/core/res/res/drawable-ldpi/indicator_code_lock_point_area_green.png +++ /dev/null diff --git a/core/res/res/drawable-ldpi/indicator_code_lock_point_area_red.png b/core/res/res/drawable-ldpi/indicator_code_lock_point_area_red.png Binary files differdeleted file mode 100644 index ac02dc4b087b..000000000000 --- a/core/res/res/drawable-ldpi/indicator_code_lock_point_area_red.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/btn_code_lock_default.png b/core/res/res/drawable-mdpi/btn_code_lock_default.png Binary files differdeleted file mode 100644 index 206f9b3bc3b7..000000000000 --- a/core/res/res/drawable-mdpi/btn_code_lock_default.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/btn_code_lock_default_holo.png b/core/res/res/drawable-mdpi/btn_code_lock_default_holo.png Binary files differdeleted file mode 100644 index 4c4adf2cfe34..000000000000 --- a/core/res/res/drawable-mdpi/btn_code_lock_default_holo.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/btn_code_lock_default_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_code_lock_default_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..14d0b32b6e3d --- /dev/null +++ b/core/res/res/drawable-mdpi/btn_code_lock_default_qntm_alpha.png diff --git a/core/res/res/drawable-mdpi/btn_code_lock_touched.png b/core/res/res/drawable-mdpi/btn_code_lock_touched.png Binary files differdeleted file mode 100644 index fe5c1af6a08b..000000000000 --- a/core/res/res/drawable-mdpi/btn_code_lock_touched.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/btn_code_lock_touched_holo.png b/core/res/res/drawable-mdpi/btn_code_lock_touched_holo.png Binary files differdeleted file mode 100644 index ef701ed67d1c..000000000000 --- a/core/res/res/drawable-mdpi/btn_code_lock_touched_holo.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/btn_code_lock_touched_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_code_lock_touched_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..9cfbdf9470db --- /dev/null +++ b/core/res/res/drawable-mdpi/btn_code_lock_touched_qntm_alpha.png diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png Binary files differdeleted file mode 100644 index 7201e58a81c0..000000000000 --- a/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..2fb1325216fa --- /dev/null +++ b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png Binary files differdeleted file mode 100644 index 05c194bf63e2..000000000000 --- a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default_holo.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default_qntm_alpha.png Binary files differindex 5762e5f4b38a..07d4afd694f7 100644 --- a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default_holo.png +++ b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default_qntm_alpha.png diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png Binary files differdeleted file mode 100644 index 8f24832f1149..000000000000 --- a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png +++ /dev/null diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green_holo.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_qntm_alpha.png Binary files differindex bfb0967c73f5..ea8c2b4ed8a5 100644 --- a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green_holo.png +++ b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_qntm_alpha.png diff --git a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_red_holo.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_red_holo.png Binary files differdeleted file mode 100644 index 8c0386fd36cf..000000000000 --- a/core/res/res/drawable-mdpi/indicator_code_lock_point_area_red_holo.png +++ /dev/null diff --git a/core/res/res/drawable-nodpi/indicator_code_lock_drag_direction_green_up.png b/core/res/res/drawable-nodpi/indicator_code_lock_drag_direction_green_up.png Binary files differdeleted file mode 100644 index cc46f19b19b2..000000000000 --- a/core/res/res/drawable-nodpi/indicator_code_lock_drag_direction_green_up.png +++ /dev/null diff --git a/core/res/res/drawable-nodpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-nodpi/indicator_code_lock_drag_direction_red_up.png Binary files differdeleted file mode 100644 index cc46f19b19b2..000000000000 --- a/core/res/res/drawable-nodpi/indicator_code_lock_drag_direction_red_up.png +++ /dev/null diff --git a/core/res/res/drawable-nodpi/platlogo.xml b/core/res/res/drawable-nodpi/platlogo.xml index 668cff7cd4f2..d1e2df3f94e1 100644 --- a/core/res/res/drawable-nodpi/platlogo.xml +++ b/core/res/res/drawable-nodpi/platlogo.xml @@ -19,18 +19,21 @@ <viewport android:viewportHeight="25" android:viewportWidth="25" /> <path - android:name="shadow" - android:pathData="m12,2.5 a11,11 0 1,0 1,0 - M6.5,7.5 - l5,0 l0,7 l7,0 l0,5 l-12,0 z" - android:fill="#40000000" + android:name="torso" + android:pathData="m2,2 l21,0 l0,21 l-21,0 z" + android:fill="#FFFFFFFF" /> + + <path + android:name="|" + android:pathData="m4,4 l8,0 l0,17 l-8,0 z" + android:fill="#FF0000FF" + /> + <path - android:name="circle-L-ranch" - android:pathData="m12,1.5 a11,11 0 1,0 1,0 - M6.5,6.5 - l5,0 l0,7 l7,0 l0,5 l-12,0 z" - android:fill="#FFFFFF40" + android:name="_" + android:pathData="m5,14 l16,0 l0,6 l-16,0 z" + android:fill="#FFFF0000" /> </vector> diff --git a/core/res/res/drawable-nodpi/stat_sys_adb.xml b/core/res/res/drawable-nodpi/stat_sys_adb.xml index b8ddb77bd2df..6b3be4a181ad 100644 --- a/core/res/res/drawable-nodpi/stat_sys_adb.xml +++ b/core/res/res/drawable-nodpi/stat_sys_adb.xml @@ -18,13 +18,26 @@ <viewport android:viewportHeight="25" android:viewportWidth="25" /> - <path - android:name="adb" - android:pathData="m3,3l8,0l0,11l11,0l0,8l-19,0z" + android:name="L-card" + + android:pathData=" + m4,2 + a2,2,0,0,0,-2,2 l0,17 + a2,2,0,0,0,2,2 l17,0 + a2,2,0,0,0,2,-2 l0,-17 + a2,2,0,0,0,-2,-2 + z + + M7,2 l3,0 l0,13 l13,0 l0,3 l-16,0 + + M15,2 l3,0 l0,5 l5,0 l0,3 l-8,0 + + z" android:fill="#FFFFFFFF" /> + </vector> diff --git a/core/res/res/drawable-sw600dp-mdpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-sw600dp-mdpi/indicator_code_lock_drag_direction_red_up.png Binary files differdeleted file mode 100644 index 2ab45477a1b8..000000000000 --- a/core/res/res/drawable-sw600dp-mdpi/indicator_code_lock_drag_direction_red_up.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/btn_code_lock_default.png b/core/res/res/drawable-xhdpi/btn_code_lock_default.png Binary files differdeleted file mode 100644 index c1358a21ad74..000000000000 --- a/core/res/res/drawable-xhdpi/btn_code_lock_default.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/btn_code_lock_default_holo.png b/core/res/res/drawable-xhdpi/btn_code_lock_default_holo.png Binary files differdeleted file mode 100644 index db1cbe6ca16c..000000000000 --- a/core/res/res/drawable-xhdpi/btn_code_lock_default_holo.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/btn_code_lock_default_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_code_lock_default_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..0c457b4459f9 --- /dev/null +++ b/core/res/res/drawable-xhdpi/btn_code_lock_default_qntm_alpha.png diff --git a/core/res/res/drawable-xhdpi/btn_code_lock_touched.png b/core/res/res/drawable-xhdpi/btn_code_lock_touched.png Binary files differdeleted file mode 100644 index 0fafc3ef0436..000000000000 --- a/core/res/res/drawable-xhdpi/btn_code_lock_touched.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/btn_code_lock_touched_holo.png b/core/res/res/drawable-xhdpi/btn_code_lock_touched_holo.png Binary files differdeleted file mode 100644 index 073c3ac91296..000000000000 --- a/core/res/res/drawable-xhdpi/btn_code_lock_touched_holo.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/btn_code_lock_touched_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_code_lock_touched_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..020d699fa6e8 --- /dev/null +++ b/core/res/res/drawable-xhdpi/btn_code_lock_touched_qntm_alpha.png diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-xhdpi/indicator_code_lock_drag_direction_red_up.png Binary files differdeleted file mode 100644 index 2d34cf67843b..000000000000 --- a/core/res/res/drawable-xhdpi/indicator_code_lock_drag_direction_red_up.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png b/core/res/res/drawable-xhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..fda5e37f6743 --- /dev/null +++ b/core/res/res/drawable-xhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default.png b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default.png Binary files differdeleted file mode 100644 index 0812cb58107f..000000000000 --- a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default_holo.png b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default_qntm_alpha.png Binary files differindex 6a9744570c92..75d0221d6cfe 100644 --- a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default_holo.png +++ b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_default_qntm_alpha.png diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_green.png b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_green.png Binary files differdeleted file mode 100644 index 3ab2e99785c3..000000000000 --- a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_green.png +++ /dev/null diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_green_holo.png b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_qntm_alpha.png Binary files differindex f0e9ab965da8..225799b44000 100644 --- a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_green_holo.png +++ b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_qntm_alpha.png diff --git a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_red_holo.png b/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_red_holo.png Binary files differdeleted file mode 100644 index 170b8333069e..000000000000 --- a/core/res/res/drawable-xhdpi/indicator_code_lock_point_area_red_holo.png +++ /dev/null diff --git a/core/res/res/drawable-xxhdpi/btn_code_lock_default_holo.png b/core/res/res/drawable-xxhdpi/btn_code_lock_default_qntm_alpha.png Binary files differindex 1b6c9b573df5..1b6c9b573df5 100755 --- a/core/res/res/drawable-xxhdpi/btn_code_lock_default_holo.png +++ b/core/res/res/drawable-xxhdpi/btn_code_lock_default_qntm_alpha.png diff --git a/core/res/res/drawable-xxhdpi/btn_code_lock_touched_holo.png b/core/res/res/drawable-xxhdpi/btn_code_lock_touched_qntm_alpha.png Binary files differindex dd13af8a9c0c..dd13af8a9c0c 100755 --- a/core/res/res/drawable-xxhdpi/btn_code_lock_touched_holo.png +++ b/core/res/res/drawable-xxhdpi/btn_code_lock_touched_qntm_alpha.png diff --git a/core/res/res/drawable-xxhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png b/core/res/res/drawable-xxhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..d3e80be41aa5 --- /dev/null +++ b/core/res/res/drawable-xxhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png diff --git a/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_default_holo.png b/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_default_qntm_alpha.png Binary files differindex a11b6ddfdcaf..a11b6ddfdcaf 100644 --- a/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_default_holo.png +++ b/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_default_qntm_alpha.png diff --git a/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_green_holo.png b/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_qntm_alpha.png Binary files differindex eae7ea895131..eae7ea895131 100644 --- a/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_green_holo.png +++ b/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_qntm_alpha.png diff --git a/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_red_holo.png b/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_red_holo.png Binary files differdeleted file mode 100644 index f6c3e2716891..000000000000 --- a/core/res/res/drawable-xxhdpi/indicator_code_lock_point_area_red_holo.png +++ /dev/null diff --git a/core/res/res/drawable-xxxhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png b/core/res/res/drawable-xxxhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png Binary files differnew file mode 100644 index 000000000000..23214fa188d7 --- /dev/null +++ b/core/res/res/drawable-xxxhdpi/indicator_code_lock_drag_direction_up_qntm_alpha.png diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 0811c02aa093..08c168050c34 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -6344,6 +6344,12 @@ <attr name="aspect" format="string" /> <!-- Color to use when drawing LockPatternView paths. --> <attr name="pathColor" format="color|reference" /> + <!-- The regular pattern color --> + <attr name="regularColor" format="color|reference" /> + <!-- The error color --> + <attr name="errorColor" format="color|reference" /> + <!-- The success color --> + <attr name="successColor" format="color|reference"/> </declare-styleable> <!-- Use <code>recognition-service</code> as the root tag of the XML resource that diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index 5a2609eafa8e..9bf2ce8b0f47 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -115,6 +115,11 @@ <color name="kg_multi_user_text_inactive">#ff808080</color> <color name="kg_widget_pager_gradient">#ffffffff</color> + <!-- LockPatternView --> + <color name="lock_pattern_view_regular_color">#ffffffff</color> + <color name="lock_pattern_view_success_color">#ffffffff</color> + <color name="lock_pattern_view_error_color">#fff4511e</color> + <!-- FaceLock --> <color name="facelock_spotlight_mask">#CC000000</color> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 41238a3ed23c..6a032e2a12b6 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1017,8 +1017,14 @@ <java-symbol type="drawable" name="text_edit_side_paste_window" /> <java-symbol type="drawable" name="text_edit_paste_window" /> <java-symbol type="drawable" name="btn_check_off" /> - <java-symbol type="drawable" name="btn_code_lock_default_holo" /> - <java-symbol type="drawable" name="btn_code_lock_touched_holo" /> + <java-symbol type="drawable" name="btn_code_lock_default_qntm_alpha" /> + <java-symbol type="drawable" name="btn_code_lock_touched_qntm_alpha" /> + <java-symbol type="drawable" name="indicator_code_lock_point_area_default_qntm_alpha" /> + <java-symbol type="drawable" name="indicator_code_lock_point_area_qntm_alpha" /> + <java-symbol type="drawable" name="indicator_code_lock_drag_direction_up_qntm_alpha" /> + <java-symbol type="color" name="lock_pattern_view_regular_color" /> + <java-symbol type="color" name="lock_pattern_view_success_color" /> + <java-symbol type="color" name="lock_pattern_view_error_color" /> <java-symbol type="drawable" name="clock_dial" /> <java-symbol type="drawable" name="clock_hand_hour" /> <java-symbol type="drawable" name="clock_hand_minute" /> @@ -1062,11 +1068,6 @@ <java-symbol type="drawable" name="ic_print" /> <java-symbol type="drawable" name="ic_print_error" /> <java-symbol type="drawable" name="ic_grayedout_printer" /> - <java-symbol type="drawable" name="indicator_code_lock_drag_direction_green_up" /> - <java-symbol type="drawable" name="indicator_code_lock_drag_direction_red_up" /> - <java-symbol type="drawable" name="indicator_code_lock_point_area_default_holo" /> - <java-symbol type="drawable" name="indicator_code_lock_point_area_green_holo" /> - <java-symbol type="drawable" name="indicator_code_lock_point_area_red_holo" /> <java-symbol type="drawable" name="jog_dial_arrow_long_left_green" /> <java-symbol type="drawable" name="jog_dial_arrow_long_right_red" /> <java-symbol type="drawable" name="jog_dial_arrow_short_left_and_right" /> diff --git a/telecomm/java/android/telecomm/CallServiceAdapter.java b/telecomm/java/android/telecomm/CallServiceAdapter.java index 7396808025ff..0c57828f9472 100644 --- a/telecomm/java/android/telecomm/CallServiceAdapter.java +++ b/telecomm/java/android/telecomm/CallServiceAdapter.java @@ -84,12 +84,16 @@ public final class CallServiceAdapter { /** * Tells Telecomm that an attempt to place the specified outgoing call failed. * - * @param callId The ID of the outgoing call. - * @param errorMessage The error associated with the failed call attempt. + * @param request The originating request for a connection. + * @param errorCode The error code associated with the failed call attempt. + * @param errorMsg The error message associated with the failed call attempt. */ - public void handleFailedOutgoingCall(String callId, String errorMessage) { + public void handleFailedOutgoingCall( + ConnectionRequest request, + int errorCode, + String errorMsg) { try { - mAdapter.handleFailedOutgoingCall(callId, errorMessage); + mAdapter.handleFailedOutgoingCall(request, errorCode, errorMsg); } catch (RemoteException e) { } } diff --git a/telecomm/java/android/telecomm/ConnectionRequest.aidl b/telecomm/java/android/telecomm/ConnectionRequest.aidl new file mode 100644 index 000000000000..72e5c8c4a0be --- /dev/null +++ b/telecomm/java/android/telecomm/ConnectionRequest.aidl @@ -0,0 +1,19 @@ +/* + * Copyright 2014, 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.telecomm; + +parcelable ConnectionRequest; diff --git a/telecomm/java/android/telecomm/ConnectionRequest.java b/telecomm/java/android/telecomm/ConnectionRequest.java index c1f187109f33..bf5727bd0dd3 100644 --- a/telecomm/java/android/telecomm/ConnectionRequest.java +++ b/telecomm/java/android/telecomm/ConnectionRequest.java @@ -18,23 +18,37 @@ package android.telecomm; import android.os.Bundle; import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; /** * Simple data container encapsulating a request to some entity to * create a new {@link Connection}. */ -public final class ConnectionRequest { +public final class ConnectionRequest implements Parcelable { // TODO: Token to limit recursive invocations // TODO: Consider upgrading "mHandle" to ordered list of handles, indicating a set of phone // numbers that would satisfy the client's needs, in order of preference + private final String mCallId; private final Uri mHandle; private final Bundle mExtras; public ConnectionRequest(Uri handle, Bundle extras) { - mHandle = handle; mExtras = extras; + this(null, handle, extras); } + public ConnectionRequest(String callId, Uri handle, Bundle extras) { + mCallId = callId; + mHandle = handle; + mExtras = extras; + } + + /** + * An identifier for this call. + */ + public String getCallId() { return mCallId; } + /** * The handle (e.g., phone number) to which the {@link Connection} is to connect. */ @@ -54,4 +68,40 @@ public final class ConnectionRequest { : ConnectionService.toLogSafePhoneNumber(mHandle.toString()), mExtras == null ? "" : mExtras); } -} + + /** + * Responsible for creating CallInfo objects for deserialized Parcels. + */ + public static final Parcelable.Creator<ConnectionRequest> CREATOR = + new Parcelable.Creator<ConnectionRequest> () { + @Override + public ConnectionRequest createFromParcel(Parcel source) { + String callId = source.readString(); + Uri handle = (Uri) source.readParcelable(getClass().getClassLoader()); + Bundle extras = (Bundle) source.readParcelable(getClass().getClassLoader()); + return new ConnectionRequest(callId, handle, extras); + } + + @Override + public ConnectionRequest[] newArray(int size) { + return new ConnectionRequest[size]; + } + }; + + /** + * {@inheritDoc} + */ + @Override + public int describeContents() { + return 0; + } + + /** + * Writes CallInfo object into a serializeable Parcel. + */ + @Override + public void writeToParcel(Parcel destination, int flags) { + destination.writeString(mCallId); + destination.writeParcelable(mHandle, 0); + destination.writeParcelable(mExtras, 0); + }} diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java index aeb1c3356783..31de15c354dc 100644 --- a/telecomm/java/android/telecomm/ConnectionService.java +++ b/telecomm/java/android/telecomm/ConnectionService.java @@ -18,6 +18,7 @@ package android.telecomm; import android.net.Uri; import android.os.Bundle; +import android.telephony.DisconnectCause; import java.util.HashMap; import java.util.LinkedList; @@ -115,9 +116,8 @@ public abstract class ConnectionService extends CallService { } @Override - public void onError(Uri handle, String reason) { - Log.w(this, "Error in onFindSubscriptions " + callInfo.getHandle() - + " error: " + reason); + public void onError(Uri handle, int code, String msg) { + Log.w(this, "Error in onFindSubscriptions %s %d %s", handle, code, msg); getAdapter().setIsCompatibleWith(callInfo.getId(), false); } } @@ -129,6 +129,7 @@ public abstract class ConnectionService extends CallService { Log.d(this, "call %s", callInfo); onCreateConnections( new ConnectionRequest( + callInfo.getId(), callInfo.getHandle(), callInfo.getExtras()), new Response<ConnectionRequest, Connection>() { @@ -137,7 +138,8 @@ public abstract class ConnectionService extends CallService { if (result.length != 1) { Log.d(this, "adapter handleFailedOutgoingCall %s", callInfo); getAdapter().handleFailedOutgoingCall( - callInfo.getId(), + request, + DisconnectCause.ERROR_UNSPECIFIED, "Created " + result.length + " Connections, expected 1"); for (Connection c : result) { c.abort(); @@ -150,8 +152,8 @@ public abstract class ConnectionService extends CallService { } @Override - public void onError(ConnectionRequest request, String reason) { - getAdapter().handleFailedOutgoingCall(callInfo.getId(), reason); + public void onError(ConnectionRequest request, int code, String msg) { + getAdapter().handleFailedOutgoingCall(request, code, msg); } } ); @@ -168,6 +170,7 @@ public abstract class ConnectionService extends CallService { Log.d(this, "setIncomingCallId %s %s", callId, extras); onCreateIncomingConnection( new ConnectionRequest( + callId, null, // TODO: Can we obtain this from "extras"? extras), new Response<ConnectionRequest, Connection>() { @@ -176,7 +179,8 @@ public abstract class ConnectionService extends CallService { if (result.length != 1) { Log.d(this, "adapter handleFailedOutgoingCall %s", callId); getAdapter().handleFailedOutgoingCall( - callId, + request, + DisconnectCause.ERROR_UNSPECIFIED, "Created " + result.length + " Connections, expected 1"); for (Connection c : result) { c.abort(); @@ -195,8 +199,9 @@ public abstract class ConnectionService extends CallService { } @Override - public void onError(ConnectionRequest request, String reason) { - Log.d(this, "adapter failed setIncomingCallId %s %s", request, reason); + public void onError(ConnectionRequest request, int code, String msg) { + Log.d(this, "adapter failed setIncomingCallId %s %d %s", + request, code, msg); } } ); diff --git a/telecomm/java/android/telecomm/InCallCall.java b/telecomm/java/android/telecomm/InCallCall.java index 346d2077a52a..b531ccd684a6 100644 --- a/telecomm/java/android/telecomm/InCallCall.java +++ b/telecomm/java/android/telecomm/InCallCall.java @@ -31,7 +31,8 @@ import java.util.List; public final class InCallCall implements Parcelable { private final String mId; private final CallState mState; - private final int mDisconnectCause; + private final int mDisconnectCauseCode; + private final String mDisconnectCauseMsg; private final int mCapabilities; private final long mConnectTimeMillis; private final Uri mHandle; @@ -47,15 +48,16 @@ public final class InCallCall implements Parcelable { public InCallCall( String id, CallState state, - int disconnectCause, + int disconnectCauseCode, + String disconnectCauseMsg, int capabilities, long connectTimeMillis, Uri handle, GatewayInfo gatewayInfo, CallServiceDescriptor descriptor, CallServiceDescriptor handoffDescriptor) { - this(id, state, disconnectCause, capabilities, connectTimeMillis, handle, gatewayInfo, - descriptor, handoffDescriptor, Collections.EMPTY_LIST, null, + this(id, state, disconnectCauseCode, disconnectCauseMsg, capabilities, connectTimeMillis, + handle, gatewayInfo, descriptor, handoffDescriptor, Collections.EMPTY_LIST, null, Collections.EMPTY_LIST); } @@ -63,7 +65,8 @@ public final class InCallCall implements Parcelable { public InCallCall( String id, CallState state, - int disconnectCause, + int disconnectCauseCode, + String disconnectCauseMsg, int capabilities, long connectTimeMillis, Uri handle, @@ -75,7 +78,8 @@ public final class InCallCall implements Parcelable { List<String> childCallIds) { mId = id; mState = state; - mDisconnectCause = disconnectCause; + mDisconnectCauseCode = disconnectCauseCode; + mDisconnectCauseMsg = disconnectCauseMsg; mCapabilities = capabilities; mConnectTimeMillis = connectTimeMillis; mHandle = handle; @@ -101,8 +105,16 @@ public final class InCallCall implements Parcelable { * Reason for disconnection, values are defined in {@link DisconnectCause}. Valid when call * state is {@link CallState#DISCONNECTED}. */ - public int getDisconnectCause() { - return mDisconnectCause; + public int getDisconnectCauseCode() { + return mDisconnectCauseCode; + } + + /** + * Further optional textual information about the reason for disconnection. Valid when call + * state is {@link CallState#DISCONNECTED}. + */ + public String getDisconnectCauseMsg() { + return mDisconnectCauseMsg; } // Bit mask of actions a call supports, values are defined in {@link CallCapabilities}. @@ -170,7 +182,8 @@ public final class InCallCall implements Parcelable { public InCallCall createFromParcel(Parcel source) { String id = source.readString(); CallState state = CallState.valueOf(source.readString()); - int disconnectCause = source.readInt(); + int disconnectCauseCode = source.readInt(); + String disconnectCauseMsg = source.readString(); int capabilities = source.readInt(); long connectTimeMillis = source.readLong(); ClassLoader classLoader = InCallCall.class.getClassLoader(); @@ -183,9 +196,9 @@ public final class InCallCall implements Parcelable { String parentCallId = source.readString(); List<String> childCallIds = new ArrayList<>(); source.readList(childCallIds, classLoader); - return new InCallCall(id, state, disconnectCause, capabilities, connectTimeMillis, - handle, gatewayInfo, descriptor, handoffDescriptor, conferenceCapableCallIds, - parentCallId, childCallIds); + return new InCallCall(id, state, disconnectCauseCode, disconnectCauseMsg, capabilities, + connectTimeMillis, handle, gatewayInfo, descriptor, handoffDescriptor, + conferenceCapableCallIds, parentCallId, childCallIds); } @Override @@ -205,7 +218,8 @@ public final class InCallCall implements Parcelable { public void writeToParcel(Parcel destination, int flags) { destination.writeString(mId); destination.writeString(mState.name()); - destination.writeInt(mDisconnectCause); + destination.writeInt(mDisconnectCauseCode); + destination.writeString(mDisconnectCauseMsg); destination.writeInt(mCapabilities); destination.writeLong(mConnectTimeMillis); destination.writeParcelable(mHandle, 0); diff --git a/telecomm/java/android/telecomm/Response.java b/telecomm/java/android/telecomm/Response.java index 14f83407ff36..13c0702fa6c3 100644 --- a/telecomm/java/android/telecomm/Response.java +++ b/telecomm/java/android/telecomm/Response.java @@ -33,7 +33,8 @@ public interface Response<IN, OUT> { * Indicates the inability to provide results. * * @param request The original request. - * @param reason The reason for the failure. + * @param code An integer code indicating the reason for failure. + * @param msg A message explaining the reason for failure. */ - void onError(IN request, String reason); + void onError(IN request, int code, String msg); } diff --git a/telecomm/java/com/android/internal/telecomm/ICallServiceAdapter.aidl b/telecomm/java/com/android/internal/telecomm/ICallServiceAdapter.aidl index a92b1767dbd8..f94eb322d025 100644 --- a/telecomm/java/com/android/internal/telecomm/ICallServiceAdapter.aidl +++ b/telecomm/java/com/android/internal/telecomm/ICallServiceAdapter.aidl @@ -17,6 +17,7 @@ package com.android.internal.telecomm; import android.telecomm.CallInfo; +import android.telecomm.ConnectionRequest; /** * Internal remote callback interface for call services. @@ -32,7 +33,7 @@ oneway interface ICallServiceAdapter { void handleSuccessfulOutgoingCall(String callId); - void handleFailedOutgoingCall(String callId, String errorMessage); + void handleFailedOutgoingCall(in ConnectionRequest request, int errorCode, String errorMessage); void setActive(String callId); diff --git a/telephony/java/android/telephony/DisconnectCause.java b/telephony/java/android/telephony/DisconnectCause.java index 86813442e05e..d2044be4dc0b 100644 --- a/telephony/java/android/telephony/DisconnectCause.java +++ b/telephony/java/android/telephony/DisconnectCause.java @@ -97,11 +97,62 @@ public class DisconnectCause { public static final int CDMA_ACCESS_BLOCKED = 35; /** Unknown error or not specified */ public static final int ERROR_UNSPECIFIED = 36; + /** + * Only emergency numbers are allowed, but we tried to dial + * a non-emergency number. + */ + // TODO: This should be the same as NOT_EMERGENCY + public static final int EMERGENCY_ONLY = 37; + /** + * The supplied CALL Intent didn't contain a valid phone number. + */ + public static final int NO_PHONE_NUMBER_SUPPLIED = 38; + /** + * Our initial phone number was actually an MMI sequence. + */ + public static final int DIALED_MMI = 39; + /** + * We tried to call a voicemail: URI but the device has no + * voicemail number configured. + */ + public static final int VOICEMAIL_NUMBER_MISSING = 40; + /** + * This status indicates that InCallScreen should display the + * CDMA-specific "call lost" dialog. (If an outgoing call fails, + * and the CDMA "auto-retry" feature is enabled, *and* the retried + * call fails too, we display this specific dialog.) + * + * TODO: this is currently unused, since the "call lost" dialog + * needs to be triggered by a *disconnect* event, rather than when + * the InCallScreen first comes to the foreground. For now we use + * the needToShowCallLostDialog field for this (see below.) + */ + public static final int CDMA_CALL_LOST = 41; + /** + * This status indicates that the call was placed successfully, + * but additionally, the InCallScreen needs to display the + * "Exiting ECM" dialog. + * + * (Details: "Emergency callback mode" is a CDMA-specific concept + * where the phone disallows data connections over the cell + * network for some period of time after you make an emergency + * call. If the phone is in ECM and you dial a non-emergency + * number, that automatically *cancels* ECM, but we additionally + * need to warn the user that ECM has been canceled (see bug + * 4207607.)) + * + * TODO: Rethink where the best place to put this is. It is not a notification + * of a failure of the connection -- it is an additional message that accompanies + * a successful connection giving the user important information about what happened. + * + * {@hide} + */ + public static final int EXITED_ECM = 42; /** Smallest valid value for call disconnect codes. */ public static final int MINIMUM_VALID_VALUE = NOT_DISCONNECTED; /** Largest valid value for call disconnect codes. */ - public static final int MAXIMUM_VALID_VALUE = ERROR_UNSPECIFIED; + public static final int MAXIMUM_VALID_VALUE = EXITED_ECM; /** Private constructor to avoid class instantiation. */ private DisconnectCause() { @@ -181,6 +232,18 @@ public class DisconnectCause { return "CDMA_NOT_EMERGENCY"; case CDMA_ACCESS_BLOCKED: return "CDMA_ACCESS_BLOCKED"; + case EMERGENCY_ONLY: + return "EMERGENCY_ONLY"; + case NO_PHONE_NUMBER_SUPPLIED: + return "NO_PHONE_NUMBER_SUPPLIED"; + case DIALED_MMI: + return "DIALED_MMI"; + case VOICEMAIL_NUMBER_MISSING: + return "VOICEMAIL_NUMBER_MISSING"; + case CDMA_CALL_LOST: + return "CDMA_CALL_LOST"; + case EXITED_ECM: + return "EXITED_ECM"; case ERROR_UNSPECIFIED: return "ERROR_UNSPECIFIED"; default: |