[Galaxy S III Android Development] KnowledgeBroker:
I used to have a link to the hacks, but I can't find it at the moment.. if you do the battery % hack, I would also do the press power button to take a picture hack- you can usually find both together(and it makes taking pictures much more intuitive).. I'll keep looking and post a link if I can find it, it is just some smali edits to the camera.apk

Wait, here it is, an explanation of how to add a bunch of these hacks for the s2 on jellybean.. should be more/less compatible with ours http://xdaforums.com/showthread.php?t=1841988

From that thread:

Camera MOD v8 by jobnik (Arthur):
---------------------------------
Files to be changed:
com\sec\android\app\camera\AbstractCameraActivity.smali
com\sec\android\app\camera\Camcorder.smali
com\sec\android\app\camera\Camera.smali
com\sec\android\app\camera\CameraEngine$AutoFocusCallback.smali
com\sec\android\app\camera\CameraEngine.smali
com\sec\android\app\camera\CameraSettings.smali
com\sec\android\app\camera\MediaRecorderProfile.smali
com\sec\android\app\camera\glwidget\TwGLActionMenu.smali
com\sec\android\app\camera\glwidget\TwGLPanoramaMenu.smali
com\sec\android\app\camera\glwidget\TwGLTimerMenu.smali
com\sec\android\app\camera\resourcedata\CameraSettingsMenuResourceData.smali
com\sec\android\app\camera\resourcedata\EditableResourceDataBase.smali

----------------
Camera
----------------

1. Camera "Unable to start while in a call" Alert Disabled
-------------------------------------------------------
* FILE:
com\sec\android\app\camera\AbstractCameraActivity.smali
com\sec\android\app\camera\CameraEngine.smali
* METHOD:
.method protected checkCameraDuringCall()V
.method public doTakePictureAsync()V
.method public getShutterSoundEnable()Z
.method public setShutterSoundEnable(Z)V
* REMOVED these lines or similar in all files and methods above:
invoke-static {}, Lcom/sec/android/app/CscFeature;->getInstance()Lcom/sec/android/app/CscFeature;

move-result-object v1

const-string v2, "CscFeature_Camera_EnableCameraDuringCall"

invoke-virtual {v1, v2, v0}, Lcom/sec/android/app/CscFeature;->getEnableStatus(Ljava/lang/String;Z)Z

move-result v1

if-eqz v1, :cond_29
* WHERE?:
* EXPLANATION:
Remove "if" condition, that check if "CscFeature_Camera_EnableCameraDuringCall" is enabled in "system/csc/others.xml" or "system/csc/features.xml"
That way we permanently enable Camera and disable shutter sound during Call.

2. Camera "Low Battery" Alert Disabled
-----------------------------------
* FILE:
com\sec\android\app\camera\AbstractCameraActivity.smali
* METHOD:
.method protected handleLowBattery(Z)V
* ADDED new line:
return-void
* WHERE?:
.prologue
.line 2013
return-void
const-string v1, "AbstractCameraActivity"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method

3. Camera "Can't use flash on low battery" Alert Disabled
------------------------------------------------------
* FILE:
com\sec\android\app\camera\Camera.smali
* METHOD:
.method private handlePluggedLowBattery(Z)V
* ADDED new line:
return-void
* WHERE?:
.line 5983
return-void
const-string v1, "Camera"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method

4. Camera Power and Volume keys as a shutter
-----------------------------------------
* FILE:
com\sec\android\app\camera\Camera.smali
* METHOD:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
* MODIFIED switch case:
:sswitch_data_2a8
.sparse-switch
0x4 -> :sswitch_95
0x17 -> :sswitch_f7
0x18 -> :sswitch_f7
0x19 -> :sswitch_f7
0x1a -> :sswitch_f7
0x1b -> :sswitch_f7
0x42 -> :sswitch_f7
0x45 -> :sswitch_240
0x46 -> :sswitch_240
0x50 -> :sswitch_9b
0x52 -> :sswitch_93
0x55 -> :sswitch_98
0x59 -> :sswitch_98
0x5a -> :sswitch_98
0x9c -> :sswitch_240
0x9d -> :sswitch_240
.end sparse-switch
* EXPLANATION:
0x18 is volume up key, 0x19 is volume down key, 0x1a is a power key.
We are telling this switch cases to link to "sswitch_f7" and act the same as shutter key, that is 0x17.
----------
* METHOD:
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* MODIFIED switch case:
:sswitch_data_278
.sparse-switch
0x4 -> :sswitch_60
0x17 -> :sswitch_11e
0x18 -> :sswitch_11e
0x19 -> :sswitch_11e
0x1a -> :sswitch_11e
0x1b -> :sswitch_11e
0x42 -> :sswitch_11e
0x50 -> :sswitch_21e
0x52 -> :sswitch_e5
.end sparse-switch
* EXPLANATION:
0x18 is volume up key, 0x19 is volume down key, 0x1a is a power key.
We are telling this switch cases to link to "sswitch_11e" and act the same as shutter key, that is 0x17.

