diff options
Diffstat (limited to 'app/src/main/java/org/eu/zajc/xheadset/XHeadsetModule.java')
-rw-r--r-- | app/src/main/java/org/eu/zajc/xheadset/XHeadsetModule.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/app/src/main/java/org/eu/zajc/xheadset/XHeadsetModule.java b/app/src/main/java/org/eu/zajc/xheadset/XHeadsetModule.java new file mode 100644 index 0000000..4889aa7 --- /dev/null +++ b/app/src/main/java/org/eu/zajc/xheadset/XHeadsetModule.java | |||
@@ -0,0 +1,41 @@ | |||
1 | package org.eu.zajc.xheadset; | ||
2 | |||
3 | import android.util.*; | ||
4 | import android.app.*; | ||
5 | import android.widget.*; | ||
6 | |||
7 | import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; | ||
8 | import de.robv.android.xposed.*; | ||
9 | import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; | ||
10 | |||
11 | public class XHeadsetModule implements IXposedHookLoadPackage { | ||
12 | |||
13 | @Override | ||
14 | public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { | ||
15 | final XHeadsetStateCommunicator comm = new XHeadsetStateCommunicator(); | ||
16 | if (lpparam.packageName.equals("android")) { | ||
17 | findAndHookMethod("com.android.server.WiredAccessoryManager", lpparam.classLoader, "updateLocked", String.class, int.class, new XC_MethodHook() { | ||
18 | @Override | ||
19 | protected void beforeHookedMethod(MethodHookParam param) throws Throwable { | ||
20 | comm.bind(AndroidAppHelper.currentApplication()); | ||
21 | if (comm.isEnabled()) { | ||
22 | Log.e("XHeadset", "Spoofing headphone state"); | ||
23 | param.args[1] = (int) (1 << 1); | ||
24 | } else { | ||
25 | Log.e("XHeadset", "Not spoofing headphone state"); | ||
26 | } | ||
27 | } | ||
28 | }); | ||
29 | } else if (lpparam.packageName.equals("com.android.systemui")) { | ||
30 | findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() { | ||
31 | @Override | ||
32 | protected void afterHookedMethod(MethodHookParam param) throws Throwable { | ||
33 | TextView tv = (TextView) param.thisObject; | ||
34 | String text = tv.getText().toString(); | ||
35 | tv.setText(text + " :)"); | ||
36 | } | ||
37 | }); | ||
38 | } | ||
39 | } | ||
40 | |||
41 | } | ||