[Galaxy S II Android Development] shoman94:
Re-enable Edge Zoom on Official Release

So in typical Samsung style they decided to disable Edge Zoom in the official releases.

Here is how we re-enable it and allow the toggle int he OP to still function correctly.

Decompile framework.jar

Go here:

\framework\smali\android\view\ScaleGestureDetector.smali

Find:

[B].method public onTouchEvent(Landroid/view/MotionEvent;)Z[/B]

Replace that entire method with this:

.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.locals 26
.parameter "event"

.prologue
.line 207
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;

move-object/from16 v24, v0

if-eqz v24, :cond_0

.line 208
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;

move-object/from16 v24, v0

const/16 v25, 0x0

move-object/from16 v0, v24

move-object/from16 v1, p1

move/from16 v2, v25

invoke-virtual {v0, v1, v2}, Landroid/view/InputEventConsistencyVerifier;->onTouchEvent(Landroid/view/MotionEvent;I)V

.line 213
:cond_0
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mValidPackage:Z

move/from16 v24, v0

if-eqz v24, :cond_1

invoke-direct/range {p0 .. p1}, Landroid/view/ScaleGestureDetector;->onEdgeTouchEvent(Landroid/view/MotionEvent;)Z

move-result v24

if-eqz v24, :cond_1

const/16 v24, 0x1

.line 310
:goto_0
return v24

.line 213
:cond_1
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionMasked()I

move-result v3

.line 215
.local v3, action:I
const/16 v24, 0x1

move/from16 v0, v24

if-eq v3, v0, :cond_2

const/16 v24, 0x3

move/from16 v0, v24

if-ne v3, v0, :cond_5

:cond_2
const/16 v19, 0x1

.line 217
.local v19, streamComplete:Z
:goto_1
if-eqz v3, :cond_3

if-eqz v19, :cond_6

.line 221
:cond_3
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_4

.line 222
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V

.line 223
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 224
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 227
:cond_4
if-eqz v19, :cond_6

.line 228
const/16 v24, 0x1

goto :goto_0

.line 215
.end local v19 #streamComplete:Z
:cond_5
const/16 v19, 0x0

goto :goto_1

.line 232
.restart local v19 #streamComplete:Z
:cond_6
const/16 v24, 0x6

move/from16 v0, v24

if-eq v3, v0, :cond_7

const/16 v24, 0x5

move/from16 v0, v24

if-ne v3, v0, :cond_8

:cond_7
const/4 v4, 0x1

.line 235
.local v4, configChanged:Z
:goto_2
const/16 v24, 0x6

move/from16 v0, v24

if-ne v3, v0, :cond_9

const/4 v14, 0x1

.line 236
.local v14, pointerUp:Z
:goto_3
if-eqz v14, :cond_a

invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionIndex()I

move-result v15

.line 239
.local v15, skipIndex:I
:goto_4
const/16 v20, 0x0

.local v20, sumX:F
const/16 v21, 0x0

.line 240
.local v21, sumY:F
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getPointerCount()I

move-result v5

.line 241
.local v5, count:I
const/4 v13, 0x0

.local v13, i:I
:goto_5
if-ge v13, v5, :cond_c

.line 242
if-ne v15, v13, :cond_b

.line 241
:goto_6
add-int/lit8 v13, v13, 0x1

goto :goto_5

.line 232
.end local v4 #configChanged:Z
.end local v5 #count:I
.end local v13 #i:I
.end local v14 #pointerUp:Z
.end local v15 #skipIndex:I
.end local v20 #sumX:F
.end local v21 #sumY:F
:cond_8
const/4 v4, 0x0

goto :goto_2

.line 235
.restart local v4 #configChanged:Z
:cond_9
const/4 v14, 0x0

goto :goto_3

.line 236
.restart local v14 #pointerUp:Z
:cond_a
const/4 v15, -0x1

goto :goto_4

.line 243
.restart local v5 #count:I
.restart local v13 #i:I
.restart local v15 #skipIndex:I
.restart local v20 #sumX:F
.restart local v21 #sumY:F
:cond_b
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F

move-result v24

add-float v20, v20, v24

.line 244
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F

move-result v24

add-float v21, v21, v24

goto :goto_6