5. Camera Enable "Shutter Sound On/Off" permanently
------------------------------------------------
* FILES:
com\sec\android\app\camera\Camera.smali
com\sec\android\app\camera\CameraEngine$AutoFocusCallback.smali
com\sec\android\app\camera\CameraEngine.smali
com\sec\android\app\camera\CameraSettings.smali
com\sec\android\app\camera\resourcedata\CameraSettingsMenuResourceData.smali
com\sec\android\app\camera\resourcedata\EditableResourceDataBase.smali
* METHODS:
.method public playCameraSound(II)V
.method public onAutoFocus(ILcom/sec/android/seccamera/SecCamera;)V
.method public initialize()V
.method private resetCameraGlobalSettings()V
.method public setDefaultCameraEditableShortcutOrder()V
.method private initCommandIdList(Lcom/sec/android/app/camera/AbstractCameraActivity;)V
.method public resetOrder(Ljava/lang/String;)V
* REMOVED these lines or similar in all files and methods above:
invoke-static {}, Lcom/sec/android/app/CscFeature;->getInstance()Lcom/sec/android/app/CscFeature;

move-result-object v0

const-string v1, "CscFeature_Camera_ShutterSoundMenu"

invoke-virtual {v0, v1}, Lcom/sec/android/app/CscFeature;->getEnableStatus(Ljava/lang/String;)Z

move-result v0

if-eqz v0, :cond_9d
* WHERE?:
* EXPLANATION:
Remove "if" condition, that check if "CscFeature_Camera_ShutterSoundMenu" is enabled in "system/csc/others.xml" or "system/csc/features.xml"
That way we permanently enable "Shutter Sound On/Off" feature.

6. Camera "Action shot" shooting mode Volume keys as a shutter
-----------------------------------------------------------
* FILE:
com\sec\android\app\camera\glwidget\TwGLActionMenu.smali
* METHODS:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* ADDED new line:
goto :cond_c
* WHERE?:
.line 213
goto :cond_c
const/16 v1, 0x18
if-eq p1, v1, :cond_b

const/16 v1, 0x19
if-ne p1, v1, :cond_c
* EXPLANATION:
Jump below "if" conditions that check if volume keys are pressed

7. Camera "Panorama" shooting mode Volume keys as a shutter
--------------------------------------------------------
* FILE:
com\sec\android\app\camera\glwidget\TwGLPanoramaMenu.smali
* METHODS:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* ADDED new line:
goto :cond_c
* WHERE?:
.line 450
goto :cond_c
const/16 v1, 0x18
if-eq p1, v1, :cond_b

const/16 v1, 0x19
if-ne p1, v1, :cond_c
* EXPLANATION:
Jump below "if" conditions that check if volume keys are pressed

8. Camera "Timer" shooting mode Volume keys as a shutter
-----------------------------------------------------
* FILE:
com\sec\android\app\camera\glwidget\TwGLTimerMenu.smali
* METHODS:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* ADDED new line:
goto :cond_a
* WHERE?:
.line 114
goto :cond_a
const/16 v1, 0x18
if-eq p1, v1, :cond_9

const/16 v1, 0x19
if-ne p1, v1, :cond_a
* EXPLANATION:
Jump below "if" conditions that check if volume keys are pressed

-----------
Camcorder
-----------

