Related
As I'm running a stock ROM I don't know if this affects others, but I would guess it's the same situation for everyone. When you turn your phone into landscape, the volume buttons are the wrong way round. It annoyed the hell out of me, so I decided to sort it. Android does this already for phone with a DPad on, so it's a case of simply fooling the phone into thinking it has a DPad when the Vol buttons are pressed and using the existing rotation routines.
The process is a little complicated, since it affects services.jar, which is edited by theme creations, so there is no simple update or upgrade.zip, as it could wipe out part of your theme. However I will attach mine, which you can try and always revert back to a backup if you want.
First off, you need to grab a copy of the file.
Code:
adb pull /system/framework/services.jar
This pulls the file onto your computer. Open it up in WinRAR (or similar) and pull out the classes.dex file.
You then need to disassemble the dex file. I use Easy APK Disassembler as it's a doddle to use.
Put the classes.dex file into the same folder as this and run EasyApkDisassembler.EN.bat, select option 2, and give it a name. It creates a folder called out_<name>.
Find the file named KeyInputQueue.smali in out_<name>/com/android/server and open it up in an editor like notepad++
scroll down to find a section which looks similar to this:
Code:
fill-array-data v0, :array_1c
sput-object v0, Lcom/android/server/KeyInputQueue;->KEY_90_MAP:[I
This is creating an array called KEY_90_MAP, and filling it with the data from :array_1c. (It might not be array_1c for you, but whatever value you have it's that array you need to find)
Next, find where it fills the array. These are the values to rotate the DPAD buttons, but since were don't have them we can simple use the array to store the Volume code map.
Code:
:array_1c
.array-data 0x4
0x14t 0x0t 0x0t 0x0t
0x16t 0x0t 0x0t 0x0t
0x16t 0x0t 0x0t 0x0t
0x13t 0x0t 0x0t 0x0t
0x13t 0x0t 0x0t 0x0t
0x15t 0x0t 0x0t 0x0t
0x15t 0x0t 0x0t 0x0t
0x14t 0x0t 0x0t 0x0t
.end array-data
Edit the 1st 4 lines, with the codes for VOLUME_UP and VOLUME_DOWN, which are 0x18 and 0x19.
Code:
:array_1c
.array-data 0x4
0x18t 0x0t 0x0t 0x0t
0x19t 0x0t 0x0t 0x0t
0x19t 0x0t 0x0t 0x0t
0x18t 0x0t 0x0t 0x0t
0x13t 0x0t 0x0t 0x0t
0x15t 0x0t 0x0t 0x0t
0x15t 0x0t 0x0t 0x0t
0x14t 0x0t 0x0t 0x0t
.end array-data
We next need to fool the phone into thinking it has a DPAD when the buttons are pressed.
Find the section
Code:
.method public getInputConfiguration(Landroid/content/res/Configuration;)V
a few lines down from here are the line
Code:
.line 322
const/4 v4, 0x1
iput v4, p1, Landroid/content/res/Configuration;->navigation:I
Again you might have a slightly different line number. This routine essentially checks the input configuration and sets various flags if the device has a mouse, or dpad etc. The const/4 v3, 0x1 is setting it to having no dpad by default then later if it finds a dpad, it sets the flag accordingly. We're just defaulting it to say it does have a dpad. So we change it to 0x2.
Code:
.line 322
const/4 v4, 0x2
iput v4, p1, Landroid/content/res/Configuration;->navigation:I
Save the file.
We then need to recompile the dex, so run EasyAPK, select option 3, and enter the folder name you used. This compiles a file called out.dex. Open up the services.jar file in WinRAR again, and push this file into the archive. Delete the original classes.dex file in the archive, and rename out.dex to classes.dex.
You have now made the changes.
You then just need to replace your phone's version with this version. I tend to rename it to services_1.jar and push it to the sdcard. Reboot the phone into xRecovery and mount the system and sdcard, and adb shell to rename the existig file, and put this in its place. However you push it back, make sure you set the permissions to 644.
Reboot the phone. It takes a while to reboot, so just wait for a few mins. (Mine reboots twice the first time for some reason but then it's fine.)
You then have the swapped volume buttons when you put the phone in landscape mode!
My version is here:
http://www.megaupload.com/?d=R5L8M44R
Works on x10 mini stock rom!!! Good work!!
Hi,
i'm on Frankenstein KK5 Rom (odexed) and my question is:
is it possible to set up duration of the alarm clock? (it only plays the alarm-music for ~ 30 seconds)
i've found this code in alarm.smali:
Code:
.class public Lcom/sec/android/app/clockpackage/alarm/Alarm;
.super Landroid/app/Activity;
.source "Alarm.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/sec/android/app/clockpackage/alarm/Alarm$MyReceiver;,
Lcom/sec/android/app/clockpackage/alarm/Alarm$DeleteDialogListener;
}
.end annotation
# static fields
.field public static final ALARM_DURATION_TABLE:[I
.field public static final ALARM_SNOOZE_COUNT_TABLE:[I
.field public static final ALARM_SUBDUE_URI:[Ljava/lang/String;
.field static final SMART_ALARM_TONE:[I
.field private static bgCanvas:Landroid/graphics/Canvas;
.field private static metrics:Landroid/util/DisplayMetrics;
.field private static p:Landroid/os/Parcel;
# instance fields
.field private mBackgroundNoItem:Landroid/graphics/Bitmap;
.field private mCreateAlarm:Landroid/view/View;
.field private mCursor:Landroid/database/Cursor;
.field private mCursorAdapter:Lcom/sec/android/app/clockpackage/alarm/CustomCursorAdapter;
.field private mDeleteDialog:Landroid/app/AlertDialog;
.field private mDeleteDialogListener:Lcom/sec/android/app/clockpackage/alarm/Alarm$DeleteDialogListener;
.field private mDeletePosition:I
.field private mFirstLaunch:Z
.field private mInfoAlarmName:Ljava/lang/String;
.field private mIsInfoAlarm:Z
.field private mList:Lcom/sec/android/app/clockpackage/alarm/CustomListView;
.field private mListAdapter:Lcom/sec/android/app/clockpackage/alarm/CustomListAdapter;
.field private mOrientation:I
.field private mReceiver:Lcom/sec/android/app/clockpackage/alarm/Alarm$MyReceiver;
.field private mSetAsUri:Ljava/lang/String;
.field private mToast:Landroid/widget/Toast;
# direct methods
.method static constructor <clinit>()V
.locals 6
.prologue
const/4 v5, 0x6
const/4 v4, 0x0
const/4 v3, 0x5
.line 170
new-array v0, v3, [I
fill-array-data v0, :array_0
sput-object v0, Lcom/sec/android/app/clockpackage/alarm/Alarm;->ALARM_SNOOZE_COUNT_TABLE:[I
.line 182
new-array v0, v3, [I
fill-array-data v0, :array_1
sput-object v0, Lcom/sec/android/app/clockpackage/alarm/Alarm;->ALARM_DURATION_TABLE:[I
.line 189
new-array v0, v5, [Ljava/lang/String;
const/4 v1, 0x0
const-string v2, "/system/media/audio/ui/Morning.ogg"
aput-object v2, v0, v1
const/4 v1, 0x1
const-string v2, "/system/media/audio/ui/Breeze.ogg"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "/system/media/audio/ui/Mist.ogg"
aput-object v2, v0, v1
const/4 v1, 0x3
const-string v2, "/system/media/audio/ui/Forest.ogg"
aput-object v2, v0, v1
const/4 v1, 0x4
const-string v2, "/system/media/audio/ui/Light.ogg"
aput-object v2, v0, v1
const-string v1, "/system/media/audio/ui/Rain.ogg"
aput-object v1, v0, v3
sput-object v0, Lcom/sec/android/app/clockpackage/alarm/Alarm;->ALARM_SUBDUE_URI:[Ljava/lang/String;
.line 205
new-array v0, v5, [I
fill-array-data v0, :array_2
sput-object v0, Lcom/sec/android/app/clockpackage/alarm/Alarm;->SMART_ALARM_TONE:[I
.line 268
sput-object v4, Lcom/sec/android/app/clockpackage/alarm/Alarm;->metrics:Landroid/util/DisplayMetrics;
.line 269
sput-object v4, Lcom/sec/android/app/clockpackage/alarm/Alarm;->bgCanvas:Landroid/graphics/Canvas;
.line 270
sput-object v4, Lcom/sec/android/app/clockpackage/alarm/Alarm;->p:Landroid/os/Parcel;
return-void
.line 170
:array_0
.array-data 0x4
0x1t 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x5t 0x0t 0x0t 0x0t
0xat 0x0t 0x0t 0x0t
.end array-data
.line 182
:array_1
.array-data 0x4
0x3t 0x0t 0x0t 0x0t
0x5t 0x0t 0x0t 0x0t
0xat 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
.end array-data
.line 205
:array_2
.array-data 0x4
0x0t 0x0t 0x0t 0x0t
0x1t 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x4t 0x0t 0x0t 0x0t
0x5t 0x0t 0x0t 0x0t
.end array-data
.end method
.method public constructor <init>()V
.locals 4
.prologue
const/4 v3, 0x0
const/4 v2, -0x1
const/4 v1, 0x0
.line 82
invoke-direct {p0}, Landroid/app/Activity;-><init>()V
....too much code.....
but i'm not able to find the duration time initialization....
greetz DaLuigi3
nobody has an idea?
the last try to get an answer...
DaLuigi3 said:
the last try to get an answer...
Click to expand...
Click to collapse
I would love a solution for this!!
Up
This is my first contribution here
(NOTE,Tested on my stock ICS 4.0.3, I'm not sure if GB or other rom may work.)
At your own risk that your phone may blow up!, just kidding
This will teach you how to enable 30 step volume and a smoother scrolling
1. first, download this and install it.
http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html
2. if your framework.jar is odex, you will need to deodex it, download this
http://www.droidforums.net/forum/xeudoxus/47283-release-xultimate.html
3. you will need root explorer to extract your framework.jar
4. you will need this, smali/baksmali tool, download it here
http://forum.xda-developers.com/showthread.php?t=1582468
5. you need 7z, just google it and get it.
Now let's get started.
-Increase volume steps
1. Extract all the files of the smali/baksmali tool into one folder and put your framework.jar into that folder
2. Left click on 1.bat and edit it to this
java -jar baksmali.jar -x framework.jar -o classout
3. run 1.bat and wait... ones you have decompile the framework.jar, go to classout\android\media\AudioService.smali
4. open it with notepad, Ctrl plus F and type max_, click next 2 times
5. after that, dele away max_ and type array_1f6, click next 1 times
6. you will see this
:array_1f6
.array-data 0x4
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1ft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1ft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
.end array-data
7. Edit it to this.
:array_1f6
.array-data 0x4
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
.end array-data
8. save it! And you're done!
-smoother scrolling
1. go to classout\android\widget\AbsListView.smali
2. open it with notepad
3. Ctrl plus F and type ScrollingCache, click next 10 times
4. you should see this
.method private createScrollingCache()V
.registers 3
.prologue
const/4 v1, 0x1
5. edit it to this
.method private createScrollingCache()V
.registers 3
.prologue
const/4 v1, 0x0
6. Next Seach private initAbsListView and click next 1 time
7. you should see this
method private initAbsListView()V
.registers 4
.prologue
const/4 v2, 0x0
const/4 v1, 0x1
.line 786
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setClickable(Z)V
.line 787
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setFocusableInTouchMode(Z)V
.line 788
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setWillNotDraw(Z)V
.line 789
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setAlwaysDrawnWithCacheEnabled(Z)V
.line 790
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V
8. edit it to this
method private initAbsListView()V
.registers 4
.prologue
const/4 v2, 0x0
const/4 v1, 0x1
.line 786
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setClickable(Z)V
.line 787
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setFocusableInTouchMode(Z)V
.line 788
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setWillNotDraw(Z)V
.line 789
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setAlwaysDrawnWithCacheEnabled(Z)V
.line 790
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V
9. Ctrl plus F again and type setScrollingCacheEnabled, click next 1 times
10. you should see this
.method public setScrollingCacheEnabled(Z)V
.registers 3
.parameter "enabled"
11. edit it to this
.method public setScrollingCacheEnabled(Z)V
.registers 3
.parameter "disabled"
12. save it! And you're done!
-compile
1. open up Command Prompt.bat
2. type 2 and wait, ones it's done, you should have classes.dex in your folder.
3. open your framework.jar using 7z, and drag the newly created classes.dex into your framework.jar.
4. Copy your framework.jar onto your SD Card and put it back into your system\framework.
5. set permission to rw-r--r, overwrite it and reboot.
6. ENJOY YOUR DONE!
Give me a thanks if i had help you
thanks to the Original which was from (AndroidON) but i had gone through it and make it more simple for xperia arc ics user.
http://forum.xda-developers.com/showthread.php?t=1411317
Gonna try this one out
Edit:
After trying your guide in the modding:
- classes.dex compiled successfully
- phone boots up normally
- basic apps runs normally (phone, messaging, settings, etc)
- and BAM, smooth croll like GB.
I'm running Arconium ICS 4.0 by doomed151, ArcKnight Kernel V3.5.1 (OC Version), v6 supercharged.
My phone's scrolling is already smooth without your mod (because of the ROM and the kernel), but I noticed a very small lag when scrolling (maybe about 0.1 sec ), negligible for most of users though. But not for me as I am a gamer too (FPS sensitive guy).
I wonder why doomed not include this mod in his ROM.
Btw I compile the classes.dex in Windows x64 PC.
Gonna report to you soon, should anything going wrong.
Thanks for the mod!
Do not delete your framework.odex if you have one in your system/framework, just replace the framework.jar only.
Sent From My Sony Xperia Arc S
after apply smoother scrolling mod to my framework.jar, the phone can boot normal, however, seems all apps are not work properly, my apex launcher can not be loaded and keep showing me the gmail / google search / etc apps are stopped unexpectly...do you have any idea about this...
It should not be happening, the scrolling should be better as the logging is disable. Try restoring back up if the problem isn't solve.
Sent From My Sony Xperia Arc S
Tried it on my arconium..
It is smoother.... but much less noticeble.....
Thanx anyway.......
doesn't work
when i tried to run this script i get this message ".sh[30] : grep: not found
please run this script with SManager as Root"
my 5x4 app tray only allow 4x4. when i try to drag another icon down to the 5th row, it doesn't work.
What script? I didnt upload any script here.
Sent From My Sony Xperia Arc S
When I tried on my XV, WORKS COMPLETELY !! THANKS FOR THIS TUTORIAL !!!
SammiSaysHello said:
when i tried to run this script i get this message ".sh[30] : grep: not found
please run this script with SManager as Root"
my 5x4 app tray only allow 4x4. when i try to drag another icon down to the 5th row, it doesn't work.
Click to expand...
Click to collapse
Wrong thread bro
sony xperia ray
ics 4.0.4 rooted
stock rom
decompile ok, editing files ok, but everytime i try to compile classes.dex or framework.jar it gives me the same error. not only on this one, i used 4-5 tools to compile framework.jar after editing(including apktool), it gave me no good at all. at the end of every line it says "No enum constant org.jf.dexlib.AnnotationVisibility.RUNTIME"
I have latest version of jdk, windows 8 x64.
matgras said:
Wrong thread bro
sony xperia ray
ics 4.0.4 rooted
stock rom
Click to expand...
Click to collapse
Yeah I realised that in September last year .... xD
SammiSaysHello said:
Yeah I realised that in September last year .... xD
Click to expand...
Click to collapse
Haha, now i see it, i should watch dates more closely.
sony xperia ray
ics 4.0.4 rooted
stock rom
federico rotundi said:
decompile ok, editing files ok, but everytime i try to compile classes.dex or framework.jar it gives me the same error. not only on this one, i used 4-5 tools to compile framework.jar after editing(including apktool), it gave me no good at all. at the end of every line it says "No enum constant org.jf.dexlib.AnnotationVisibility.RUNTIME"
I have latest version of jdk, windows 8 x64.
Click to expand...
Click to collapse
window 8 has a lot of issue I can't really solve myself, try to use another computer with window 7 or below to do it, meanwhile I try to check out the problem for you.
solved it.
simplyjustkids said:
This is my first contribution here
(NOTE,Tested on my stock ICS 4.0.3, I'm not sure if GB or other rom may work.)
At your own risk that your phone may blow up!, just kidding
This will teach you how to enable 30 step volume and a smoother scrolling
1. first, download this and install it.
http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html
2. if your framework.jar is odex, you will need to deodex it, download this
http://www.droidforums.net/forum/xeudoxus/47283-release-xultimate.html
3. you will need root explorer to extract your framework.jar
4. you will need this, smali/baksmali tool, download it here
http://forum.xda-developers.com/showthread.php?t=1582468
5. you need 7z, just google it and get it.
Now let's get started.
-Increase volume steps
1. Extract all the files of the smali/baksmali tool into one folder and put your framework.jar into that folder
2. Left click on 1.bat and edit it to this
java -jar baksmali.jar -x framework.jar -o classout
3. run 1.bat and wait... ones you have decompile the framework.jar, go to classout\android\media\AudioService.smali
4. open it with notepad, Ctrl plus F and type max_, click next 2 times
5. after that, dele away max_ and type array_1f6, click next 1 times
6. you will see this
:array_1f6
.array-data 0x4
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1ft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1ft 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
.end array-data
7. Edit it to this.
:array_1f6
.array-data 0x4
0x5t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0x1et 0x0t 0x0t 0x0t
0x7t 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
0xft 0x0t 0x0t 0x0t
.end array-data
8. save it! And you're done!
-smoother scrolling
1. go to classout\android\widget\AbsListView.smali
2. open it with notepad
3. Ctrl plus F and type ScrollingCache, click next 10 times
4. you should see this
.method private createScrollingCache()V
.registers 3
.prologue
const/4 v1, 0x1
5. edit it to this
.method private createScrollingCache()V
.registers 3
.prologue
const/4 v1, 0x0
6. Next Seach private initAbsListView and click next 1 time
7. you should see this
method private initAbsListView()V
.registers 4
.prologue
const/4 v2, 0x0
const/4 v1, 0x1
.line 786
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setClickable(Z)V
.line 787
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setFocusableInTouchMode(Z)V
.line 788
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setWillNotDraw(Z)V
.line 789
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setAlwaysDrawnWithCacheEnabled(Z)V
.line 790
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V
8. edit it to this
method private initAbsListView()V
.registers 4
.prologue
const/4 v2, 0x0
const/4 v1, 0x1
.line 786
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setClickable(Z)V
.line 787
invoke-virtual {p0, v1}, Landroid/widget/AbsListView;->setFocusableInTouchMode(Z)V
.line 788
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setWillNotDraw(Z)V
.line 789
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setAlwaysDrawnWithCacheEnabled(Z)V
.line 790
invoke-virtual {p0, v2}, Landroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V
9. Ctrl plus F again and type setScrollingCacheEnabled, click next 1 times
10. you should see this
.method public setScrollingCacheEnabled(Z)V
.registers 3
.parameter "enabled"
11. edit it to this
.method public setScrollingCacheEnabled(Z)V
.registers 3
.parameter "disabled"
12. save it! And you're done!
-compile
1. open up Command Prompt.bat
2. type 2 and wait, ones it's done, you should have classes.dex in your folder.
3. open your framework.jar using 7z, and drag the newly created classes.dex into your framework.jar.
4. Copy your framework.jar onto your SD Card and put it back into your system\framework.
5. set permission to rw-r--r, overwrite it and reboot.
6. ENJOY YOUR DONE!
Give me a thanks if i had help you
thanks to the Original which was from (AndroidON) but i had gone through it and make it more simple for xperia arc ics user.
http://forum.xda-developers.com/showthread.php?t=1411317
Click to expand...
Click to collapse
what is working in CM 10.1 ??
Hi,
This is my first MOD
Latest update 13/12/2012
Based on Latest Official Note 2 JB 4.1.2 DLK7 firmware.
Some new options in HDR
Notes:
Please test it and let me know if it works well and in which ROMs, I have nowhere to test it myself
It's only for Samsung Stock / Custom ROMs
Make backup of your SamsungCamera.apk and SamsungCamera.odex if exists first (the script should do it automatically).
To make it run on ODEXED ROMs, backup and remove the SamsungCamera.odex file from system/app (the script should do it automatically).
Using power button as a shutter will show the power menu as well, but it will take a picture / start recording, just wait until it vibrates
No burst shot when using power key
Download CWM recovery file and install:
http://www.jobnik.net/files/apk/note2/jobnik_Camera_Note2_JB_MOD_v8_cwm.zip
Or
Download SamsungCamera.apk and push it to system/app, then change permissions to 644 and reboot.
http://www.jobnik.net/files/apk/note2/SamsungCamera.apk
I've noticed (in Galaxy S3) that Slow / Fast motion has problems recording with the modded and increased Video Bitrate, so here's a CWM file with default media profile:
http://www.jobnik.org/files/apk/note2/jobnik_Camera_Note2_JB_MOD_v8_default_media_cwm.zip
For those who want to restore to original version, that comes with ROM:
http://www.jobnik.net/files/apk/note2/restore_Camera_Note2_cwm.zip
If you're having an issue with HDR and it FCs in Odex ROM, then try this: http://forum.xda-developers.com/showpost.php?p=36874630&postcount=79
If you have FC when GPS Tag is enabled and Use Wireless networks is enabled in Location and Services, then please download Note 2 package from Galaxy S3 thread as it has latest library files and framework from Note 2 JB 4.1.2 DLK7
http://forum.xda-developers.com/showthread.php?t=1883192
Click to expand...
Click to collapse
I've also modified Camera app for Galaxy S2, Galaxy S3 and Galaxy Note:
Galaxy S2 mod: http://forum.xda-developers.com/showthread.php?t=1841988
Galaxy S3 mod: http://forum.xda-developers.com/showthread.php?t=1883192
Galaxy Note mod: http://forum.xda-developers.com/showthread.php?t=1863362
What's inside?:
Camera "Unable to start while in a call" Alert Disabled
Camera "Low Battery" Alert Disabled
Camera "Can't use flash on low battery" Alert Disabled
Camera Add Power button as a shutter to built in Volume keys
Camera Enable "Shutter Sound On/Off" permanently
Camcorder "Unable to record while in a call" Alert Disabled
Camcorder "Can't use flash on low battery" Alert Disabled
Camcorder "Low Battery" Alert Disabled
Camcorder Add Power button as a shutter to built in Volume keys
Camcorder Better audio quality/video bitrate
Video Quality:
1080p: Normal - 17MBit / Fine - 24MBit / Superfine - 30MBit
720p: Normal - 9MBit / Fine - 13MBit / Superfine - 17MBit
Sound Quality:
192 kbit/s
48000 KHz
Changes I've made in smali files are:
Code:
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\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 v2
const-string v3, "CscFeature_Camera_EnableCameraDuringCall"
invoke-virtual {p0}, Lcom/sec/android/app/camera/AbstractCameraActivity;->enableDuringCallDefaultValue()Z
move-result v4
invoke-virtual {v2, v3, v4}, Lcom/sec/android/app/CscFeature;->getEnableStatus(Ljava/lang/String;Z)Z
move-result v2
if-eqz v2, :cond_3d
* 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 1968
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 5872
return-void
const-string v1, "Camera"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method
4. Camera Add Power button as a shutter to built in Volume keys
------------------------------------------------------------
* FILE:
com\sec\android\app\camera\Camera.smali
* METHOD:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
* ADDED new lines:
if-eq p1, v5, :cond_17
const/16 v5, 0x1a
* WHERE?:
.line 1708
.local v2, fakeKeyCode:I
const/16 v5, 0x18
if-eq p1, v5, :cond_17
const/16 v5, 0x19
if-eq p1, v5, :cond_17
const/16 v5, 0x1a
if-ne p1, v5, :cond_56
* EXPLANATION:
This will add new "if" condition for power key along with volume keys, i.e:
if ((paramInt == 24) || (paramInt == 25) || (paramInt == 26))
0x18 is volume key Up, 0x19 is volume key Down, 0x1a is power key
----------
* ADDED new lines:
const/16 v5, 0x1a
if-eq p1, v5, :cond_332
* WHERE?:
.line 1974
:cond_2f1
const/16 v5, 0x1a
if-ne p1, v5, :cond_332
invoke-virtual {p0}, Lcom/sec/android/app/camera/Camera;->isZoomAvailable()Z
* EXPLANATION:
This will add new "if" condition to check if power key was pressed.
That way we'll prevent from Zoom Slider to appear, by skipping it, because we are "riding" on Volume key conditions :)
----------
* MODIFIED switch case:
:sswitch_data_33c
.sparse-switch
0x4 -> :sswitch_a6
0x17 -> :sswitch_128
0x18 -> :sswitch_2d4
0x19 -> :sswitch_2d4
0x1a -> :sswitch_2d4
0x1b -> :sswitch_128
0x42 -> :sswitch_128
0x45 -> :sswitch_2d4
0x46 -> :sswitch_2d4
0x50 -> :sswitch_aa
0x52 -> :sswitch_a4
0x55 -> :sswitch_a8
0x59 -> :sswitch_a8
0x5a -> :sswitch_a8
0x9c -> :sswitch_2d4
0x9d -> :sswitch_2d4
.end sparse-switch
* EXPLANATION:
0x1a is a power key.
We are telling this switch case to link to "sswitch_2d4" and act the same as volume keys (but not the same ;))
----------
* METHOD:
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* ADDED new lines:
if-eq p1, v3, :cond_13
const/16 v3, 0x1a
* WHERE?:
.line 2011
.local v2, volumeKey:Z
const/16 v3, 0x18
if-eq p1, v3, :cond_13
const/16 v3, 0x19
if-eq p1, v3, :cond_13
const/16 v3, 0x1a
if-ne p1, v3, :cond_3d
* EXPLANATION:
This will add new "if" condition for power key along with volume keys, i.e:
if ((paramInt == 24) || (paramInt == 25) || (paramInt == 26))
0x18 is volume key Up, 0x19 is volume key Down, 0x1a is power key
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_9a
* 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.
-----------
Camcorder
-----------
6. 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 4434
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).
7. 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 4271
return-void
const-string v1, "Camcorder"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method
8. 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 3214
return-void
const-string v0, "Camcorder"
* EXPLANATION:
We are telling this method to return, exit, as it's just a "void" method
9. Camcorder Add Power button as a shutter to built in Volume keys
---------------------------------------------------------------
* FILE:
com\sec\android\app\camera\Camcorder.smali
* METHOD:
.method public onKeyDown(ILandroid/view/KeyEvent;)Z
* ADDED new lines:
if-eq p1, v4, :cond_14
const/16 v4, 0x1a
* WHERE?:
.line 1462
.local v2, fakeKeyCode:I
const/16 v4, 0x18
if-eq p1, v4, :cond_14
const/16 v4, 0x19
if-eq p1, v4, :cond_14
const/16 v4, 0x1a
if-ne p1, v4, :cond_4c
* EXPLANATION:
This will add new if condition for power key along with volume keys, i.e:
if ((paramInt == 24) || (paramInt == 25) || (paramInt == 26))
0x18 is volume key Up, 0x19 is volume key Down, 0x1a is power key
----------
* ADDED new lines:
const/16 v4, 0x1a
if-eq p1, v4, :cond_10a
* WHERE?:
.line 1541
:cond_b2
const/16 v4, 0x1a
if-eq p1, v4, :cond_10a
invoke-virtual {p0, v5}, Lcom/sec/android/app/camera/Camcorder;->isZoomAvailable(Z)Z
* EXPLANATION:
This will add new "if" condition to check if power key was pressed.
That way we'll prevent from Zoom Slider to appear, by skipping it, because we are "riding" on Volume key conditions :)
----------
* MODIFIED switch case:
:sswitch_data_144
.sparse-switch
0x4 -> :sswitch_8d
0x18 -> :sswitch_91
0x19 -> :sswitch_91
0x1a -> :sswitch_91
0x45 -> :sswitch_91
0x46 -> :sswitch_91
0x4f -> :sswitch_8f
0x50 -> :sswitch_11c
0x52 -> :sswitch_8b
0x55 -> :sswitch_8f
0x7e -> :sswitch_8f
0x7f -> :sswitch_8f
0x9c -> :sswitch_91
0x9d -> :sswitch_91
.end sparse-switch
* EXPLANATION:
0x1a is a power key.
We are telling this switch case to link to "sswitch_91" and act the same as volume keys (but not the same ;))
----------
* METHOD:
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
* ADDED new lines:
if-eq p1, v4, :cond_13
const/16 v4, 0x1a
* WHERE?:
.line 1642
.local v3, volumeKey:Z
const/16 v4, 0x18
if-eq p1, v4, :cond_13
const/16 v4, 0x19
if-eq p1, v4, :cond_13
const/16 v4, 0x1a
if-ne p1, v4, :cond_3d
* EXPLANATION:
This will add new "if" condition for power key along with volume keys, i.e:
if ((paramInt == 24) || (paramInt == 25) || (paramInt == 26))
0x18 is volume key Up, 0x19 is volume key Down, 0x1a is power key
----------
* ADDED to switch case:
:sswitch_data_1aa
.sparse-switch
0x4 -> :sswitch_120
0x17 -> :sswitch_a6
0x18 -> :sswitch_169
0x19 -> :sswitch_169
0x1a -> :sswitch_169
0x1b -> :sswitch_a6
0x42 -> :sswitch_a6
0x50 -> :sswitch_16c
0x52 -> :sswitch_8b
.end sparse-switch
* EXPLANATION:
0x1a is a power key.
We are telling this switch case to link to "sswitch_169" and act the same as volume keys (but not the same ;))
10. Camcorder Better audio quality/video bitrate
--------------------------------------------
FILE:
com\sec\android\app\camera\MediaRecorderProfile.smali
INFO FROM:
http://forum.xda-developers.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:
.line 66
:array_12e
.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_146
.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_15e
.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_176
.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
:array_18e
.array-data 0x4
0x2t 0x0t 0x0t 0x0t
0x18t 0xb4t 0xbt 0x0t
0xe8t 0xc7t 0x9t 0x0t
0x70t 0xe7t 0x7t 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xf4t 0x1t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t
.end array-data
:array_1a6
.array-data 0x4
0x2t 0x0t 0x0t 0x0t
0x0t 0xdct 0x5t 0x0t
0x0t 0xe2t 0x4t 0x0t
0x0t 0xe8t 0x3t 0x0t
0x1et 0x0t 0x0t 0x0t
0x2t 0x0t 0x0t 0x0t
0x3t 0x0t 0x0t 0x0t
0x0t 0xf4t 0x1t 0x0t
0x2t 0x0t 0x0t 0x0t
0x80t 0xbbt 0x0t 0x0t
.end array-data
:array_1be
.array-data 0x4
0x1t 0x0t 0x0t 0x0t
0x64t 0x77t 0x1t 0x0t
0x64t 0x77t 0x1t 0x0t
0x64t 0x77t 0x1t 0x0t
0xft 0x0t 0x0t 0x0t
0x1t 0x0t 0x0t 0x0t
0x1t 0x0t 0x0t 0x0t
0xa8t 0x2ft 0x0t 0x0t
0x1t 0x0t 0x0t 0x0t
0x40t 0x1ft 0x0t 0x0t
.end array-data
Credits:
zxz0O0 - Camcorder Better audio quality/video bitrate
xavierjohn22 - AutoAPKTool2.0.4a
Tungstwenty - Backup/Restore CWM script
*** Don't forget to give me Credit and link to this XDA thread if you're using my modifications or SamsungCamera.apk in your ROM ***
* You're using this mod on your own risk. I'm not responsible for any damage of use or misuse of this fixed application SamsungCamera.apk
Liked it? Please make a donation
* Don't want to donate? Then at least hit Thanks button!
Thank you!
Have fun!
I use voice commands for take pictures, but thanks for the mod.
Tapatalkteando desde mi móvil.
Will you include the new things from the 4.1.2 camera and try to implement it into Samsung's camera? I'm just asking by the way
Sent from my GT-N7100 using xda premium
not working with
hypernote
and
omega
Working on stock odexed alj3. Thx
Can you also fix low dpi problem? Here is camera, which fix this problem on LCDdestiny < 300.
damn video quality is better now, reached 28mb/s with superfine while had 24 mb/s
"damn video quality is better now, reached 28mb/s with superfine while had 24 mb/s"
which rom did u use it on ?
i tried hyper, omega and wanam without any succes
mnaveed said:
"damn video quality is better now, reached 28mb/s with superfine while had 24 mb/s"
which rom did u use it on ?
i tried hyper, omega and wanam without any succes
Click to expand...
Click to collapse
Stock odexed alj3
Nice work. Although I sure hope someone will edit the Note II camera (for S3) to work with 240dpi Layout is messed up now (just as with stock camera)...
i am on stock lj3 and power shutter is not working for me
With stock, rename the odex file to anything but the original name, delete Samsung camera.apk and copy the one from op with correct permissions to your system app folder. Flashing the zip did not work for me either on stock LJ 3
lolmensch said:
With stock, rename the odex file to anything but the original name, delete Samsung camera.apk and copy the one from op with correct permissions to your system app folder. Flashing the zip did not work for me either on stock LJ 3
Click to expand...
Click to collapse
best way is to do it manually without flashing package. Unzip, make backup of old camera apk and odex, delete them, move the new one,give permissions, reboot.... and then you can make better quality porn video
Thanks for the mod, i'm using it because I have the Navigation Bar enabled which hides the camera shutter button. Is it possible to edit the camera apk so it is not obscured by the navigation bar? SO make the app display smaller on the screen?
I think I installed it correctly since I can see the option for 1080 recording in video, now how do I set the shutter button? Clicking the volume keys just zooms in or out and the power button turns off screen.
does it also offer better quality pics? im seriously disappointed with the stock camera's noise and blurry pics. 3rd party camera's do a better job but i would any-day like to use the stock cam hence im asking
HTCfreak! said:
does it also offer better quality pics? im seriously disappointed with the stock camera's noise and blurry pics. 3rd party camera's do a better job but i would any-day like to use the stock cam hence im asking
Click to expand...
Click to collapse
+1
Tested and Confirmed to work on my LJ4 N7105.
You have to do the .apk copying manually for it to work, the zip through CWM does NOT work for me too.
Backup the SamsungCamera.apk & the odex file. Delete .odex and the apk. Copy the new SamsungCamera.apk from the .zip file. Lastly, set the permission to 644 and remember to REBOOT!
Thanks a million!
Thanks for the great mod! Can u please get the burst mode to work with the volume buttons? I hope it is possible
Hi,
mine is LJ4 N7105 custom rom, can i also make this mod?
Thx
---------- Post added at 01:50 PM ---------- Previous post was at 01:44 PM ----------
one question, can you tell me how to manually put the apk into system/app?
Thx
I added some new strings and had the public ids created but when I add them to my array I get the following
mismatched input '1x2t' expecting END_ARRAY_DATA_DIRECTIVE
this is the array in question:
:array_0
.array-data 0x4
0x87t 0xft 0x9t 0x7ft
0x88t 0xft 0x9t 0x7ft
0x86t 0xft 0x9t 0x7ft
0x8at 0xft 0x9t 0x7ft
0x8bt 0xft 0x9t 0x7ft
0x8ct 0xft 0x9t 0x7ft
0x8et 0xft 0x9t 0x7ft
0x85t 0xft 0x9t 0x7ft
0xb0t 1x2t 0x9t 0x7ft **this is where I have the issue because the public id created doesn't match**
0x8dt 0xft 0x9t 0x7ft
0x89t 0xft 0x9t 0x7ft
0xb1t 1x2t 0x9t 0x7ft
0xb2t 1x2t 0x9t 0x7ft
0xb3t 1x2t 0x9t 0x7ft
0xb4t 1x2t 0x9t 0x7ft
0xb5t 1x2t 0x9t 0x7ft
0xb6t 1x2t 0x9t 0x7ft
0xb7t 1x2t 0x9t 0x7ft
.end array-data
any suggestions...