@yume-chan/android-bin 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +21 -0
- package/CHANGELOG.md +14 -1
- package/esm/bu.d.ts +14 -14
- package/esm/bu.js +13 -13
- package/esm/bug-report.d.ts +37 -37
- package/esm/bug-report.d.ts.map +1 -1
- package/esm/bug-report.js +136 -135
- package/esm/bug-report.js.map +1 -1
- package/esm/cmd.d.ts +15 -0
- package/esm/cmd.d.ts.map +1 -0
- package/esm/cmd.js +54 -0
- package/esm/cmd.js.map +1 -0
- package/esm/demo-mode.d.ts +43 -42
- package/esm/demo-mode.d.ts.map +1 -1
- package/esm/demo-mode.js +179 -178
- package/esm/demo-mode.js.map +1 -1
- package/esm/dumpsys.d.ts +4 -0
- package/esm/dumpsys.d.ts.map +1 -0
- package/esm/dumpsys.js +4 -0
- package/esm/dumpsys.js.map +1 -0
- package/esm/index.d.ts +6 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -5
- package/esm/index.js.map +1 -1
- package/esm/logcat.d.ts +91 -89
- package/esm/logcat.d.ts.map +1 -1
- package/esm/logcat.js +296 -200
- package/esm/logcat.js.map +1 -1
- package/esm/overlay-display.d.ts +21 -0
- package/esm/overlay-display.d.ts.map +1 -0
- package/esm/overlay-display.js +78 -0
- package/esm/overlay-display.js.map +1 -0
- package/esm/pm.d.ts +139 -0
- package/esm/pm.d.ts.map +1 -0
- package/esm/pm.js +125 -0
- package/esm/pm.js.map +1 -0
- package/esm/settings.d.ts +12 -12
- package/esm/settings.d.ts.map +1 -1
- package/esm/settings.js +40 -24
- package/esm/settings.js.map +1 -1
- package/package.json +11 -10
- package/src/bug-report.ts +3 -3
- package/src/cmd.ts +67 -0
- package/src/demo-mode.ts +4 -3
- package/src/index.ts +6 -4
- package/src/logcat.ts +224 -25
- package/src/overlay-display.ts +115 -0
- package/src/pm.ts +281 -0
- package/src/settings.ts +54 -26
- package/tsconfig.build.json +11 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/esm/demo-mode.d.ts
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
static readonly
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
1
|
+
import type { Adb } from "@yume-chan/adb";
|
|
2
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
3
|
+
export declare enum DemoModeSignalStrength {
|
|
4
|
+
Hidden = "null",
|
|
5
|
+
Level0 = "0",
|
|
6
|
+
Level1 = "1",
|
|
7
|
+
Level2 = "2",
|
|
8
|
+
Level3 = "3",
|
|
9
|
+
Level4 = "4"
|
|
10
|
+
}
|
|
11
|
+
export declare const DemoModeMobileDataTypes: readonly ["1x", "3g", "4g", "4g+", "5g", "5ge", "5g+", "e", "g", "h", "h+", "lte", "lte+", "dis", "not", "null"];
|
|
12
|
+
export type DemoModeMobileDataType = (typeof DemoModeMobileDataTypes)[number];
|
|
13
|
+
export declare const DemoModeStatusBarModes: readonly ["opaque", "translucent", "semi-transparent", "transparent", "warning"];
|
|
14
|
+
export type DemoModeStatusBarMode = (typeof DemoModeStatusBarModes)[number];
|
|
15
|
+
export declare class DemoMode extends AdbCommandBase {
|
|
16
|
+
private settings;
|
|
17
|
+
constructor(adb: Adb);
|
|
18
|
+
static readonly AllowedSettingKey = "sysui_demo_allowed";
|
|
19
|
+
static readonly EnabledSettingKey = "sysui_tuner_demo_on";
|
|
20
|
+
getAllowed(): Promise<boolean>;
|
|
21
|
+
setAllowed(value: boolean): Promise<void>;
|
|
22
|
+
getEnabled(): Promise<boolean>;
|
|
23
|
+
setEnabled(value: boolean): Promise<void>;
|
|
24
|
+
broadcast(command: string, extra?: Record<string, string>): Promise<void>;
|
|
25
|
+
setBatteryLevel(level: number): Promise<void>;
|
|
26
|
+
setBatteryCharging(value: boolean): Promise<void>;
|
|
27
|
+
setPowerSaveMode(value: boolean): Promise<void>;
|
|
28
|
+
setAirplaneMode(show: boolean): Promise<void>;
|
|
29
|
+
setWifiSignalStrength(value: DemoModeSignalStrength): Promise<void>;
|
|
30
|
+
setMobileDataType(value: DemoModeMobileDataType): Promise<void>;
|
|
31
|
+
setMobileSignalStrength(value: DemoModeSignalStrength): Promise<void>;
|
|
32
|
+
setNoSimCardIcon(show: boolean): Promise<void>;
|
|
33
|
+
setStatusBarMode(mode: DemoModeStatusBarMode): Promise<void>;
|
|
34
|
+
setVibrateModeEnabled(value: boolean): Promise<void>;
|
|
35
|
+
setBluetoothConnected(value: boolean): Promise<void>;
|
|
36
|
+
setLocatingIcon(show: boolean): Promise<void>;
|
|
37
|
+
setAlarmIcon(show: boolean): Promise<void>;
|
|
38
|
+
setSyncingIcon(show: boolean): Promise<void>;
|
|
39
|
+
setMuteIcon(show: boolean): Promise<void>;
|
|
40
|
+
setSpeakerPhoneIcon(show: boolean): Promise<void>;
|
|
41
|
+
setNotificationsVisibility(show: boolean): Promise<void>;
|
|
42
|
+
setTime(hour: number, minute: number): Promise<void>;
|
|
43
|
+
}
|
|
43
44
|
//# sourceMappingURL=demo-mode.d.ts.map
|
package/esm/demo-mode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo-mode.d.ts","sourceRoot":"","sources":["../src/demo-mode.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"demo-mode.d.ts","sourceRoot":"","sources":["../src/demo-mode.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,oBAAY,sBAAsB;IAC9B,MAAM,SAAS;IACf,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;CACf;AAGD,eAAO,MAAM,uBAAuB,kHAiB1B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAG9E,eAAO,MAAM,sBAAsB,kFAMzB,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,qBAAa,QAAS,SAAQ,cAAc;IACxC,OAAO,CAAC,QAAQ,CAAW;gBAEf,GAAG,EAAE,GAAG;IAKpB,gBAAuB,iBAAiB,wBAAwB;IAKhE,gBAAuB,iBAAiB,yBAAyB;IAEpD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ9B,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ9B,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,SAAS,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAmBH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,qBAAqB,CAC9B,KAAK,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAIH,iBAAiB,CAC1B,KAAK,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAkBH,uBAAuB,CAChC,KAAK,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAIH,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,gBAAgB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQpE"}
|
package/esm/demo-mode.js
CHANGED
|
@@ -1,179 +1,180 @@
|
|
|
1
|
-
// cspell: ignore carriernetworkchange
|
|
2
|
-
// cspell: ignore powersave
|
|
3
|
-
// cspell: ignore nosim
|
|
4
|
-
// cspell: ignore systemui
|
|
5
|
-
// cspell: ignore sysui
|
|
6
|
-
import { AdbCommandBase } from "@yume-chan/adb";
|
|
7
|
-
import { Settings } from "./settings.js";
|
|
8
|
-
export var DemoModeSignalStrength;
|
|
9
|
-
(function (DemoModeSignalStrength) {
|
|
10
|
-
DemoModeSignalStrength["Hidden"] = "null";
|
|
11
|
-
DemoModeSignalStrength["Level0"] = "0";
|
|
12
|
-
DemoModeSignalStrength["Level1"] = "1";
|
|
13
|
-
DemoModeSignalStrength["Level2"] = "2";
|
|
14
|
-
DemoModeSignalStrength["Level3"] = "3";
|
|
15
|
-
DemoModeSignalStrength["Level4"] = "4";
|
|
16
|
-
})(DemoModeSignalStrength = DemoModeSignalStrength || (DemoModeSignalStrength = {}));
|
|
17
|
-
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java;l=1362;drc=3b775bf7ad89902f94e03d191b0d8fbdebf2bdbf
|
|
18
|
-
export const DemoModeMobileDataTypes = [
|
|
19
|
-
"1x",
|
|
20
|
-
"3g",
|
|
21
|
-
"4g",
|
|
22
|
-
"4g+",
|
|
23
|
-
"5g",
|
|
24
|
-
"5ge",
|
|
25
|
-
"5g+",
|
|
26
|
-
"e",
|
|
27
|
-
"g",
|
|
28
|
-
"h",
|
|
29
|
-
"h+",
|
|
30
|
-
"lte",
|
|
31
|
-
"lte+",
|
|
32
|
-
"dis",
|
|
33
|
-
"not",
|
|
34
|
-
"null",
|
|
35
|
-
];
|
|
36
|
-
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3136
|
|
37
|
-
export const DemoModeStatusBarModes = [
|
|
38
|
-
"opaque",
|
|
39
|
-
"translucent",
|
|
40
|
-
"semi-transparent",
|
|
41
|
-
"transparent",
|
|
42
|
-
"warning",
|
|
43
|
-
];
|
|
44
|
-
|
|
45
|
-
settings;
|
|
46
|
-
constructor(adb) {
|
|
47
|
-
super(adb);
|
|
48
|
-
this.settings = new Settings(adb);
|
|
49
|
-
}
|
|
50
|
-
static AllowedSettingKey = "sysui_demo_allowed";
|
|
51
|
-
// Demo Mode actually doesn't have a setting indicates its enablement
|
|
52
|
-
// However Developer Mode menu uses this key
|
|
53
|
-
// So we can only try our best to guess if it's enabled
|
|
54
|
-
static EnabledSettingKey = "sysui_tuner_demo_on";
|
|
55
|
-
async getAllowed() {
|
|
56
|
-
const output = await this.settings.get("global", DemoMode.AllowedSettingKey);
|
|
57
|
-
return output.trim() === "1";
|
|
58
|
-
}
|
|
59
|
-
async setAllowed(value) {
|
|
60
|
-
if (value) {
|
|
61
|
-
await this.settings.put("global", DemoMode.AllowedSettingKey, "1");
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
await this.setEnabled(false);
|
|
65
|
-
await this.settings.delete("global", DemoMode.AllowedSettingKey);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async getEnabled() {
|
|
69
|
-
const result = await this.settings.get("global", DemoMode.EnabledSettingKey);
|
|
70
|
-
return result.trim() === "1";
|
|
71
|
-
}
|
|
72
|
-
async setEnabled(value) {
|
|
73
|
-
if (value) {
|
|
74
|
-
await this.settings.put("global", DemoMode.EnabledSettingKey, "1");
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
await this.settings.delete("global", DemoMode.EnabledSettingKey);
|
|
78
|
-
await this.broadcast("exit");
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async broadcast(command, extra) {
|
|
82
|
-
await this.adb.subprocess.spawnAndWaitLegacy([
|
|
83
|
-
"am",
|
|
84
|
-
"broadcast",
|
|
85
|
-
"-a",
|
|
86
|
-
"com.android.systemui.demo",
|
|
87
|
-
"-e",
|
|
88
|
-
"command",
|
|
89
|
-
command,
|
|
90
|
-
...(extra
|
|
91
|
-
? Object.entries(extra).flatMap(([key, value]) => [
|
|
92
|
-
"-e",
|
|
93
|
-
key,
|
|
94
|
-
value,
|
|
95
|
-
])
|
|
96
|
-
: []),
|
|
97
|
-
]);
|
|
98
|
-
}
|
|
99
|
-
async setBatteryLevel(level) {
|
|
100
|
-
await this.broadcast("battery", { level: level.toString() });
|
|
101
|
-
}
|
|
102
|
-
async setBatteryCharging(value) {
|
|
103
|
-
await this.broadcast("battery", { plugged: value.toString() });
|
|
104
|
-
}
|
|
105
|
-
async setPowerSaveMode(value) {
|
|
106
|
-
await this.broadcast("battery", { powersave: value.toString() });
|
|
107
|
-
}
|
|
108
|
-
async setAirplaneMode(show) {
|
|
109
|
-
await this.broadcast("network", { airplane: show ? "show" : "hide" });
|
|
110
|
-
}
|
|
111
|
-
async setWifiSignalStrength(value) {
|
|
112
|
-
await this.broadcast("network", { wifi: "show", level: value });
|
|
113
|
-
}
|
|
114
|
-
async setMobileDataType(value) {
|
|
115
|
-
for (let i = 0; i < 2; i += 1) {
|
|
116
|
-
await this.broadcast("network", {
|
|
117
|
-
mobile: "show",
|
|
118
|
-
sims: "1",
|
|
119
|
-
nosim: "hide",
|
|
120
|
-
slot: "0",
|
|
121
|
-
datatype: value,
|
|
122
|
-
fully: "true",
|
|
123
|
-
roam: "false",
|
|
124
|
-
level: "4",
|
|
125
|
-
inflate: "false",
|
|
126
|
-
activity: "in",
|
|
127
|
-
carriernetworkchange: "hide",
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
async setMobileSignalStrength(value) {
|
|
132
|
-
await this.broadcast("network", { mobile: "show", level: value });
|
|
133
|
-
}
|
|
134
|
-
async setNoSimCardIcon(show) {
|
|
135
|
-
await this.broadcast("network", { nosim: show ? "show" : "hide" });
|
|
136
|
-
}
|
|
137
|
-
async setStatusBarMode(mode) {
|
|
138
|
-
await this.broadcast("bars", { mode });
|
|
139
|
-
}
|
|
140
|
-
async setVibrateModeEnabled(value) {
|
|
141
|
-
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java;l=103
|
|
142
|
-
await this.broadcast("status", { volume: value ? "vibrate" : "hide" });
|
|
143
|
-
}
|
|
144
|
-
async setBluetoothConnected(value) {
|
|
145
|
-
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java;l=114
|
|
146
|
-
await this.broadcast("status", {
|
|
147
|
-
bluetooth: value ? "connected" : "hide",
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
async setLocatingIcon(show) {
|
|
151
|
-
await this.broadcast("status", { location: show ? "show" : "hide" });
|
|
152
|
-
}
|
|
153
|
-
async setAlarmIcon(show) {
|
|
154
|
-
await this.broadcast("status", { alarm: show ? "show" : "hide" });
|
|
155
|
-
}
|
|
156
|
-
async setSyncingIcon(show) {
|
|
157
|
-
await this.broadcast("status", { sync: show ? "show" : "hide" });
|
|
158
|
-
}
|
|
159
|
-
async setMuteIcon(show) {
|
|
160
|
-
await this.broadcast("status", { mute: show ? "show" : "hide" });
|
|
161
|
-
}
|
|
162
|
-
async setSpeakerPhoneIcon(show) {
|
|
163
|
-
await this.broadcast("status", {
|
|
164
|
-
speakerphone: show ? "show" : "hide",
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
async setNotificationsVisibility(show) {
|
|
168
|
-
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3131
|
|
169
|
-
await this.broadcast("notifications", { visible: show.toString() });
|
|
170
|
-
}
|
|
171
|
-
async setTime(hour, minute) {
|
|
172
|
-
await this.broadcast("clock", {
|
|
173
|
-
// cspell: disable-next-line
|
|
174
|
-
hhmm: hour.toString().padStart(2, "0") +
|
|
175
|
-
minute.toString().padStart(2, "0"),
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
1
|
+
// cspell: ignore carriernetworkchange
|
|
2
|
+
// cspell: ignore powersave
|
|
3
|
+
// cspell: ignore nosim
|
|
4
|
+
// cspell: ignore systemui
|
|
5
|
+
// cspell: ignore sysui
|
|
6
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
7
|
+
import { Settings } from "./settings.js";
|
|
8
|
+
export var DemoModeSignalStrength;
|
|
9
|
+
(function (DemoModeSignalStrength) {
|
|
10
|
+
DemoModeSignalStrength["Hidden"] = "null";
|
|
11
|
+
DemoModeSignalStrength["Level0"] = "0";
|
|
12
|
+
DemoModeSignalStrength["Level1"] = "1";
|
|
13
|
+
DemoModeSignalStrength["Level2"] = "2";
|
|
14
|
+
DemoModeSignalStrength["Level3"] = "3";
|
|
15
|
+
DemoModeSignalStrength["Level4"] = "4";
|
|
16
|
+
})(DemoModeSignalStrength = DemoModeSignalStrength || (DemoModeSignalStrength = {}));
|
|
17
|
+
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java;l=1362;drc=3b775bf7ad89902f94e03d191b0d8fbdebf2bdbf
|
|
18
|
+
export const DemoModeMobileDataTypes = [
|
|
19
|
+
"1x",
|
|
20
|
+
"3g",
|
|
21
|
+
"4g",
|
|
22
|
+
"4g+",
|
|
23
|
+
"5g",
|
|
24
|
+
"5ge",
|
|
25
|
+
"5g+",
|
|
26
|
+
"e",
|
|
27
|
+
"g",
|
|
28
|
+
"h",
|
|
29
|
+
"h+",
|
|
30
|
+
"lte",
|
|
31
|
+
"lte+",
|
|
32
|
+
"dis",
|
|
33
|
+
"not",
|
|
34
|
+
"null",
|
|
35
|
+
];
|
|
36
|
+
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3136
|
|
37
|
+
export const DemoModeStatusBarModes = [
|
|
38
|
+
"opaque",
|
|
39
|
+
"translucent",
|
|
40
|
+
"semi-transparent",
|
|
41
|
+
"transparent",
|
|
42
|
+
"warning",
|
|
43
|
+
];
|
|
44
|
+
class DemoMode extends AdbCommandBase {
|
|
45
|
+
settings;
|
|
46
|
+
constructor(adb) {
|
|
47
|
+
super(adb);
|
|
48
|
+
this.settings = new Settings(adb);
|
|
49
|
+
}
|
|
50
|
+
static AllowedSettingKey = "sysui_demo_allowed";
|
|
51
|
+
// Demo Mode actually doesn't have a setting indicates its enablement
|
|
52
|
+
// However Developer Mode menu uses this key
|
|
53
|
+
// So we can only try our best to guess if it's enabled
|
|
54
|
+
static EnabledSettingKey = "sysui_tuner_demo_on";
|
|
55
|
+
async getAllowed() {
|
|
56
|
+
const output = await this.settings.get("global", DemoMode.AllowedSettingKey);
|
|
57
|
+
return output.trim() === "1";
|
|
58
|
+
}
|
|
59
|
+
async setAllowed(value) {
|
|
60
|
+
if (value) {
|
|
61
|
+
await this.settings.put("global", DemoMode.AllowedSettingKey, "1");
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
await this.setEnabled(false);
|
|
65
|
+
await this.settings.delete("global", DemoMode.AllowedSettingKey);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async getEnabled() {
|
|
69
|
+
const result = await this.settings.get("global", DemoMode.EnabledSettingKey);
|
|
70
|
+
return result.trim() === "1";
|
|
71
|
+
}
|
|
72
|
+
async setEnabled(value) {
|
|
73
|
+
if (value) {
|
|
74
|
+
await this.settings.put("global", DemoMode.EnabledSettingKey, "1");
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await this.settings.delete("global", DemoMode.EnabledSettingKey);
|
|
78
|
+
await this.broadcast("exit");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async broadcast(command, extra) {
|
|
82
|
+
await this.adb.subprocess.spawnAndWaitLegacy([
|
|
83
|
+
"am",
|
|
84
|
+
"broadcast",
|
|
85
|
+
"-a",
|
|
86
|
+
"com.android.systemui.demo",
|
|
87
|
+
"-e",
|
|
88
|
+
"command",
|
|
89
|
+
command,
|
|
90
|
+
...(extra
|
|
91
|
+
? Object.entries(extra).flatMap(([key, value]) => [
|
|
92
|
+
"-e",
|
|
93
|
+
key,
|
|
94
|
+
value,
|
|
95
|
+
])
|
|
96
|
+
: []),
|
|
97
|
+
]);
|
|
98
|
+
}
|
|
99
|
+
async setBatteryLevel(level) {
|
|
100
|
+
await this.broadcast("battery", { level: level.toString() });
|
|
101
|
+
}
|
|
102
|
+
async setBatteryCharging(value) {
|
|
103
|
+
await this.broadcast("battery", { plugged: value.toString() });
|
|
104
|
+
}
|
|
105
|
+
async setPowerSaveMode(value) {
|
|
106
|
+
await this.broadcast("battery", { powersave: value.toString() });
|
|
107
|
+
}
|
|
108
|
+
async setAirplaneMode(show) {
|
|
109
|
+
await this.broadcast("network", { airplane: show ? "show" : "hide" });
|
|
110
|
+
}
|
|
111
|
+
async setWifiSignalStrength(value) {
|
|
112
|
+
await this.broadcast("network", { wifi: "show", level: value });
|
|
113
|
+
}
|
|
114
|
+
async setMobileDataType(value) {
|
|
115
|
+
for (let i = 0; i < 2; i += 1) {
|
|
116
|
+
await this.broadcast("network", {
|
|
117
|
+
mobile: "show",
|
|
118
|
+
sims: "1",
|
|
119
|
+
nosim: "hide",
|
|
120
|
+
slot: "0",
|
|
121
|
+
datatype: value,
|
|
122
|
+
fully: "true",
|
|
123
|
+
roam: "false",
|
|
124
|
+
level: "4",
|
|
125
|
+
inflate: "false",
|
|
126
|
+
activity: "in",
|
|
127
|
+
carriernetworkchange: "hide",
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async setMobileSignalStrength(value) {
|
|
132
|
+
await this.broadcast("network", { mobile: "show", level: value });
|
|
133
|
+
}
|
|
134
|
+
async setNoSimCardIcon(show) {
|
|
135
|
+
await this.broadcast("network", { nosim: show ? "show" : "hide" });
|
|
136
|
+
}
|
|
137
|
+
async setStatusBarMode(mode) {
|
|
138
|
+
await this.broadcast("bars", { mode });
|
|
139
|
+
}
|
|
140
|
+
async setVibrateModeEnabled(value) {
|
|
141
|
+
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java;l=103
|
|
142
|
+
await this.broadcast("status", { volume: value ? "vibrate" : "hide" });
|
|
143
|
+
}
|
|
144
|
+
async setBluetoothConnected(value) {
|
|
145
|
+
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java;l=114
|
|
146
|
+
await this.broadcast("status", {
|
|
147
|
+
bluetooth: value ? "connected" : "hide",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async setLocatingIcon(show) {
|
|
151
|
+
await this.broadcast("status", { location: show ? "show" : "hide" });
|
|
152
|
+
}
|
|
153
|
+
async setAlarmIcon(show) {
|
|
154
|
+
await this.broadcast("status", { alarm: show ? "show" : "hide" });
|
|
155
|
+
}
|
|
156
|
+
async setSyncingIcon(show) {
|
|
157
|
+
await this.broadcast("status", { sync: show ? "show" : "hide" });
|
|
158
|
+
}
|
|
159
|
+
async setMuteIcon(show) {
|
|
160
|
+
await this.broadcast("status", { mute: show ? "show" : "hide" });
|
|
161
|
+
}
|
|
162
|
+
async setSpeakerPhoneIcon(show) {
|
|
163
|
+
await this.broadcast("status", {
|
|
164
|
+
speakerphone: show ? "show" : "hide",
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
async setNotificationsVisibility(show) {
|
|
168
|
+
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3131
|
|
169
|
+
await this.broadcast("notifications", { visible: show.toString() });
|
|
170
|
+
}
|
|
171
|
+
async setTime(hour, minute) {
|
|
172
|
+
await this.broadcast("clock", {
|
|
173
|
+
// cspell: disable-next-line
|
|
174
|
+
hhmm: hour.toString().padStart(2, "0") +
|
|
175
|
+
minute.toString().padStart(2, "0"),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export { DemoMode };
|
|
179
180
|
//# sourceMappingURL=demo-mode.js.map
|
package/esm/demo-mode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo-mode.js","sourceRoot":"","sources":["../src/demo-mode.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,2BAA2B;AAC3B,uBAAuB;AACvB,0BAA0B;AAC1B,uBAAuB;
|
|
1
|
+
{"version":3,"file":"demo-mode.js","sourceRoot":"","sources":["../src/demo-mode.ts"],"names":[],"mappings":"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"}
|
package/esm/dumpsys.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpsys.d.ts","sourceRoot":"","sources":["../src/dumpsys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,OAAQ,SAAQ,cAAc;CAAG"}
|
package/esm/dumpsys.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpsys.js","sourceRoot":"","sources":["../src/dumpsys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,OAAO,OAAQ,SAAQ,cAAc;CAAG"}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from "./bug-report.js";
|
|
2
|
+
export * from "./cmd.js";
|
|
3
|
+
export * from "./demo-mode.js";
|
|
4
|
+
export * from "./logcat.js";
|
|
5
|
+
export * from "./pm.js";
|
|
6
|
+
export * from "./settings.js";
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
// cspell: ignore logcat
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
1
|
+
// cspell: ignore logcat
|
|
2
|
+
export * from "./bug-report.js";
|
|
3
|
+
export * from "./cmd.js";
|
|
4
|
+
export * from "./demo-mode.js";
|
|
5
|
+
export * from "./logcat.js";
|
|
6
|
+
export * from "./pm.js";
|
|
7
|
+
export * from "./settings.js";
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AAExB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AAExB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC"}
|