diff --git a/XposedLibrary/XposedBridgeApi.jar b/XposedLibrary/XposedBridgeApi.jar index f5dc54b..43862da 100644 Binary files a/XposedLibrary/XposedBridgeApi.jar and b/XposedLibrary/XposedBridgeApi.jar differ diff --git a/XposedLibrary/lib/full_framework_15.jar b/XposedLibrary/lib/full_framework_15.jar new file mode 100644 index 0000000..36129b6 Binary files /dev/null and b/XposedLibrary/lib/full_framework_15.jar differ diff --git a/XposedLibrary/src/de/robv/android/xposed/library/ui/SeparatorPreference.java b/XposedLibrary/src/de/robv/android/xposed/library/ui/SeparatorPreference.java new file mode 100644 index 0000000..97cf0d3 --- /dev/null +++ b/XposedLibrary/src/de/robv/android/xposed/library/ui/SeparatorPreference.java @@ -0,0 +1,36 @@ +package de.robv.android.xposed.library.ui; + +import android.content.Context; +import android.graphics.Color; +import android.preference.Preference; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.widget.AbsListView; +import android.widget.ImageView; + +public class SeparatorPreference extends Preference { + int color = Color.GRAY; + int height = 7; + + public SeparatorPreference(Context context) { + super(context); + setSelectable(false); + } + + public void setColor(int color) { + this.color = color; + } + + public void setHeight(int height) { + this.height = height; + } + + @Override + protected View onCreateView(ViewGroup parent) { + ImageView iview = new ImageView(getContext()); + iview.setBackgroundColor(color); + iview.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, height)); + return iview; + } +} \ No newline at end of file diff --git a/XposedLibrary/src/de/robv/android/xposed/library/ui/TextViewPreference.java b/XposedLibrary/src/de/robv/android/xposed/library/ui/TextViewPreference.java new file mode 100644 index 0000000..f29fcbe --- /dev/null +++ b/XposedLibrary/src/de/robv/android/xposed/library/ui/TextViewPreference.java @@ -0,0 +1,29 @@ +package de.robv.android.xposed.library.ui; + +import android.content.Context; +import android.preference.Preference; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class TextViewPreference extends Preference { + private TextView textView = null; + + public TextViewPreference(Context context) { + super(context); + } + + @Override + protected View onCreateView(ViewGroup parent) { + return getTextView(); + } + + public TextView getTextView() { + if (textView == null) { + textView = new TextView(getContext()); + textView.setId(android.R.id.title); + textView.setPadding(5,5,5,5); + } + return textView; + } +} diff --git a/XposedTweakbox/.classpath b/XposedTweakbox/.classpath index 8564b5c..e993954 100644 --- a/XposedTweakbox/.classpath +++ b/XposedTweakbox/.classpath @@ -5,5 +5,6 @@ + diff --git a/XposedTweakbox/assets/crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff b/XposedTweakbox/assets/crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff deleted file mode 100644 index 2d9cbfc..0000000 Binary files a/XposedTweakbox/assets/crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff and /dev/null differ diff --git a/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock new file mode 100644 index 0000000..54b2f06 Binary files /dev/null and b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock differ diff --git a/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock_LS b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock_LS new file mode 100644 index 0000000..d4ae70a Binary files /dev/null and b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock_LS differ diff --git a/XposedTweakbox/assets/nativelibs.xml b/XposedTweakbox/assets/nativelibs.xml new file mode 100644 index 0000000..54fd9de --- /dev/null +++ b/XposedTweakbox/assets/nativelibs.xml @@ -0,0 +1,13 @@ + + + + CRT off/on fix for stock-based I9100 ROMs + + + CRT off/on fix for stock-based I9100 ROMs (including support for landscape) + + \ No newline at end of file diff --git a/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java b/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java index 261057a..4ea5583 100644 --- a/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java +++ b/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java @@ -1,8 +1,6 @@ package de.robv.android.xposed.mods.tweakbox; -import static de.robv.android.xposed.XposedHelpers.assetAsByteArray; import static de.robv.android.xposed.XposedHelpers.getIntField; -import static de.robv.android.xposed.XposedHelpers.getMD5Sum; import static de.robv.android.xposed.XposedHelpers.getSurroundingThis; import static de.robv.android.xposed.XposedHelpers.setFloatField; import static de.robv.android.xposed.XposedHelpers.setIntField; @@ -16,11 +14,11 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; -import android.content.res.XModuleResources; import android.content.res.XResources; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.drawable.ColorDrawable; +import android.os.SystemProperties; import android.telephony.SignalStrength; import android.util.DisplayMetrics; import android.view.Display; @@ -49,7 +47,6 @@ public class XposedTweakbox implements IXposedHookZygoteInit, IXposedHookInitPac @Override public void initZygote() { pref = AndroidAppHelper.getDefaultSharedPreferencesForPackage(MY_PACKAGE_NAME); - Resources tweakboxRes = XModuleResources.createInstance(MODULE_PATH, null); try { // this is not really necessary if no effects are wanted, but it speeds up turning off the screen @@ -68,20 +65,6 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable { } } }); - - if (pref.getBoolean("crt_off_effect", false) || pref.getBoolean("crt_on_effect", false)) { - // apply CRT off fix by Tungstwenty plus CRT on effect - String libsurfaceflingerMD5 = getMD5Sum("/system/lib/libsurfaceflinger.so"); - if (libsurfaceflingerMD5.equals("d506192d5049a4042fb84c0265edfe42")) { - byte[] crtPatch = assetAsByteArray(tweakboxRes, "crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff"); - if (!XposedBridge.patchNativeLibrary("/system/lib/libsurfaceflinger.so", crtPatch, "/system/bin/surfaceflinger")) - XposedBridge.log("CRT patch could not be applied"); - } else if (libsurfaceflingerMD5.equals("3262c644b7b7079958db82bd992f2a46")) { - XposedBridge.log("CRT patch not necessary, library is already patched"); - } else { - XposedBridge.log("CRT patch could not be applied because libsurfaceflinger.so has unknown MD5 sum " + libsurfaceflingerMD5); - } - } } catch (Exception e) { XposedBridge.log(e); } try { @@ -288,6 +271,19 @@ protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { } }); } catch (Exception e) { XposedBridge.log(e); } + } else if (lpparam.packageName.equals("android")) { + if (pref.getBoolean("crt_off_effect", false) || pref.getBoolean("crt_on_effect", false)) { + try { + Class classMOL = Class.forName("com.android.internal.policy.impl.PhoneWindowManager$MyOrientationListener", false, lpparam.classLoader); + XposedBridge.hookMethod(classMOL.getDeclaredMethod("onProposedRotationChanged", int.class), new XC_MethodHook() { + @Override + protected void beforeHookedMethod(MethodHookParam param) throws Throwable { + int rotation = (Integer) param.args[0]; + SystemProperties.set("hw.crt.landscape", String.valueOf(rotation % 2)); + } + }); + } catch (Throwable t) { XposedBridge.log(t); } + } } }