.line 246
:cond_c
if-eqz v14, :cond_d

add-int/lit8 v10, v5, -0x1

.line 247
.local v10, div:I
:goto_7
int-to-float v0, v10

move/from16 v24, v0

div-float v11, v20, v24

.line 248
.local v11, focusX:F
int-to-float v0, v10

move/from16 v24, v0

div-float v12, v21, v24

.line 251
.local v12, focusY:F
const/4 v6, 0x0

.local v6, devSumX:F
const/4 v7, 0x0

.line 252
.local v7, devSumY:F
const/4 v13, 0x0

:goto_8
if-ge v13, v5, :cond_f

.line 253
if-ne v15, v13, :cond_e

.line 252
:goto_9
add-int/lit8 v13, v13, 0x1

goto :goto_8

.end local v6 #devSumX:F
.end local v7 #devSumY:F
.end local v10 #div:I
.end local v11 #focusX:F
.end local v12 #focusY:F
:cond_d
move v10, v5

.line 246
goto :goto_7

.line 254
.restart local v6 #devSumX:F
.restart local v7 #devSumY:F
.restart local v10 #div:I
.restart local v11 #focusX:F
.restart local v12 #focusY:F
:cond_e
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F

move-result v24

sub-float v24, v24, v11

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

add-float v6, v6, v24

.line 255
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F

move-result v24

sub-float v24, v24, v12

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

add-float v7, v7, v24

goto :goto_9

.line 257
:cond_f
int-to-float v0, v10

move/from16 v24, v0

div-float v8, v6, v24

.line 258
.local v8, devX:F
int-to-float v0, v10

move/from16 v24, v0

div-float v9, v7, v24

.line 263
.local v9, devY:F
const/high16 v24, 0x4000

mul-float v17, v8, v24

.line 264
.local v17, spanX:F
const/high16 v24, 0x4000

mul-float v18, v9, v24

.line 265
.local v18, spanY:F
mul-float v24, v17, v17

mul-float v25, v18, v18

add-float v24, v24, v25

invoke-static/range {v24 .. v24}, Landroid/util/FloatMath;->sqrt(F)F

move-result v16

.line 270
.local v16, span:F
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v23, v0

.line 271
.local v23, wasInProgress:Z
move-object/from16 v0, p0

iput v11, v0, Landroid/view/ScaleGestureDetector;->mFocusX:F

.line 272
move-object/from16 v0, p0

iput v12, v0, Landroid/view/ScaleGestureDetector;->mFocusY:F

.line 273
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_11

const/16 v24, 0x0

cmpl-float v24, v16, v24

if-eqz v24, :cond_10

if-eqz v4, :cond_11

.line 274
:cond_10
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V

.line 275
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 276
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 278
:cond_11
if-eqz v4, :cond_12

.line 279
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 280
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 281
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 283
:cond_12
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-nez v24, :cond_14

const/16 v24, 0x0

cmpl-float v24, v16, v24

if-eqz v24, :cond_14

if-nez v23, :cond_13

move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

move/from16 v24, v0

sub-float v24, v16, v24

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mSpanSlop:I

move/from16 v25, v0

move/from16 v0, v25

int-to-float v0, v0

move/from16 v25, v0

cmpl-float v24, v24, v25

if-lez v24, :cond_14

.line 285
:cond_13
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 286
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 287
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

.line 288
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleBegin(Landroid/view/ScaleGestureDetector;)Z

move-result v24

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 289
const-string v24, "ScaleGestureDetector"

const-string v25, "SGD"

invoke-static/range {v24 .. v25}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

.line 293
:cond_14
const/16 v24, 0x2

move/from16 v0, v24

if-ne v3, v0, :cond_16

.line 294
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

.line 295
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

.line 296
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

.line 298
const/16 v22, 0x1

.line 299
.local v22, updatePrev:Z
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_15

.line 300
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScale(Landroid/view/ScaleGestureDetector;)Z

move-result v22

.line 303
:cond_15
if-eqz v22, :cond_16

.line 304
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 305
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 306
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

.line 310
.end local v22 #updatePrev:Z
:cond_16
const/16 v24, 0x1

goto/16 :goto_0
.end method

Recompile to test then add the toggle from the OP.

Hope this helps.