io.appium.settings 8.0.10 → 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 (62) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +97 -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/network.js +1 -1
  18. package/build/lib/commands/network.js.map +1 -1
  19. package/build/lib/commands/types.d.ts +65 -0
  20. package/build/lib/commands/types.d.ts.map +1 -1
  21. package/build/lib/commands/video-stream.d.ts +50 -0
  22. package/build/lib/commands/video-stream.d.ts.map +1 -0
  23. package/build/lib/commands/video-stream.js +160 -0
  24. package/build/lib/commands/video-stream.js.map +1 -0
  25. package/build/lib/constants.d.ts +7 -0
  26. package/build/lib/constants.d.ts.map +1 -1
  27. package/build/lib/constants.js +7 -0
  28. package/build/lib/constants.js.map +1 -1
  29. package/build/lib/index.js +1 -1
  30. package/build/lib/index.js.map +1 -1
  31. package/build/lib/{utils.d.ts → utils/apk-path.d.ts} +1 -1
  32. package/build/lib/utils/apk-path.d.ts.map +1 -0
  33. package/build/lib/{utils.js → utils/apk-path.js} +1 -1
  34. package/build/lib/utils/apk-path.js.map +1 -0
  35. package/build/lib/utils/index.d.ts +5 -0
  36. package/build/lib/utils/index.d.ts.map +1 -0
  37. package/build/lib/utils/index.js +4 -0
  38. package/build/lib/utils/index.js.map +1 -0
  39. package/build/lib/utils/streaming-protocol.d.ts +47 -0
  40. package/build/lib/utils/streaming-protocol.d.ts.map +1 -0
  41. package/build/lib/utils/streaming-protocol.js +67 -0
  42. package/build/lib/utils/streaming-protocol.js.map +1 -0
  43. package/build/lib/utils/streaming-transport.d.ts +142 -0
  44. package/build/lib/utils/streaming-transport.d.ts.map +1 -0
  45. package/build/lib/utils/streaming-transport.js +416 -0
  46. package/build/lib/utils/streaming-transport.js.map +1 -0
  47. package/lib/client.ts +5 -0
  48. package/lib/commands/clipboard.ts +1 -0
  49. package/lib/commands/jpeg-stream.ts +171 -0
  50. package/lib/commands/media-projection.ts +1 -5
  51. package/lib/commands/network.ts +1 -1
  52. package/lib/commands/types.ts +70 -0
  53. package/lib/commands/video-stream.ts +179 -0
  54. package/lib/constants.ts +10 -0
  55. package/lib/index.ts +1 -1
  56. package/lib/utils/index.ts +4 -0
  57. package/lib/utils/streaming-protocol.ts +93 -0
  58. package/lib/utils/streaming-transport.ts +450 -0
  59. package/package.json +1 -1
  60. package/build/lib/utils.d.ts.map +0 -1
  61. package/build/lib/utils.js.map +0 -1
  62. /package/lib/{utils.ts → utils/apk-path.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
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
+
1
7
  ## [8.0.10](https://github.com/appium/io.appium.settings/compare/v8.0.9...v8.0.10) (2026-09-26)
2
8
 
3
9
  ### Bug Fixes
package/README.md CHANGED
@@ -427,6 +427,103 @@ Obtain Recording Output File:
427
427
  adb pull /storage/emulated/0/Android/data/io.appium.settings/files/abc.mp4 abc.mp4
428
428
  ```
429
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
+
430
527
 
431
528
  ## Notes:
432
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":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAE1C,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;AACtE,OAAO,EAAC,kBAAkB,EAAE,6BAA6B,EAAC,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,aAAa,CAAC;AAe5C,MAAM,OAAO,WAAW;IACb,GAAG,CAAM;IACT,GAAG,CAAS;IAErB,iBAAiB,GAAG,iBAAiB,CAAC;IAEtC,iBAAiB,GAAG,iBAAiB,CAAC;IACtC,yBAAyB,GAAG,yBAAyB,CAAC;IAEtD,YAAY,GAAG,YAAY,CAAC;IAE5B,cAAc,GAAG,cAAc,CAAC;IAChC,cAAc,GAAG,cAAc,CAAC;IAChC,uBAAuB,GAAG,uBAAuB,CAAC;IAElD,oBAAoB,GAAG,oBAAoB,CAAC;IAC5C,eAAe,GAAG,eAAe,CAAC;IAElC,SAAS,GAAG,SAAS,CAAC;IAEtB,YAAY,GAAG,YAAY,CAAC;IAC5B,YAAY,GAAG,YAAY,CAAC;IAE5B,gBAAgB,GAAG,gBAAgB,CAAC;IACpC,8BAA8B,GAAG,8BAA8B,CAAC;IAChE,UAAU,GAAG,UAAU,CAAC;IAExB,mBAAmB,GAAG,mBAAmB,CAAC;IAC1C,WAAW,GAAG,WAAW,CAAC;IAE1B,2BAA2B,GAAG,2BAA2B,CAAC;IAC1D,uCAAuC,GAAG,uCAAuC,CAAC;IAElF,YAAY,IAAqB;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAAC,OAAkC,EAAE;QACvD,MAAM,EAAC,OAAO,GAAG,IAAI,EAAE,uBAAuB,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAC,GAAG,IAAI,CAAC;QAErF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;QAC3D,IAAI,UAA8B,CAAC;QACnC,IAAI,uBAAuB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;gBAC7D,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC;YAC9C,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gDAAgD,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtB,GAAG,EAAE,kBAAkB;YACvB,QAAQ,EAAE,6BAA6B;YACvC,MAAM,EAAE,4BAA4B;YACpC,QAAQ,EAAE,kCAAkC;YAC5C,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBACrE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,uBAAuB,IAAI,UAAU,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACzC,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gDAAgD,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,IAAI,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,qBAAqB;QACzB,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC7F,OAAO,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,IAAc,EAAE,MAAc,EAAE,iBAAiB,GAAG,IAAI;QAC3E,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,cAAc,CAAC,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,uBAAuB,MAAM,qDAAqD,CACtD,CAAC;YAC/B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAc,EAAE,UAAkB;QAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,oBAAoB,GAAG,uCAAuC,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,4BAA4B,GAAG,uCAAuC,CAAC,CAAC;QACpH,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,gBAAgB,UAAU,mCAAmC,GAAG,uCAAuC,CACxG,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
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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"}
@@ -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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,2GAA2G;IAC3G,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,+GAA+G;IAC/G,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,2QAA2Q;IAC3Q,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;sDAGkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;iCAC6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;uCAEmC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACrC;;6DAEyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { ADB } from 'appium-adb';
2
+ import type { SettingsApp } from '../client.js';
3
+ import type { AccessUnit, StartVideoStreamOpts } from './types.js';
4
+ /**
5
+ * Creates a new instance of the live H.264/HEVC video streaming session.
6
+ * The stream only works since Android API 29+
7
+ *
8
+ * @returns The streaming session instance
9
+ */
10
+ export declare function makeVideoStreamSession(this: SettingsApp): VideoStreamSession;
11
+ /**
12
+ * Live H.264/HEVC video streaming session for the device screen, with an
13
+ * optional interleaved AAC audio track.
14
+ */
15
+ export declare class VideoStreamSession {
16
+ private readonly adb;
17
+ private transport;
18
+ /**
19
+ * Creates a new VideoStreamSession instance.
20
+ *
21
+ * @param adb - ADB instance for device communication
22
+ */
23
+ constructor(adb: ADB);
24
+ /**
25
+ * Checks if the video stream is currently running.
26
+ */
27
+ isRunning(): Promise<boolean>;
28
+ /**
29
+ * Starts the live video stream.
30
+ * If a stream is already running, this method returns false without starting a new one.
31
+ *
32
+ * @param opts Streaming options including codec, fps, bitrate, resolution, audio, and the local port to use
33
+ * @returns True if the stream was started successfully, false if already running
34
+ * @throws {Error} If the stream fails to start within the timeout period
35
+ */
36
+ start(opts?: StartVideoStreamOpts): Promise<boolean>;
37
+ /**
38
+ * Yields access units (video NAL units and, if enabled, AAC audio units) as
39
+ * they arrive from the device. `start()` must be called before iterating.
40
+ */
41
+ accessUnits(): AsyncGenerator<AccessUnit>;
42
+ /**
43
+ * Stops the currently running video stream.
44
+ *
45
+ * @returns True if the stream was stopped successfully, false if it was not running
46
+ * @throws {Error} If the stream fails to stop within the timeout period
47
+ */
48
+ stop(): Promise<boolean>;
49
+ }
50
+ //# sourceMappingURL=video-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-stream.d.ts","sourceRoot":"","sources":["../../../lib/commands/video-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,UAAU,EAAE,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAKjE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAE5E;AAgBD;;;GAGG;AACH,qBAAa,kBAAkB;IAQjB,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,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsD9D;;;OAGG;IACI,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC;IAgBhD;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAyB/B"}