9. Camcorder "Unable to record while in a call" Alert Disabled
-----------------------------------------------------------
* FILE:
com\sec\android\app\camera\Camcorder.smali
* METHOD:
.method protected checkCameraDuringCall()V
* MODIFIED boolean from 0x0 (false) to 0x1 (true):
const/4 v0, 0x1
* WHERE?:
.prologue
.line 4448
const/4 v0, 0x1
* EXPLANATION:
This function will set "mEnableDuringCall" variable always to "true".
That way it is possible now to record video during call (but not if you're recording your call).

10. Camcorder "Can't use flash on low battery" Alert Disabled
---------------------------------------------------------
* FILE:
com\sec\android\app\camera\Camcorder.smali
* METHOD:
.method private handlePluggedLowBattery(Z)V
* ADDED new line:
return-void
* WHERE?:
.line 4285
return-void
const-string v1, "Camcorder"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method

11. Camcorder "Low Battery" Alert Disabled
--------------------------------------
* FILE:
com\sec\android\app\camera\Camcorder.smali
* METHOD:
.method protected handleLowBattery(Z)V
* ADDED new line:
return-void
* WHERE?:
.prologue
.line 3205
return-void
const-string v0, "Camcorder"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method

12. Camcorder Volume and Power keys as a shutter
--------------------------------------------
* FILE:
com\sec\android\app\camera\Camcorder.smali
* METHOD:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
* MODIFIED switch case:
:sswitch_data_f4
.sparse-switch
0x4 -> :sswitch_4f
0x18 -> :sswitch_4f
0x19 -> :sswitch_4f
0x1a -> :sswitch_4f
0x45 -> :sswitch_53
0x46 -> :sswitch_53
0x4f -> :sswitch_51
0x50 -> :sswitch_cd
0x52 -> :sswitch_4d
0x55 -> :sswitch_51
0x7e -> :sswitch_51
0x7f -> :sswitch_51
0x9c -> :sswitch_53
0x9d -> :sswitch_53
.end sparse-switch
* EXPLANATION:
0x18 is volume up key, 0x19 is volume down key.
We are telling this switch cases to link to "sswitch_4f" and do nothing when pressed.
----------
* METHOD:
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* ADDED new lines:
const/16 v4, 0x19
if-eq p1, v4, :cond_143
* WHERE?:
.line 1759
:cond_12f

const/16 v4, 0x19
if-eq p1, v4, :cond_143

invoke-virtual {p0}, Lcom/sec/android/app/camera/Camcorder;->processBack()V
* EXPLANATION:
This will add new "if" condition for 0x19 (volume down) key.
Becasue I've linked 0x19 (volume down) key to "sswitch_ec" switch case, that uses by 0x4 (back button) key,
this will skip from Camera to exit when volume down is pressed and will just stop recording.
----------
* MODIFIED and ADDED switch case:
:sswitch_data_176
.sparse-switch
0x4 -> :sswitch_ec
0x17 -> :sswitch_71
0x18 -> :sswitch_71
0x19 -> :sswitch_ec
0x1a -> :sswitch_71
0x1b -> :sswitch_71
0x42 -> :sswitch_71
0x50 -> :sswitch_138
0x52 -> :sswitch_56
.end sparse-switch
* EXPLANATION:
0x18 is volume up key and it's linked to "sswitch_71" the same as shutter key 0x17.
0x19 is volume down key and it's linked to "sswitch_ec" the same as back button 0x4 (see above info).
added 0x1a (power key) switch case to be linked to "sswitch_71" the same as shutter key 0x17.

13. Camcorder Better audio quality/video bitrate
--------------------------------------------
FILE:
com\sec\android\app\camera\MediaRecorderProfile.smali
INFO FROM:
http://xdaforums.com/showthread.php?t=1832472
VIDEO QUALITY:
1080p: Normal - 17MBit / Fine - 24MBit / Superfine - 30MBit
720p : Normal - 9MBit / Fine - 13MBit / Superfine - 17MBit
SOUND QUALITY:
192kbit/s
48000 Khz
MODIFIED Arrays:
:array_11c
.array-data 0x4
0x2t 0x0t 0x0t 0x0t
0x80t 0xc3t 0xc9t 0x1t
0x0t 0x36t 0x6et 0x1t
0x40t 0x66t 0x3t 0x1t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t
.end array-data

:array_134
.array-data 0x4
0x2t 0x0t 0x0t 0x0t
0x40t 0x66t 0x3t 0x1t
0x40t 0x5dt 0xc6t 0x0t
0x40t 0x54t 0x89t 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t
.end array-data

:array_14c
.array-data 0x4
0x2t 0x0t 0x0t 0x0t
0xa8t 0xa0t 0x34t 0x0t
0x50t 0x3et 0x2bt 0x0t
0x90t 0x10t 0x23t 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t
.end array-data

:array_164
.array-data 0x4
0x2t 0x0t 0x0t 0x0t
0x70t 0xf7t 0x2et 0x0t
0xa8t 0xf4t 0x26t 0x0t
0xb8t 0xcet 0x1et 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xeet 0x2t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t
.end array-data