[Galaxy S 4 i9500 Android Development] grgsiocl:
This is how to enable Call recording on the Galaxy S4 -I9500 (tested on this) on Based Samsung Android 4.2.2 Roms

1. Decompile SecPhone.apk

2. Open smali\com\android\phone\PhoneFeature.smali, go to "makeFeatureForCommon()V" method, and make the changes:

.line 1002
sget-object v0, Lcom/android/phone/PhoneFeature;->mFeatureList:Ljava/util/HashMap;

const-string v5, "support_merge_call"

invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

move-result-object v6

invoke-virtual {v0, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

++	.line 1003

++	sget-object v0, Lcom/android/phone/PhoneFeature;->mFeatureList:Ljava/util/HashMap;

++	const-string v5, "voice_call_recording"

++	const/4 v2, 0x1

++	invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

++	move-result-object v6

++	invoke-virtual {v0, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

++ .line 1004

3. This mod is tested & working on latest I9500 FW - I9500UBUAMDK

4. All the recorded calls will be stored on sdcard under sounds folder

5. Flash at your own risk

No Increasing ringtone

TARGET FILE: secphone/smali/com/android/phone/Ringer$1.smali and following changes:

iget-object v1, v1, Lcom/android/phone/Ringer;->mAudioManager:Landroid/media/AudioManager;

- invoke-virtual {v1, v6, v4, v5}, Landroid/media/AudioManager;->setStreamVolume(III)V
-
.line 804
const/4 v1, 0x7

and

goto/16 :goto_0

.line 756
+ nop
+
nop

:pswitch_data_0

EXTENDED POWER MENU MOD

TARGET FILE: android.policy.jar

First Copy attached GlobalActions$99$1.smali, GlobalActions$99$2.smali, GlobalActions$99.smali from the atatchments to android.policy_ori.jar.out\smali\com\android\internal\policy\impl

2. Open the GlobalActions$99.smali using any notepad editor and change the following to whatever name you want :

const-string v2, "Rebooot Menu"

3. Open the following file : /smali/com/android/internal/policy/impl/GlobalActions$SinglePressAction.smali and make the following changes:

.end annotation

+# static fields
+.field protected static rebootMode:I
+
+.field protected static final rebootOptions:[Ljava/lang/String;
+
+

# direct methods
+.method static constructor <clinit>()V
+ .locals 3
+
+ const/4 v0, 0x4
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ const/4 v1, 0x0
+
+ const-string v2, "Reboot"
+
+ aput-object v2, v0, v1
+
+ const/4 v1, 0x1
+
+ const-string v2, "Hot Boot"
+
+ aput-object v2, v0, v1
+
+ const/4 v1, 0x2
+
+ const-string v2, "Download"
+
+ aput-object v2, v0, v1
+
+ const/4 v1, 0x3
+
+ const-string v2, "Recovery"
+
+ aput-object v2, v0, v1
+
+ sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
+
+ return-void
+.end method
+
.method protected constructor <init>(II)V
.locals 1
.parameter "iconResId"

4. Open the following file : smali/com/android/internal/policy/impl/GlobalActions.smali and male following changes:

iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.line 566
- new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$5;
+ new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$99;

const v1, 0x108097f

const v2, 0x1040199

- invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$5;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
+ invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$99;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

5. Compile and then flash

No MMS Conversion & Increase Recipient Limit

Target File: Secmms.apk

1. Open the following file: /res/xml/mms_config.xml	and make following changes:

<int name="mMaxTextViewSize">5000</int>
- <int name="recipientLimit">10</int>
- <int name="smsToMmsTextThreshold">4</int>
+ <int name="recipientLimit">999</int>
+ <int name="smsToMmsTextThreshold">999</int>
<bool name="disableEndterKey">false</bool>
<bool name="composeMaxLengthLimit">false</bool>
- <bool name="inputModeAuto">false</bool>
+ <bool name="inputModeAuto">true</bool>
<bool name="smsExpiryDate">false</bool>
<bool name="sendAnimationJpn">false</bool>
<bool name="wapPush">true</bool>

2. Open the following file: smali/com/android/mms/MmsConfig.smali	and make following changes:

sput v0, Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I

.line 163
- sput v7, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
+ const/16 v0, 0x3e7

- .line 164
- const/16 v0, 0xc8
+ sput v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I

+ .line 164
sput v0, Lcom/android/mms/MmsConfig;->mDefaultSMSMessagesPerThread:I

.line 165

.prologue
.line 2510
- sget v0, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I
+ const/16 v0, 0x3e7

return v0
.end method

.prologue
.line 2751
- sget v0, Lcom/android/mms/MmsConfig;->mMmsRecipientLimit:I
+ const/16 v0, 0x3e7

return v0
.end method

.prologue
.line 759
- sget v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
+ const/16 v0, 0x3e7

return v0
.end method

.prologue
.line 688
- sget v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
+ const/16 v0, 0x3e7

return v0
.end method

move-result v11

+ const/16 v11, 0x3e7
+
sput v11, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I

.line 1768

move-result v1

+ const/16 v1, 0x3e7
+
sput v1, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I

.line 2045

invoke-interface {v0, v1, v4}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I

move-result v1
+
+ const/16 v1, 0x3e7

sput v1, Lcom/android/mms/MmsConfig;->mRecipientLimit:I

Increasing SMS hour limit

Navigate and open \com\android\mms\util\RateController.smali

Search for

.field private static final RATE_LIMIT:I = 0x64

This value is in hexadecimal format, so we see that 0x64 = 100. So, to increase this to 1000 simply change 0x64 to 0x3e8

I am including the mod here. If you are on deodexed rom, then delete the secphone.odex and then flash the zip from recovery. I will release the odex one in few hours as i am in hurry now.

Download

- I9500UBUAMDK- DEODEXED

I completed with almost all the mods and i will release it later i a day as i am on business trip!

Credits

-------------

Wanam

mythtrandyr