@yume-chan/android-bin 0.0.16 → 0.0.18
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 +18 -0
- package/CHANGELOG.md +13 -1
- package/README.md +15 -0
- package/esm/bu.d.ts +1 -1
- package/esm/bu.d.ts.map +1 -1
- package/esm/bu.js +6 -2
- package/esm/bu.js.map +1 -1
- package/esm/bug-report.d.ts +2 -1
- package/esm/bug-report.d.ts.map +1 -1
- package/esm/bug-report.js +27 -15
- package/esm/bug-report.js.map +1 -1
- package/esm/demo-mode.d.ts +3 -3
- package/esm/demo-mode.d.ts.map +1 -1
- package/esm/demo-mode.js +86 -54
- package/esm/demo-mode.js.map +1 -1
- package/esm/logcat.d.ts +39 -14
- package/esm/logcat.d.ts.map +1 -1
- package/esm/logcat.js +114 -69
- package/esm/logcat.js.map +1 -1
- package/esm/settings.d.ts +2 -2
- package/esm/settings.d.ts.map +1 -1
- package/package.json +14 -11
- package/src/bu.ts +7 -3
- package/src/bug-report.ts +74 -47
- package/src/demo-mode.ts +114 -66
- package/src/logcat.ts +210 -98
- package/tsconfig.build.json +3 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/.rush/temp/package-deps_build.json +0 -17
- package/.rush/temp/package-deps_build_watch.json +0 -17
- package/.rush/temp/shrinkwrap-deps.json +0 -4
- package/android-bin.build.log +0 -2
- package/tsconfig.json +0 -8
package/src/demo-mode.ts
CHANGED
|
@@ -4,28 +4,51 @@
|
|
|
4
4
|
// cspell: ignore systemui
|
|
5
5
|
// cspell: ignore sysui
|
|
6
6
|
|
|
7
|
-
import { Adb, AdbCommandBase } from
|
|
7
|
+
import { type Adb, AdbCommandBase } from "@yume-chan/adb";
|
|
8
|
+
|
|
8
9
|
import { Settings } from "./settings.js";
|
|
9
10
|
|
|
10
11
|
export enum DemoModeSignalStrength {
|
|
11
|
-
Hidden =
|
|
12
|
-
Level0 =
|
|
13
|
-
Level1 =
|
|
14
|
-
Level2 =
|
|
15
|
-
Level3 =
|
|
16
|
-
Level4 =
|
|
12
|
+
Hidden = "null",
|
|
13
|
+
Level0 = "0",
|
|
14
|
+
Level1 = "1",
|
|
15
|
+
Level2 = "2",
|
|
16
|
+
Level3 = "3",
|
|
17
|
+
Level4 = "4",
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/
|
|
20
|
-
export const DemoModeMobileDataTypes = [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java;l=1362;drc=3b775bf7ad89902f94e03d191b0d8fbdebf2bdbf
|
|
21
|
+
export const DemoModeMobileDataTypes = [
|
|
22
|
+
"1x",
|
|
23
|
+
"3g",
|
|
24
|
+
"4g",
|
|
25
|
+
"4g+",
|
|
26
|
+
"5g",
|
|
27
|
+
"5ge",
|
|
28
|
+
"5g+",
|
|
29
|
+
"e",
|
|
30
|
+
"g",
|
|
31
|
+
"h",
|
|
32
|
+
"h+",
|
|
33
|
+
"lte",
|
|
34
|
+
"lte+",
|
|
35
|
+
"dis",
|
|
36
|
+
"not",
|
|
37
|
+
"null",
|
|
38
|
+
] as const;
|
|
39
|
+
|
|
40
|
+
export type DemoModeMobileDataType = typeof DemoModeMobileDataTypes[number];
|
|
24
41
|
|
|
25
42
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3136
|
|
26
|
-
export const DemoModeStatusBarModes = [
|
|
43
|
+
export const DemoModeStatusBarModes = [
|
|
44
|
+
"opaque",
|
|
45
|
+
"translucent",
|
|
46
|
+
"semi-transparent",
|
|
47
|
+
"transparent",
|
|
48
|
+
"warning",
|
|
49
|
+
] as const;
|
|
27
50
|
|
|
28
|
-
export type DemoModeStatusBarMode =
|
|
51
|
+
export type DemoModeStatusBarMode = typeof DemoModeStatusBarModes[number];
|
|
29
52
|
|
|
30
53
|
export class DemoMode extends AdbCommandBase {
|
|
31
54
|
private settings: Settings;
|
|
@@ -35,145 +58,170 @@ export class DemoMode extends AdbCommandBase {
|
|
|
35
58
|
this.settings = new Settings(adb);
|
|
36
59
|
}
|
|
37
60
|
|
|
38
|
-
public static readonly AllowedSettingKey =
|
|
61
|
+
public static readonly AllowedSettingKey = "sysui_demo_allowed";
|
|
39
62
|
|
|
40
63
|
// Demo Mode actually doesn't have a setting indicates its enablement
|
|
41
64
|
// However Developer Mode menu uses this key
|
|
42
65
|
// So we can only try our best to guess if it's enabled
|
|
43
|
-
public static readonly EnabledSettingKey =
|
|
66
|
+
public static readonly EnabledSettingKey = "sysui_tuner_demo_on";
|
|
44
67
|
|
|
45
68
|
public async getAllowed(): Promise<boolean> {
|
|
46
|
-
const output = await this.settings.get(
|
|
47
|
-
|
|
69
|
+
const output = await this.settings.get(
|
|
70
|
+
"global",
|
|
71
|
+
DemoMode.AllowedSettingKey
|
|
72
|
+
);
|
|
73
|
+
return output.trim() === "1";
|
|
48
74
|
}
|
|
49
75
|
|
|
50
76
|
public async setAllowed(value: boolean): Promise<void> {
|
|
51
77
|
if (value) {
|
|
52
|
-
await this.settings.put(
|
|
78
|
+
await this.settings.put("global", DemoMode.AllowedSettingKey, "1");
|
|
53
79
|
} else {
|
|
54
80
|
await this.setEnabled(false);
|
|
55
|
-
await this.settings.delete(
|
|
81
|
+
await this.settings.delete("global", DemoMode.AllowedSettingKey);
|
|
56
82
|
}
|
|
57
83
|
}
|
|
58
84
|
|
|
59
85
|
public async getEnabled(): Promise<boolean> {
|
|
60
|
-
const result = await this.settings.get(
|
|
61
|
-
|
|
86
|
+
const result = await this.settings.get(
|
|
87
|
+
"global",
|
|
88
|
+
DemoMode.EnabledSettingKey
|
|
89
|
+
);
|
|
90
|
+
return result.trim() === "1";
|
|
62
91
|
}
|
|
63
92
|
|
|
64
93
|
public async setEnabled(value: boolean): Promise<void> {
|
|
65
94
|
if (value) {
|
|
66
|
-
await this.settings.put(
|
|
95
|
+
await this.settings.put("global", DemoMode.EnabledSettingKey, "1");
|
|
67
96
|
} else {
|
|
68
|
-
await this.settings.delete(
|
|
69
|
-
await this.broadcast(
|
|
97
|
+
await this.settings.delete("global", DemoMode.EnabledSettingKey);
|
|
98
|
+
await this.broadcast("exit");
|
|
70
99
|
}
|
|
71
100
|
}
|
|
72
101
|
|
|
73
|
-
public async broadcast(
|
|
102
|
+
public async broadcast(
|
|
103
|
+
command: string,
|
|
104
|
+
extra?: Record<string, string>
|
|
105
|
+
): Promise<void> {
|
|
74
106
|
await this.adb.subprocess.spawnAndWaitLegacy([
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
107
|
+
"am",
|
|
108
|
+
"broadcast",
|
|
109
|
+
"-a",
|
|
110
|
+
"com.android.systemui.demo",
|
|
111
|
+
"-e",
|
|
112
|
+
"command",
|
|
81
113
|
command,
|
|
82
|
-
...(extra
|
|
114
|
+
...(extra
|
|
115
|
+
? Object.entries(extra).flatMap(([key, value]) => [
|
|
116
|
+
"-e",
|
|
117
|
+
key,
|
|
118
|
+
value,
|
|
119
|
+
])
|
|
120
|
+
: []),
|
|
83
121
|
]);
|
|
84
122
|
}
|
|
85
123
|
|
|
86
124
|
public async setBatteryLevel(level: number): Promise<void> {
|
|
87
|
-
await this.broadcast(
|
|
125
|
+
await this.broadcast("battery", { level: level.toString() });
|
|
88
126
|
}
|
|
89
127
|
|
|
90
128
|
public async setBatteryCharging(value: boolean): Promise<void> {
|
|
91
|
-
await this.broadcast(
|
|
129
|
+
await this.broadcast("battery", { plugged: value.toString() });
|
|
92
130
|
}
|
|
93
131
|
|
|
94
132
|
public async setPowerSaveMode(value: boolean): Promise<void> {
|
|
95
|
-
await this.broadcast(
|
|
133
|
+
await this.broadcast("battery", { powersave: value.toString() });
|
|
96
134
|
}
|
|
97
135
|
|
|
98
136
|
public async setAirplaneMode(show: boolean): Promise<void> {
|
|
99
|
-
await this.broadcast(
|
|
137
|
+
await this.broadcast("network", { airplane: show ? "show" : "hide" });
|
|
100
138
|
}
|
|
101
139
|
|
|
102
|
-
public async setWifiSignalStrength(
|
|
103
|
-
|
|
140
|
+
public async setWifiSignalStrength(
|
|
141
|
+
value: DemoModeSignalStrength
|
|
142
|
+
): Promise<void> {
|
|
143
|
+
await this.broadcast("network", { wifi: "show", level: value });
|
|
104
144
|
}
|
|
105
145
|
|
|
106
|
-
public async setMobileDataType(
|
|
146
|
+
public async setMobileDataType(
|
|
147
|
+
value: DemoModeMobileDataType
|
|
148
|
+
): Promise<void> {
|
|
107
149
|
for (let i = 0; i < 2; i += 1) {
|
|
108
|
-
await this.broadcast(
|
|
109
|
-
mobile:
|
|
110
|
-
sims:
|
|
111
|
-
nosim:
|
|
112
|
-
slot:
|
|
150
|
+
await this.broadcast("network", {
|
|
151
|
+
mobile: "show",
|
|
152
|
+
sims: "1",
|
|
153
|
+
nosim: "hide",
|
|
154
|
+
slot: "0",
|
|
113
155
|
datatype: value,
|
|
114
|
-
fully:
|
|
115
|
-
roam:
|
|
116
|
-
level:
|
|
117
|
-
inflate:
|
|
118
|
-
activity:
|
|
119
|
-
carriernetworkchange:
|
|
156
|
+
fully: "true",
|
|
157
|
+
roam: "false",
|
|
158
|
+
level: "4",
|
|
159
|
+
inflate: "false",
|
|
160
|
+
activity: "in",
|
|
161
|
+
carriernetworkchange: "hide",
|
|
120
162
|
});
|
|
121
163
|
}
|
|
122
164
|
}
|
|
123
165
|
|
|
124
|
-
public async setMobileSignalStrength(
|
|
125
|
-
|
|
166
|
+
public async setMobileSignalStrength(
|
|
167
|
+
value: DemoModeSignalStrength
|
|
168
|
+
): Promise<void> {
|
|
169
|
+
await this.broadcast("network", { mobile: "show", level: value });
|
|
126
170
|
}
|
|
127
171
|
|
|
128
172
|
public async setNoSimCardIcon(show: boolean): Promise<void> {
|
|
129
|
-
await this.broadcast(
|
|
173
|
+
await this.broadcast("network", { nosim: show ? "show" : "hide" });
|
|
130
174
|
}
|
|
131
175
|
|
|
132
176
|
public async setStatusBarMode(mode: DemoModeStatusBarMode): Promise<void> {
|
|
133
|
-
await this.broadcast(
|
|
177
|
+
await this.broadcast("bars", { mode });
|
|
134
178
|
}
|
|
135
179
|
|
|
136
180
|
public async setVibrateModeEnabled(value: boolean): Promise<void> {
|
|
137
181
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java;l=103
|
|
138
|
-
await this.broadcast(
|
|
182
|
+
await this.broadcast("status", { volume: value ? "vibrate" : "hide" });
|
|
139
183
|
}
|
|
140
184
|
|
|
141
185
|
public async setBluetoothConnected(value: boolean): Promise<void> {
|
|
142
186
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java;l=114
|
|
143
|
-
await this.broadcast(
|
|
187
|
+
await this.broadcast("status", {
|
|
188
|
+
bluetooth: value ? "connected" : "hide",
|
|
189
|
+
});
|
|
144
190
|
}
|
|
145
191
|
|
|
146
192
|
public async setLocatingIcon(show: boolean): Promise<void> {
|
|
147
|
-
await this.broadcast(
|
|
193
|
+
await this.broadcast("status", { location: show ? "show" : "hide" });
|
|
148
194
|
}
|
|
149
195
|
|
|
150
196
|
public async setAlarmIcon(show: boolean): Promise<void> {
|
|
151
|
-
await this.broadcast(
|
|
197
|
+
await this.broadcast("status", { alarm: show ? "show" : "hide" });
|
|
152
198
|
}
|
|
153
199
|
|
|
154
200
|
public async setSyncingIcon(show: boolean): Promise<void> {
|
|
155
|
-
await this.broadcast(
|
|
201
|
+
await this.broadcast("status", { sync: show ? "show" : "hide" });
|
|
156
202
|
}
|
|
157
203
|
|
|
158
204
|
public async setMuteIcon(show: boolean): Promise<void> {
|
|
159
|
-
await this.broadcast(
|
|
205
|
+
await this.broadcast("status", { mute: show ? "show" : "hide" });
|
|
160
206
|
}
|
|
161
207
|
|
|
162
208
|
public async setSpeakerPhoneIcon(show: boolean): Promise<void> {
|
|
163
|
-
await this.broadcast(
|
|
209
|
+
await this.broadcast("status", {
|
|
210
|
+
speakerphone: show ? "show" : "hide",
|
|
211
|
+
});
|
|
164
212
|
}
|
|
165
213
|
|
|
166
214
|
public async setNotificationsVisibility(show: boolean): Promise<void> {
|
|
167
215
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3131
|
|
168
|
-
await this.broadcast(
|
|
216
|
+
await this.broadcast("notifications", { visible: show.toString() });
|
|
169
217
|
}
|
|
170
218
|
|
|
171
219
|
public async setTime(hour: number, minute: number): Promise<void> {
|
|
172
|
-
await this.broadcast(
|
|
220
|
+
await this.broadcast("clock", {
|
|
173
221
|
// cspell: disable-next-line
|
|
174
222
|
hhmm:
|
|
175
|
-
hour.toString().padStart(2,
|
|
176
|
-
minute.toString().padStart(2,
|
|
223
|
+
hour.toString().padStart(2, "0") +
|
|
224
|
+
minute.toString().padStart(2, "0"),
|
|
177
225
|
});
|
|
178
226
|
}
|
|
179
227
|
}
|