io.appium.settings 5.12.24 → 5.14.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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/apks/settings_apk-debug.apk +0 -0
- package/build/lib/commands/geolocation.d.ts +22 -4
- package/build/lib/commands/geolocation.d.ts.map +1 -1
- package/build/lib/commands/geolocation.js +26 -3
- package/build/lib/commands/geolocation.js.map +1 -1
- package/lib/commands/geolocation.js +26 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [5.14.0](https://github.com/appium/io.appium.settings/compare/v5.13.0...v5.14.0) (2025-02-24)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* add bearing and accuracy params into setGeoLocation ([#213](https://github.com/appium/io.appium.settings/issues/213)) ([a684a98](https://github.com/appium/io.appium.settings/commit/a684a98b3d919d7af4e9f5d2aeabdd09561ba0e8))
|
|
6
|
+
|
|
7
|
+
## [5.13.0](https://github.com/appium/io.appium.settings/compare/v5.12.24...v5.13.0) (2025-02-23)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Add accuracy to the location builder ([#212](https://github.com/appium/io.appium.settings/issues/212)) ([360fd3b](https://github.com/appium/io.appium.settings/commit/360fd3b315a4aee16af8cc872cdc23e6b67d55f4))
|
|
12
|
+
|
|
1
13
|
## [5.12.24](https://github.com/appium/io.appium.settings/compare/v5.12.23...v5.12.24) (2025-02-21)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -203,7 +203,7 @@ Or `adb shell appops set io.appium.settings android:mock_location allow` let you
|
|
|
203
203
|
Start sending scheduled updates (every 2s) for mock location with the specified values by executing:
|
|
204
204
|
(API versions 26+):
|
|
205
205
|
```shell
|
|
206
|
-
$ adb shell am start-foreground-service --user 0 -n io.appium.settings/.LocationService --es longitude {longitude-value} --es latitude {latitude-value} [--es altitude {altitude-value}]
|
|
206
|
+
$ adb shell am start-foreground-service --user 0 -n io.appium.settings/.LocationService --es longitude {longitude-value} --es latitude {latitude-value} [--es altitude {altitude-value}] [--es speed {speed-value}] [--es bearing {bearing-value}] [--es accuracy {accuracy-value}]
|
|
207
207
|
```
|
|
208
208
|
(Older versions):
|
|
209
209
|
```shell
|
|
Binary file
|
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
* @typedef {Object} Location
|
|
3
3
|
* @property {number|string} longitude - Valid longitude value.
|
|
4
4
|
* @property {number|string} latitude - Valid latitude value.
|
|
5
|
-
* @property {
|
|
6
|
-
* @property {
|
|
5
|
+
* @property {number|string|null} [altitude] - Valid altitude value.
|
|
6
|
+
* @property {number|string|null} [satellites=12] - Number of satellites being tracked (1-12).
|
|
7
7
|
* This value is ignored on real devices.
|
|
8
|
-
* @property {
|
|
8
|
+
* @property {number|string|null} [speed] - Valid speed value.
|
|
9
|
+
* https://developer.android.com/reference/android/location/Location#setSpeed(float)
|
|
10
|
+
* @property {number|string|null} [bearing] - Valid bearing value.
|
|
11
|
+
* https://developer.android.com/reference/android/location/Location#setBearing(float)
|
|
12
|
+
* @property {number|string|null} [accuracy] - Valid accuracy value.
|
|
13
|
+
* https://developer.android.com/reference/android/location/Location#setAccuracy(float),
|
|
14
|
+
* https://developer.android.com/reference/android/location/Criteria
|
|
9
15
|
* Should be greater than 0.0 meters/second for real devices or 0.0 knots
|
|
10
16
|
* for emulators.
|
|
11
17
|
*/
|
|
@@ -62,9 +68,21 @@ export type Location = {
|
|
|
62
68
|
satellites?: string | number | null | undefined;
|
|
63
69
|
/**
|
|
64
70
|
* - Valid speed value.
|
|
71
|
+
* https://developer.android.com/reference/android/location/Location#setSpeed(float)
|
|
72
|
+
*/
|
|
73
|
+
speed?: string | number | null | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* - Valid bearing value.
|
|
76
|
+
* https://developer.android.com/reference/android/location/Location#setBearing(float)
|
|
77
|
+
*/
|
|
78
|
+
bearing?: string | number | null | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* - Valid accuracy value.
|
|
81
|
+
* https://developer.android.com/reference/android/location/Location#setAccuracy(float),
|
|
82
|
+
* https://developer.android.com/reference/android/location/Criteria
|
|
65
83
|
* Should be greater than 0.0 meters/second for real devices or 0.0 knots
|
|
66
84
|
* for emulators.
|
|
67
85
|
*/
|
|
68
|
-
|
|
86
|
+
accuracy?: string | number | null | undefined;
|
|
69
87
|
};
|
|
70
88
|
//# sourceMappingURL=geolocation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geolocation.d.ts","sourceRoot":"","sources":["../../../lib/commands/geolocation.js"],"names":[],"mappings":"AAoBA
|
|
1
|
+
{"version":3,"file":"geolocation.d.ts","sourceRoot":"","sources":["../../../lib/commands/geolocation.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AACH,gFALW,QAAQ,eAER,OAAO,iBAmFjB;AAED;;;;;;GAMG;AACH,uEAHa,OAAO,CAAC,QAAQ,CAAC,CAoB7B;AAED;;;;;;;;;;;;;GAaG;AACH,2FANW,MAAM,iBAwDhB;;;;;eArMa,MAAM,GAAC,MAAM;;;;cACb,MAAM,GAAC,MAAM"}
|
|
@@ -23,10 +23,16 @@ const GPS_COORDINATES_PATTERN = /data="(-?[\d.]+)\s+(-?[\d.]+)\s+(-?[\d.]+)"/;
|
|
|
23
23
|
* @typedef {Object} Location
|
|
24
24
|
* @property {number|string} longitude - Valid longitude value.
|
|
25
25
|
* @property {number|string} latitude - Valid latitude value.
|
|
26
|
-
* @property {
|
|
27
|
-
* @property {
|
|
26
|
+
* @property {number|string|null} [altitude] - Valid altitude value.
|
|
27
|
+
* @property {number|string|null} [satellites=12] - Number of satellites being tracked (1-12).
|
|
28
28
|
* This value is ignored on real devices.
|
|
29
|
-
* @property {
|
|
29
|
+
* @property {number|string|null} [speed] - Valid speed value.
|
|
30
|
+
* https://developer.android.com/reference/android/location/Location#setSpeed(float)
|
|
31
|
+
* @property {number|string|null} [bearing] - Valid bearing value.
|
|
32
|
+
* https://developer.android.com/reference/android/location/Location#setBearing(float)
|
|
33
|
+
* @property {number|string|null} [accuracy] - Valid accuracy value.
|
|
34
|
+
* https://developer.android.com/reference/android/location/Location#setAccuracy(float),
|
|
35
|
+
* https://developer.android.com/reference/android/location/Criteria
|
|
30
36
|
* Should be greater than 0.0 meters/second for real devices or 0.0 knots
|
|
31
37
|
* for emulators.
|
|
32
38
|
*/
|
|
@@ -61,6 +67,8 @@ async function setGeoLocation(location, isEmulator = false) {
|
|
|
61
67
|
const latitude = /** @type {string} */ (formatLocationValue('latitude'));
|
|
62
68
|
const altitude = formatLocationValue('altitude', false);
|
|
63
69
|
const speed = formatLocationValue('speed', false);
|
|
70
|
+
const bearing = formatLocationValue('bearing', false);
|
|
71
|
+
const accuracy = formatLocationValue('accuracy', false);
|
|
64
72
|
if (isEmulator) {
|
|
65
73
|
/** @type {string[]} */
|
|
66
74
|
const args = [longitude, latitude];
|
|
@@ -98,8 +106,23 @@ async function setGeoLocation(location, isEmulator = false) {
|
|
|
98
106
|
args.push('-e', 'altitude', altitude);
|
|
99
107
|
}
|
|
100
108
|
if (!lodash_1.default.isNil(speed)) {
|
|
109
|
+
if (lodash_1.default.toNumber(speed) < 0) {
|
|
110
|
+
throw new Error(`${speed} is expected to be 0.0 or greater.`);
|
|
111
|
+
}
|
|
101
112
|
args.push('-e', 'speed', speed);
|
|
102
113
|
}
|
|
114
|
+
if (!lodash_1.default.isNil(bearing)) {
|
|
115
|
+
if (!lodash_1.default.inRange(lodash_1.default.toNumber(bearing), 0, 360)) {
|
|
116
|
+
throw new Error(`${accuracy} is expected to be in [0, 360) range.`);
|
|
117
|
+
}
|
|
118
|
+
args.push('-e', 'bearing', bearing);
|
|
119
|
+
}
|
|
120
|
+
if (!lodash_1.default.isNil(accuracy)) {
|
|
121
|
+
if (lodash_1.default.toNumber(accuracy) < 0) {
|
|
122
|
+
throw new Error(`${accuracy} is expected to be 0.0 or greater.`);
|
|
123
|
+
}
|
|
124
|
+
args.push('-e', 'accuracy', accuracy);
|
|
125
|
+
}
|
|
103
126
|
args.push(constants_js_1.LOCATION_SERVICE);
|
|
104
127
|
await this.adb.shell(args);
|
|
105
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../../lib/commands/geolocation.js"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../../lib/commands/geolocation.js"],"names":[],"mappings":"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"}
|
|
@@ -22,10 +22,16 @@ const GPS_COORDINATES_PATTERN = /data="(-?[\d.]+)\s+(-?[\d.]+)\s+(-?[\d.]+)"/;
|
|
|
22
22
|
* @typedef {Object} Location
|
|
23
23
|
* @property {number|string} longitude - Valid longitude value.
|
|
24
24
|
* @property {number|string} latitude - Valid latitude value.
|
|
25
|
-
* @property {
|
|
26
|
-
* @property {
|
|
25
|
+
* @property {number|string|null} [altitude] - Valid altitude value.
|
|
26
|
+
* @property {number|string|null} [satellites=12] - Number of satellites being tracked (1-12).
|
|
27
27
|
* This value is ignored on real devices.
|
|
28
|
-
* @property {
|
|
28
|
+
* @property {number|string|null} [speed] - Valid speed value.
|
|
29
|
+
* https://developer.android.com/reference/android/location/Location#setSpeed(float)
|
|
30
|
+
* @property {number|string|null} [bearing] - Valid bearing value.
|
|
31
|
+
* https://developer.android.com/reference/android/location/Location#setBearing(float)
|
|
32
|
+
* @property {number|string|null} [accuracy] - Valid accuracy value.
|
|
33
|
+
* https://developer.android.com/reference/android/location/Location#setAccuracy(float),
|
|
34
|
+
* https://developer.android.com/reference/android/location/Criteria
|
|
29
35
|
* Should be greater than 0.0 meters/second for real devices or 0.0 knots
|
|
30
36
|
* for emulators.
|
|
31
37
|
*/
|
|
@@ -61,6 +67,8 @@ export async function setGeoLocation (location, isEmulator = false) {
|
|
|
61
67
|
const latitude = /** @type {string} */ (formatLocationValue('latitude'));
|
|
62
68
|
const altitude = formatLocationValue('altitude', false);
|
|
63
69
|
const speed = formatLocationValue('speed', false);
|
|
70
|
+
const bearing = formatLocationValue('bearing', false);
|
|
71
|
+
const accuracy = formatLocationValue('accuracy', false);
|
|
64
72
|
if (isEmulator) {
|
|
65
73
|
/** @type {string[]} */
|
|
66
74
|
const args = [longitude, latitude];
|
|
@@ -97,8 +105,23 @@ export async function setGeoLocation (location, isEmulator = false) {
|
|
|
97
105
|
args.push('-e', 'altitude', altitude);
|
|
98
106
|
}
|
|
99
107
|
if (!_.isNil(speed)) {
|
|
108
|
+
if (_.toNumber(speed) < 0) {
|
|
109
|
+
throw new Error(`${speed} is expected to be 0.0 or greater.`);
|
|
110
|
+
}
|
|
100
111
|
args.push('-e', 'speed', speed);
|
|
101
112
|
}
|
|
113
|
+
if (!_.isNil(bearing)) {
|
|
114
|
+
if (!_.inRange(_.toNumber(bearing), 0, 360)) {
|
|
115
|
+
throw new Error(`${accuracy} is expected to be in [0, 360) range.`);
|
|
116
|
+
}
|
|
117
|
+
args.push('-e', 'bearing', bearing);
|
|
118
|
+
}
|
|
119
|
+
if (!_.isNil(accuracy)) {
|
|
120
|
+
if (_.toNumber(accuracy) < 0) {
|
|
121
|
+
throw new Error(`${accuracy} is expected to be 0.0 or greater.`);
|
|
122
|
+
}
|
|
123
|
+
args.push('-e', 'accuracy', accuracy);
|
|
124
|
+
}
|
|
102
125
|
args.push(LOCATION_SERVICE);
|
|
103
126
|
await this.adb.shell(args);
|
|
104
127
|
}
|