io.appium.settings 8.0.9 → 8.1.0

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.
Files changed (65) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +126 -0
  3. package/apks/settings_apk-debug.apk +0 -0
  4. package/build/lib/client.d.ts +4 -0
  5. package/build/lib/client.d.ts.map +1 -1
  6. package/build/lib/client.js +4 -0
  7. package/build/lib/client.js.map +1 -1
  8. package/build/lib/commands/clipboard.d.ts.map +1 -1
  9. package/build/lib/commands/clipboard.js +1 -1
  10. package/build/lib/commands/clipboard.js.map +1 -1
  11. package/build/lib/commands/jpeg-stream.d.ts +51 -0
  12. package/build/lib/commands/jpeg-stream.d.ts.map +1 -0
  13. package/build/lib/commands/jpeg-stream.js +152 -0
  14. package/build/lib/commands/jpeg-stream.js.map +1 -0
  15. package/build/lib/commands/media-projection.d.ts.map +1 -1
  16. package/build/lib/commands/media-projection.js.map +1 -1
  17. package/build/lib/commands/media.js +1 -1
  18. package/build/lib/commands/media.js.map +1 -1
  19. package/build/lib/commands/network.js +1 -1
  20. package/build/lib/commands/network.js.map +1 -1
  21. package/build/lib/commands/types.d.ts +65 -0
  22. package/build/lib/commands/types.d.ts.map +1 -1
  23. package/build/lib/commands/video-stream.d.ts +50 -0
  24. package/build/lib/commands/video-stream.d.ts.map +1 -0
  25. package/build/lib/commands/video-stream.js +160 -0
  26. package/build/lib/commands/video-stream.js.map +1 -0
  27. package/build/lib/constants.d.ts +7 -0
  28. package/build/lib/constants.d.ts.map +1 -1
  29. package/build/lib/constants.js +7 -0
  30. package/build/lib/constants.js.map +1 -1
  31. package/build/lib/index.js +1 -1
  32. package/build/lib/index.js.map +1 -1
  33. package/build/lib/{utils.d.ts → utils/apk-path.d.ts} +1 -1
  34. package/build/lib/utils/apk-path.d.ts.map +1 -0
  35. package/build/lib/{utils.js → utils/apk-path.js} +1 -1
  36. package/build/lib/utils/apk-path.js.map +1 -0
  37. package/build/lib/utils/index.d.ts +5 -0
  38. package/build/lib/utils/index.d.ts.map +1 -0
  39. package/build/lib/utils/index.js +4 -0
  40. package/build/lib/utils/index.js.map +1 -0
  41. package/build/lib/utils/streaming-protocol.d.ts +47 -0
  42. package/build/lib/utils/streaming-protocol.d.ts.map +1 -0
  43. package/build/lib/utils/streaming-protocol.js +67 -0
  44. package/build/lib/utils/streaming-protocol.js.map +1 -0
  45. package/build/lib/utils/streaming-transport.d.ts +142 -0
  46. package/build/lib/utils/streaming-transport.d.ts.map +1 -0
  47. package/build/lib/utils/streaming-transport.js +416 -0
  48. package/build/lib/utils/streaming-transport.js.map +1 -0
  49. package/lib/client.ts +5 -0
  50. package/lib/commands/clipboard.ts +1 -0
  51. package/lib/commands/jpeg-stream.ts +171 -0
  52. package/lib/commands/media-projection.ts +1 -5
  53. package/lib/commands/media.ts +1 -1
  54. package/lib/commands/network.ts +1 -1
  55. package/lib/commands/types.ts +70 -0
  56. package/lib/commands/video-stream.ts +179 -0
  57. package/lib/constants.ts +10 -0
  58. package/lib/index.ts +1 -1
  59. package/lib/utils/index.ts +4 -0
  60. package/lib/utils/streaming-protocol.ts +93 -0
  61. package/lib/utils/streaming-transport.ts +450 -0
  62. package/package.json +1 -1
  63. package/build/lib/utils.d.ts.map +0 -1
  64. package/build/lib/utils.js.map +0 -1
  65. /package/lib/{utils.ts → utils/apk-path.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [8.1.0](https://github.com/appium/io.appium.settings/compare/v8.0.10...v8.1.0) (2026-09-27)
2
+
3
+ ### Features
4
+
5
+ * Add streaming support ([#320](https://github.com/appium/io.appium.settings/issues/320)) ([d166701](https://github.com/appium/io.appium.settings/commit/d16670175769e62e5dc8edb0883705f1baaa46bf))
6
+
7
+ ## [8.0.10](https://github.com/appium/io.appium.settings/compare/v8.0.9...v8.0.10) (2026-09-26)
8
+
9
+ ### Bug Fixes
10
+
11
+ * quote media scan destination paths ([#321](https://github.com/appium/io.appium.settings/issues/321)) ([71c90d0](https://github.com/appium/io.appium.settings/commit/71c90d09fb3e0cae33b20749217df593eb630d57))
12
+
1
13
  ## [8.0.9](https://github.com/appium/io.appium.settings/compare/v8.0.8...v8.0.9) (2026-08-25)
2
14
 
3
15
  ### Miscellaneous Chores
package/README.md CHANGED
@@ -9,6 +9,26 @@ Toggle settings in Android device or emulator.
9
9
 
10
10
  A small and simple Android application that deals with the system settings. Then the application shuts down.
11
11
 
12
+ ## Trusted test environment
13
+
14
+ Appium Settings is intended for dedicated test devices and emulators with trusted
15
+ applications. Its exported broadcast receivers support ADB and external automation
16
+ tools; they do not authenticate callers or provide isolation from malicious apps
17
+ installed on the same device.
18
+
19
+ In particular, granting Appium Settings `READ_SMS` allows other installed apps to
20
+ request SMS data through its SMS receiver without holding `READ_SMS` themselves.
21
+ When notification access is enabled and the service that registers the notification
22
+ receiver is running, other installed apps can request buffered notification data
23
+ without having notification access themselves. These requests happen on the device;
24
+ network isolation alone does not prevent them.
25
+
26
+ Use test data and avoid devices containing personal or confidential SMS messages or
27
+ notifications. Grant only the permissions needed for your tests. When the helper is
28
+ no longer needed, revoke its SMS permission and notification access, or uninstall it.
29
+ Ending an Appium session should not be treated as revoking those grants or removing
30
+ the helper.
31
+
12
32
  ## Requirements
13
33
 
14
34
  * [Android SDK](http://developer.android.com)
@@ -255,6 +275,11 @@ adb shell ime set com.google.android.inputmethod.latin/com.android.inputmethod.l
255
275
 
256
276
  ## Notifications
257
277
 
278
+ **Trust requirement:** While notification access is enabled and the notification
279
+ receiver is registered, other apps on the device can retrieve buffered notifications
280
+ through this helper. See [Trusted test environment](#trusted-test-environment) before
281
+ enabling this feature.
282
+
258
283
  Since version 2.16.0 Appium Settings supports retrieval of system notifications.
259
284
  You need to manually switch the corresponding security switcher next to `Appium Settings`
260
285
  application name in `Settings->Notification Access` (the path to this page under Settings
@@ -306,6 +331,10 @@ for more information on available notification properties and their values.
306
331
 
307
332
  ## SMS
308
333
 
334
+ **Trust requirement:** Once this helper has `READ_SMS`, other apps on the device can
335
+ request SMS data through its exported receiver without that permission themselves.
336
+ See [Trusted test environment](#trusted-test-environment) before granting access.
337
+
309
338
  Since version 3.1 Appium Settings supports retrieval of SMS messages.
310
339
  Make sure the corresponding permission has been granted to the app
311
340
  in order to make this feature available. The next step would be to send
@@ -398,6 +427,103 @@ Obtain Recording Output File:
398
427
  adb pull /storage/emulated/0/Android/data/io.appium.settings/files/abc.mp4 abc.mp4
399
428
  ```
400
429
 
430
+ ## Live Screen Streaming (JPEG / H.264 / HEVC)
431
+
432
+ In addition to file-based recording above, Appium Settings can stream the screen live as
433
+ either a sequence of JPEG frames or an H.264/HEVC video (with an optional interleaved AAC
434
+ audio track), instead of writing a file. This is a **raw local-socket protocol**, not an
435
+ HTTP/MJPEG server: the app opens a local abstract socket on-device, and the consumer is
436
+ expected to `adb forward` it to a host TCP port and parse the (simple, length-prefixed)
437
+ frame protocol itself. The [SettingsApp](./lib/client.js) wrapper (`makeJpegStreamSession()` /
438
+ `makeVideoStreamSession()`) already does this for you and is the recommended way to consume
439
+ either stream; talking to the socket directly is only needed for other languages/tools.
440
+
441
+ Required steps to activate streaming (same as recording; `RECORD_AUDIO` is only needed if you
442
+ enable the video stream's `audio` option):
443
+
444
+ ```bash
445
+ adb shell pm grant io.appium.settings android.permission.RECORD_AUDIO
446
+ adb shell appops set io.appium.settings PROJECT_MEDIA allow
447
+ ```
448
+
449
+ ### JPEG streaming
450
+
451
+ Start:
452
+ ```bash
453
+ adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.jpeg.ACTION_START --es socket_name my-jpeg-stream --es fps 30 --es quality 80 --es scale 100
454
+ ```
455
+
456
+ - `socket_name` (Mandatory) - Name of the local abstract socket the app should listen on; forward it with `adb forward tcp:<port> localabstract:<socket_name>`
457
+ - `fps` (Optional) - Default value: 60
458
+ - `quality` (Optional) - JPEG quality, 1-100. Default value: 80
459
+ - `scale` (Optional) - Percentage (1-100) to scale the captured frame to before encoding. Default value: 100
460
+
461
+ Stop:
462
+ ```bash
463
+ adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.jpeg.ACTION_STOP
464
+ ```
465
+
466
+ ### Video streaming
467
+
468
+ Start:
469
+ ```bash
470
+ adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.video.ACTION_START --es socket_name my-video-stream --es codec h264 --es fps 30 --es bitrate 4000000 --es resolution 1920x1080 --es audio false
471
+ ```
472
+
473
+ - `socket_name` (Mandatory) - Same meaning as for JPEG streaming above
474
+ - `codec` (Optional) - `h264` or `hevc`. Default value: `h264`
475
+ - `fps` (Optional) - Default value: 30
476
+ - `bitrate` (Optional) - In bits per second. Default value: 4000000 (4 Mbps)
477
+ - `resolution` (Optional) - Same syntax/allowed values as the recording `resolution` argument above
478
+ - `audio` (Optional) - `true` to interleave an AAC audio track captured via `AudioPlaybackCaptureConfiguration`. Default value: `false`
479
+
480
+ Stop:
481
+ ```bash
482
+ adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.video.ACTION_STOP
483
+ ```
484
+
485
+ ### Node usage example
486
+
487
+ ```js
488
+ import ADB from 'appium-adb'
489
+ import { SettingsApp } from 'io.appium.settings';
490
+
491
+ async function main() {
492
+ const app = new SettingsApp({adb: await ADB.createADB()});
493
+ await app.adjustMediaProjectionServicePermissions();
494
+
495
+ const session = app.makeVideoStreamSession();
496
+ await session.start({codec: 'h264', fps: 30, audio: true});
497
+ for await (const unit of session.accessUnits()) {
498
+ console.log(unit.track, unit.data.length, unit.isKeyFrame);
499
+ }
500
+ }
501
+
502
+ main();
503
+ ```
504
+
505
+ By default the Node wrapper picks an OS-assigned ephemeral port for the `adb forward` bridge
506
+ between the device's local socket and the host. Both `makeJpegStreamSession().start()` and
507
+ `makeVideoStreamSession().start()` also accept:
508
+
509
+ - `localPort` (Optional) - Use this exact local TCP port instead. Throws if it's already in use.
510
+ - `localPortRange` (Optional) - A `[min, max]` tuple; the first free port in this inclusive range is used. Throws if none are free.
511
+
512
+ Only one of `localPort`/`localPortRange` may be provided at a time. This is useful if you need a
513
+ predictable port (e.g. for a firewall rule or a proxy in front of the stream):
514
+
515
+ ```js
516
+ await session.start({codec: 'h264', localPort: 8000});
517
+ // or
518
+ await session.start({codec: 'h264', localPortRange: [8000, 8010]});
519
+ ```
520
+
521
+ _Note_
522
+
523
+ JPEG streaming throughput is CPU-bound (each frame is compressed on-device via
524
+ `Bitmap.compress`), so on lower-end devices or emulators you may need to reduce `fps`,
525
+ `quality` and/or `scale` from their defaults to keep up with real-time capture.
526
+
401
527
 
402
528
  ## Notes:
403
529
 
Binary file
@@ -4,6 +4,7 @@ import { setAnimationState } from './commands/animation.js';
4
4
  import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth.js';
5
5
  import { getClipboard } from './commands/clipboard.js';
6
6
  import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation.js';
7
+ import { makeJpegStreamSession } from './commands/jpeg-stream.js';
7
8
  import { setDeviceLocale, listSupportedLocales } from './commands/locale.js';
8
9
  import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions } from './commands/media-projection.js';
9
10
  import { scanMedia } from './commands/media.js';
@@ -11,6 +12,7 @@ import { setDataState, setWifiState } from './commands/network.js';
11
12
  import { getNotifications, adjustNotificationsPermissions } from './commands/notifications.js';
12
13
  import { getSmsList } from './commands/sms.js';
13
14
  import { performEditorAction, typeUnicode } from './commands/typing.js';
15
+ import { makeVideoStreamSession } from './commands/video-stream.js';
14
16
  export interface SettingsAppOpts {
15
17
  adb: ADB;
16
18
  }
@@ -44,6 +46,8 @@ export declare class SettingsApp {
44
46
  typeUnicode: typeof typeUnicode;
45
47
  makeMediaProjectionRecorder: typeof makeMediaProjectionRecorder;
46
48
  adjustMediaProjectionServicePermissions: typeof adjustMediaProjectionServicePermissions;
49
+ makeJpegStreamSession: typeof makeJpegStreamSession;
50
+ makeVideoStreamSession: typeof makeVideoStreamSession;
47
51
  constructor(opts: SettingsAppOpts);
48
52
  /**
49
53
  * Ensures that Appium Settings helper application is running
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAC,2BAA2B,EAAE,uCAAuC,EAAC,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAE,8BAA8B,EAAC,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAItE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,GAAG,CAAC;CACV;AAED,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,iBAAiB,2BAAqB;IAEtC,iBAAiB,2BAAqB;IACtC,yBAAyB,mCAA6B;IAEtD,YAAY,sBAAgB;IAE5B,cAAc,wBAAkB;IAChC,cAAc,wBAAkB;IAChC,uBAAuB,iCAA2B;IAElD,oBAAoB,8BAAwB;IAC5C,eAAe,yBAAmB;IAElC,SAAS,mBAAa;IAEtB,YAAY,sBAAgB;IAC5B,YAAY,sBAAgB;IAE5B,gBAAgB,0BAAoB;IACpC,8BAA8B,wCAAkC;IAChE,UAAU,oBAAc;IAExB,mBAAmB,6BAAuB;IAC1C,WAAW,qBAAe;IAE1B,2BAA2B,qCAA+B;IAC1D,uCAAuC,iDAA2C;gBAEtE,IAAI,EAAE,eAAe;IAKjC;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,WAAW,CAAC;IA6ChF;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/C;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB/F;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG;CAoBxD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAC,2BAA2B,EAAE,uCAAuC,EAAC,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAE,8BAA8B,EAAC,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAIlE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,GAAG,CAAC;CACV;AAED,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,iBAAiB,2BAAqB;IAEtC,iBAAiB,2BAAqB;IACtC,yBAAyB,mCAA6B;IAEtD,YAAY,sBAAgB;IAE5B,cAAc,wBAAkB;IAChC,cAAc,wBAAkB;IAChC,uBAAuB,iCAA2B;IAElD,oBAAoB,8BAAwB;IAC5C,eAAe,yBAAmB;IAElC,SAAS,mBAAa;IAEtB,YAAY,sBAAgB;IAC5B,YAAY,sBAAgB;IAE5B,gBAAgB,0BAAoB;IACpC,8BAA8B,wCAAkC;IAChE,UAAU,oBAAc;IAExB,mBAAmB,6BAAuB;IAC1C,WAAW,qBAAe;IAE1B,2BAA2B,qCAA+B;IAC1D,uCAAuC,iDAA2C;IAElF,qBAAqB,+BAAyB;IAC9C,sBAAsB,gCAA0B;gBAEpC,IAAI,EAAE,eAAe;IAKjC;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,WAAW,CAAC;IA6ChF;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/C;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB/F;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG;CAoBxD"}
@@ -3,6 +3,7 @@ import { setAnimationState } from './commands/animation.js';
3
3
  import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth.js';
4
4
  import { getClipboard } from './commands/clipboard.js';
5
5
  import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation.js';
6
+ import { makeJpegStreamSession } from './commands/jpeg-stream.js';
6
7
  import { setDeviceLocale, listSupportedLocales } from './commands/locale.js';
7
8
  import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions } from './commands/media-projection.js';
8
9
  import { scanMedia } from './commands/media.js';
@@ -10,6 +11,7 @@ import { setDataState, setWifiState } from './commands/network.js';
10
11
  import { getNotifications, adjustNotificationsPermissions } from './commands/notifications.js';
11
12
  import { getSmsList } from './commands/sms.js';
12
13
  import { performEditorAction, typeUnicode } from './commands/typing.js';
14
+ import { makeVideoStreamSession } from './commands/video-stream.js';
13
15
  import { SETTINGS_HELPER_ID, SETTINGS_HELPER_MAIN_ACTIVITY } from './constants.js';
14
16
  import { log, LOG_PREFIX } from './logger.js';
15
17
  export class SettingsApp {
@@ -34,6 +36,8 @@ export class SettingsApp {
34
36
  typeUnicode = typeUnicode;
35
37
  makeMediaProjectionRecorder = makeMediaProjectionRecorder;
36
38
  adjustMediaProjectionServicePermissions = adjustMediaProjectionServicePermissions;
39
+ makeJpegStreamSession = makeJpegStreamSession;
40
+ makeVideoStreamSession = makeVideoStreamSession;
37
41
  constructor(opts) {
38
42
  this.adb = opts.adb;
39
43
  this.log = log;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAI9C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BrE"}
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAI9C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BrE"}
@@ -25,7 +25,7 @@ export async function getClipboard() {
25
25
  catch (err) {
26
26
  throw new Error(`Cannot retrieve the current clipboard content from the device. ` +
27
27
  `Make sure the Appium Settings application is up to date. ` +
28
- `Original error: ${err.message}`);
28
+ `Original error: ${err.message}`, { cause: err });
29
29
  }
30
30
  const match = /data="([^"]*)"/.exec(output);
31
31
  if (!match) {
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,0BAA0B,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,KAAK,IAAqB,EAAE,CACpD,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,CAAC,EAC5D,oBAAoB,EACpB,KAAK,CACN,CAAC;IACJ,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM;YACJ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;gBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAC/D,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,2DAA2D;YAC3D,mBAAmB,GAAG,CAAC,OAAO,EAAE,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,0BAA0B,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,KAAK,IAAqB,EAAE,CACpD,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,CAAC,EAC5D,oBAAoB,EACpB,KAAK,CACN,CAAC;IACJ,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM;YACJ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;gBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAC/D,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,2DAA2D;YAC3D,mBAAmB,GAAG,CAAC,OAAO,EAAE,EAClC,EAAC,KAAK,EAAE,GAAG,EAAC,CACb,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { ADB } from 'appium-adb';
2
+ import type { SettingsApp } from '../client.js';
3
+ import type { JpegFrame, StartJpegStreamOpts } from './types.js';
4
+ /**
5
+ * Creates a new instance of the live JPEG frame streaming session.
6
+ * The stream only works since Android API 29+
7
+ *
8
+ * @returns The streaming session instance
9
+ */
10
+ export declare function makeJpegStreamSession(this: SettingsApp): JpegStreamSession;
11
+ /**
12
+ * Live JPEG frame streaming session for the device screen.
13
+ * This class provides methods to start, stop, and consume a continuous
14
+ * sequence of JPEG-encoded frames over a local socket (API 29+).
15
+ */
16
+ export declare class JpegStreamSession {
17
+ private readonly adb;
18
+ private transport;
19
+ /**
20
+ * Creates a new JpegStreamSession instance.
21
+ *
22
+ * @param adb - ADB instance for device communication
23
+ */
24
+ constructor(adb: ADB);
25
+ /**
26
+ * Checks if the JPEG stream is currently running.
27
+ */
28
+ isRunning(): Promise<boolean>;
29
+ /**
30
+ * Starts the live JPEG frame stream.
31
+ * If a stream is already running, this method returns false without starting a new one.
32
+ *
33
+ * @param opts Streaming options including fps, quality, scale, and the local port to use
34
+ * @returns True if the stream was started successfully, false if already running
35
+ * @throws {Error} If the stream fails to start within the timeout period
36
+ */
37
+ start(opts?: StartJpegStreamOpts): Promise<boolean>;
38
+ /**
39
+ * Yields JPEG frames as they arrive from the device.
40
+ * `start()` must be called before iterating.
41
+ */
42
+ frames(): AsyncGenerator<JpegFrame>;
43
+ /**
44
+ * Stops the currently running JPEG stream.
45
+ *
46
+ * @returns True if the stream was stopped successfully, false if it was not running
47
+ * @throws {Error} If the stream fails to stop within the timeout period
48
+ */
49
+ stop(): Promise<boolean>;
50
+ }
51
+ //# sourceMappingURL=jpeg-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jpeg-stream.d.ts","sourceRoot":"","sources":["../../../lib/commands/jpeg-stream.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAS9C,OAAO,KAAK,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAK/D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAE1E;AAgBD;;;;GAIG;AACH,qBAAa,iBAAiB;IAQhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPhC,OAAO,CAAC,SAAS,CAAgC;IAEjD;;;;OAIG;gBAC0B,GAAG,EAAE,GAAG;IAErC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgD7D;;;OAGG;IACI,MAAM,IAAI,cAAc,CAAC,SAAS,CAAC;IAa1C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAyB/B"}
@@ -0,0 +1,152 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { waitForCondition } from 'asyncbox';
3
+ import { JPEG_STREAM_ACTION_START, JPEG_STREAM_ACTION_STOP, JPEG_STREAM_SERVICE_NAME, SETTINGS_HELPER_ID, STREAMING_ACTIVITY_NAME, } from '../constants.js';
4
+ import { StreamTransport, validateLocalPortOpts } from '../utils/index.js';
5
+ const STREAM_STARTUP_TIMEOUT_MS = 3 * 1000;
6
+ const STREAM_STOP_TIMEOUT_MS = 3 * 1000;
7
+ /**
8
+ * Creates a new instance of the live JPEG frame streaming session.
9
+ * The stream only works since Android API 29+
10
+ *
11
+ * @returns The streaming session instance
12
+ */
13
+ export function makeJpegStreamSession() {
14
+ return new JpegStreamSession(this.adb);
15
+ }
16
+ function validateJpegStreamOpts(opts) {
17
+ const { fps, quality, scale } = opts;
18
+ if (fps !== undefined && (!Number.isInteger(fps) || fps <= 0)) {
19
+ throw new TypeError(`fps must be a positive integer, got ${fps}`);
20
+ }
21
+ if (quality !== undefined && (!Number.isInteger(quality) || quality < 1 || quality > 100)) {
22
+ throw new TypeError(`quality must be an integer between 1 and 100, got ${quality}`);
23
+ }
24
+ if (scale !== undefined && (!Number.isInteger(scale) || scale < 1 || scale > 100)) {
25
+ throw new TypeError(`scale must be an integer between 1 and 100, got ${scale}`);
26
+ }
27
+ validateLocalPortOpts(opts);
28
+ }
29
+ /**
30
+ * Live JPEG frame streaming session for the device screen.
31
+ * This class provides methods to start, stop, and consume a continuous
32
+ * sequence of JPEG-encoded frames over a local socket (API 29+).
33
+ */
34
+ export class JpegStreamSession {
35
+ adb;
36
+ transport = null;
37
+ /**
38
+ * Creates a new JpegStreamSession instance.
39
+ *
40
+ * @param adb - ADB instance for device communication
41
+ */
42
+ constructor(adb) {
43
+ this.adb = adb;
44
+ }
45
+ /**
46
+ * Checks if the JPEG stream is currently running.
47
+ */
48
+ async isRunning() {
49
+ const stdout = await this.adb.shell(['dumpsys', 'activity', 'services', JPEG_STREAM_SERVICE_NAME]);
50
+ return stdout.includes(JPEG_STREAM_SERVICE_NAME);
51
+ }
52
+ /**
53
+ * Starts the live JPEG frame stream.
54
+ * If a stream is already running, this method returns false without starting a new one.
55
+ *
56
+ * @param opts Streaming options including fps, quality, scale, and the local port to use
57
+ * @returns True if the stream was started successfully, false if already running
58
+ * @throws {Error} If the stream fails to start within the timeout period
59
+ */
60
+ async start(opts = {}) {
61
+ validateJpegStreamOpts(opts);
62
+ if (await this.isRunning()) {
63
+ return false;
64
+ }
65
+ const { fps, quality, scale, localPort, localPortRange } = opts;
66
+ // Socket names are validated on-device against ^[a-zA-Z0-9._-]{1,200}$, so this
67
+ // must not contain a "/" - unlike JPEG_STREAM_SERVICE_NAME.
68
+ const socketName = `${SETTINGS_HELPER_ID}.jpegstream.${randomUUID()}`;
69
+ const args = [
70
+ 'am',
71
+ 'start',
72
+ '-n',
73
+ STREAMING_ACTIVITY_NAME,
74
+ '-a',
75
+ JPEG_STREAM_ACTION_START,
76
+ '--es',
77
+ 'socket_name',
78
+ socketName,
79
+ ];
80
+ if (fps) {
81
+ args.push('--es', 'fps', `${fps}`);
82
+ }
83
+ if (quality) {
84
+ args.push('--es', 'quality', `${quality}`);
85
+ }
86
+ if (scale) {
87
+ args.push('--es', 'scale', `${scale}`);
88
+ }
89
+ await this.adb.shell(args);
90
+ try {
91
+ await waitForCondition(async () => await this.isRunning(), {
92
+ waitMs: STREAM_STARTUP_TIMEOUT_MS,
93
+ intervalMs: 300,
94
+ });
95
+ }
96
+ catch {
97
+ throw new Error(`The JPEG stream is not running after ${STREAM_STARTUP_TIMEOUT_MS}ms. ` +
98
+ `Please check the logcat output for more details.`);
99
+ }
100
+ this.transport = await StreamTransport.connect(this.adb, socketName, { localPort, localPortRange });
101
+ return true;
102
+ }
103
+ /**
104
+ * Yields JPEG frames as they arrive from the device.
105
+ * `start()` must be called before iterating.
106
+ */
107
+ async *frames() {
108
+ if (!this.transport) {
109
+ throw new Error('The JPEG stream has not been started. Call start() first.');
110
+ }
111
+ for await (const frame of this.transport.frames()) {
112
+ yield {
113
+ data: frame.data,
114
+ sequence: Number(frame.sequence),
115
+ timestampMicros: Number(frame.timestampMicros),
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Stops the currently running JPEG stream.
121
+ *
122
+ * @returns True if the stream was stopped successfully, false if it was not running
123
+ * @throws {Error} If the stream fails to stop within the timeout period
124
+ */
125
+ async stop() {
126
+ try {
127
+ if (!(await this.isRunning())) {
128
+ // The on-device service may have already stopped itself (e.g. the client
129
+ // disconnected), leaving a local transport/adb-forward that still needs closing.
130
+ return false;
131
+ }
132
+ await this.adb.shell(['am', 'start', '-n', STREAMING_ACTIVITY_NAME, '-a', JPEG_STREAM_ACTION_STOP]);
133
+ try {
134
+ await waitForCondition(async () => !(await this.isRunning()), {
135
+ waitMs: STREAM_STOP_TIMEOUT_MS,
136
+ intervalMs: 300,
137
+ });
138
+ }
139
+ catch {
140
+ throw new Error(`The attempt to stop the current JPEG stream timed out after ${STREAM_STOP_TIMEOUT_MS}ms`);
141
+ }
142
+ return true;
143
+ }
144
+ finally {
145
+ if (this.transport) {
146
+ await this.transport.close();
147
+ this.transport = null;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ //# sourceMappingURL=jpeg-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jpeg-stream.js","sourceRoot":"","sources":["../../../lib/commands/jpeg-stream.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"media-projection.d.ts","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAQ9C,OAAO,KAAK,EAAC,iCAAiC,EAAC,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,uBAAuB,CAEtF;AAED;;;;;GAKG;AACH,wBAAsB,uCAAuC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAMjG;AAMD;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAE1B;;;;OAIG;gBACS,GAAG,EAAE,GAAG;IAIpB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,iCAAsC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC3E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAe1C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAmB/B"}
1
+ {"version":3,"file":"media-projection.d.ts","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAQ9C,OAAO,KAAK,EAAC,iCAAiC,EAAC,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,uBAAuB,CAEtF;AAED;;;;;GAKG;AACH,wBAAsB,uCAAuC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAMjG;AAMD;;;;GAIG;AACH,qBAAa,uBAAuB;IAMtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC;;;;OAIG;gBAC0B,GAAG,EAAE,GAAG;IAErC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,iCAAsC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC3E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAe1C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAmB/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,6 @@ import { LOG_PREFIX } from '../logger.js';
10
10
  */
11
11
  export async function scanMedia(destination) {
12
12
  this.log.debug(LOG_PREFIX, `Scanning '${destination}' for media files`);
13
- await this.checkBroadcast(['-n', MEDIA_SCAN_RECEIVER, '-a', MEDIA_SCAN_ACTION, '--es', 'path', destination], 'scan media');
13
+ await this.checkBroadcast(['-n', MEDIA_SCAN_RECEIVER, '-a', MEDIA_SCAN_ACTION, '--es', 'path', `'${destination.replace(/'/g, `'"'"'`)}'`], 'scan media');
14
14
  }
15
15
  //# sourceMappingURL=media.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../lib/commands/media.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAoB,WAAmB;IACpE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,WAAW,mBAAmB,CAAC,CAAC;IACxE,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EACjF,YAAY,CACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../lib/commands/media.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAoB,WAAmB;IACpE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,WAAW,mBAAmB,CAAC,CAAC;IACxE,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAC/G,YAAY,CACb,CAAC;AACJ,CAAC"}
@@ -45,7 +45,7 @@ export async function setDataState(on, isEmulator = false) {
45
45
  await this.adb.shell(['cmd', 'phone', 'data', on ? 'enable' : 'disable']);
46
46
  }
47
47
  catch (e) {
48
- throw new Error(`Cannot change the data state. Original error: ${e.stderr || e.message}`);
48
+ throw new Error(`Cannot change the data state. Original error: ${e.stderr || e.message}`, { cause: e });
49
49
  }
50
50
  }
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../lib/commands/network.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,8BAA8B,EAAE,gCAAgC,EAAC,MAAM,iBAAiB,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,6DAA6D;QAC7D,wEAAwE;QACxE,kBAAkB;QAClB,MAAM,IAAI,CAAC,cAAc,CACvB;YACE,IAAI;YACJ,8BAA8B;YAC9B,IAAI;YACJ,gCAAgC;YAChC,MAAM;YACN,WAAW;YACX,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1B,EACD,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,OAAO,CACpC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../lib/commands/network.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,8BAA8B,EAAE,gCAAgC,EAAC,MAAM,iBAAiB,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,6DAA6D;QAC7D,wEAAwE;QACxE,kBAAkB;QAClB,MAAM,IAAI,CAAC,cAAc,CACvB;YACE,IAAI;YACJ,8BAA8B;YAC9B,IAAI;YACJ,gCAAgC;YAChC,MAAM;YACN,WAAW;YACX,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1B,EACD,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,OAAO,CACpC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -35,6 +35,71 @@ export interface StartMediaProjectionRecordingOpts {
35
35
  * invalid file name will fail to start the recording. */
36
36
  filename?: string;
37
37
  }
38
+ /**
39
+ * Options for choosing the local TCP port used to bridge a live stream's
40
+ * on-device socket to the host via `adb forward`. At most one of these may be
41
+ * provided; if neither is given, an OS-assigned ephemeral port is used.
42
+ */
43
+ export interface LocalPortOpts {
44
+ /** Use this exact local TCP port. Throws if it's already in use. */
45
+ localPort?: number;
46
+ /** Pick the first free local TCP port from this inclusive [min, max] range. */
47
+ localPortRange?: [number, number];
48
+ }
49
+ /**
50
+ * Options for starting a live JPEG frame streaming session.
51
+ */
52
+ export interface StartJpegStreamOpts extends LocalPortOpts {
53
+ /** Frames per second requested; actual rate may be lower on constrained devices. Default 60. */
54
+ fps?: number;
55
+ /** JPEG quality, 1-100. Default 80. */
56
+ quality?: number;
57
+ /** Percentage (1-100) to scale the captured frame to before JPEG encoding. Default 100. */
58
+ scale?: number;
59
+ }
60
+ /**
61
+ * Options for starting a live H.264/HEVC video streaming session.
62
+ */
63
+ export interface StartVideoStreamOpts extends LocalPortOpts {
64
+ /** Default 'h264'. */
65
+ codec?: 'h264' | 'hevc';
66
+ /** Default 30. */
67
+ fps?: number;
68
+ /** Default 4000000 (4 Mbps). */
69
+ bitrate?: number;
70
+ /** Same "WxH" syntax/allowed values as StartMediaProjectionRecordingOpts.resolution. */
71
+ resolution?: string;
72
+ /** Interleave an AAC audio track captured via AudioPlaybackCaptureConfiguration. Default false. */
73
+ audio?: boolean;
74
+ }
75
+ /**
76
+ * A single JPEG-encoded frame of the device screen.
77
+ */
78
+ export interface JpegFrame {
79
+ /** The raw JPEG-encoded image bytes. */
80
+ data: Buffer;
81
+ /** Monotonically increasing frame sequence number. */
82
+ sequence: number;
83
+ /** Frame timestamp, in microseconds since the stream session started. */
84
+ timestampMicros: number;
85
+ }
86
+ /**
87
+ * A single encoded access unit from a live video stream: either a video NAL
88
+ * unit (Annex-B, H.264/HEVC) or an AAC audio unit (ADTS-framed).
89
+ */
90
+ export interface AccessUnit {
91
+ track: 'video' | 'audio';
92
+ /** The raw access unit bytes. */
93
+ data: Buffer;
94
+ /** Monotonically increasing sequence number, per track. */
95
+ sequence: number;
96
+ /** Presentation timestamp, in microseconds since the stream session started. */
97
+ timestampMicros: number;
98
+ /** Whether this is a video keyframe (always false for audio units). */
99
+ isKeyFrame: boolean;
100
+ /** Whether this unit carries codec configuration data (e.g. SPS/PPS) rather than actual samples. */
101
+ isConfig: boolean;
102
+ }
38
103
  /**
39
104
  * Supported locale information.
40
105
  */