The information below concerns legacy mobile tests that work with mobile devices connected to the local computer. For new mobile tests, we recommend using the newer cloud-compatible approach. |
Description
Allows specifying a mock location, which is a location that overrides the actual/physical location generated by the GPS sensor. Mock locations are used for testing purposes, for example, to specify location data on emulators that have no GPS sensor. See Location Strategies in the Android developer documentation.
TestComplete can specify mock location data only when Android Agent is installed and running, and the Allow mock locations setting is enabled in the Android developer settings.
Once the |
Declaration
AndroidGPSObj.SetLocation(Longitude, Latitude, Altitude, Accuracy)
AndroidGPSObj | An expression, variable or parameter that specifies a reference to an AndroidGPS object | |||
Longitude | [in] | Required | Double | |
Latitude | [in] | Required | Double | |
Altitude | [in] | Required | Double | |
Accuracy | [in] | Required | Double | |
Result | None |
Applies To
The method is applied to the following object:
Parameters
The method has the following parameters:
Longitude
Specifies the desired longitude value (in degrees).
Latitude
Specifies the desired latitude value (in degrees).
Altitude
Specifies the desired altitude value (in meters above the sea level).
Accuracy
Specifies the desired accuracy (in meters) of the location.
Result Value
None.
Remarks
TestComplete replaces the data retrieved from the GPS sensor (the so-called GPS provider). The data received from a cell tower and/or from Wi-Fi access points (the so-called network location provider) are not modified.
To get the current location of the mobile device (no matter actual or mock), read the Location
property.
Example
The example below demonstrates how to specify a mock location from a test. The sample code retrieves information about the current location of the device, changes the coordinates and writes the modified data to the device. The current and modified coordinates are posted to the test log and are displayed in Google Maps.
JavaScript, JScript
function MockGPSLocation()
{
var Longt, Lat, Alt, Acc;
Mobile.SetCurrent("Nexus 7");
// Enable GPS
Mobile.Device().GPS.GPSEnabled = true;
// Enable the "Allow mock locations" property
Mobile.Device().GPS.AllowMockLocations = true;
// Obtain current location data
Longt = Mobile.Device().GPS.Location.Longitude;
Lat = Mobile.Device().GPS.Location.Latitude;
Alt = Mobile.Device().GPS.Location.Altitude;
Acc = Mobile.Device().GPS.Location.Accuracy;
// Output the location data
Log.Message("The current device location is:");
Log.Message("Longitude: "+Longt);
Log.Message("Latitude: "+Lat);
Log.Message("Altitude: "+Alt);
Log.Message("Accuracy: "+Acc);
// Open Google Maps in the browser and pass the current coordinates as URL parameters
Browsers.Item(Browsers.btIExplorer).Run("http://maps.google.com/maps?q=loc:"+Lat+","+Longt);
// Change the coordinates
Longt = Longt+0.005;
Lat = Lat+0.005;
// Specify a mock location
Mobile.Device().GPS.SetLocation(Longt,Lat,Alt,Acc);
// Output the new location data
Log.Message("The device mock location is:");
Log.Message("Longitude: "+Longt);
Log.Message("Latitude: "+Lat);
Log.Message("Altitude: "+Alt);
Log.Message("Accuracy: "+Acc);
// Open a new tab in the browser
Sys.Browser("iexplore").BrowserWindow(0).Keys("^t"); Delay(1000);
// Open the new location in Google Maps
Sys.Browser("iexplore").Page("about:Tabs").ToUrl("http://maps.google.com/maps?q=loc:"+Lat+","+Longt);
// Disable mock locations
Mobile.Device().GPS.AllowMockLocations = false;
}
Python
def MockGPSLocation():
Mobile.SetCurrent("Nexus 7")
# Enable GPS
Mobile.Device().GPS.GPSEnabled = True
# Enable the "Allow mock locations" property
Mobile.Device().GPS.AllowMockLocations = True
# Obtain current location data
Longt = Mobile.Device().GPS.Location.Longitude
Lat = Mobile.Device().GPS.Location.Latitude
Alt = Mobile.Device().GPS.Location.Altitude
Acc = Mobile.Device().GPS.Location.Accuracy
# Output the location data
Log.Message("The current device location is:")
Log.Message("Longitude: "+ IntToStr(Longt))
Log.Message("Latitude: "+IntToStr(Lat))
Log.Message("Altitude: "+IntToStr(Alt))
Log.Message("Accuracy: "+IntToStr(Acc))
# Open Google Maps in the browser and pass the current coordinates as URL parameters
Browsers.Item[Browsers.btIExplorer].Run("http://maps.google.com/maps?q=loc:"+IntToStr(Lat)+","+IntToStr(Longt))
# Change the coordinates
Longt = Longt+0.005
Lat = Lat+0.005
# Specify a mock location
Mobile.Device().GPS.SetLocation(Longt,Lat,Alt,Acc)
# Output the new location data
Log.Message("The device mock location is:")
Log.Message("Longitude: "+IntToStr(Longt))
Log.Message("Latitude: "+IntToStr(Lat))
Log.Message("Altitude: "+IntToStr(Alt))
Log.Message("Accuracy: "+IntToStr(Acc))
# Open a new tab in the browser
Sys.Browser("iexplore").BrowserWindow(0).Keys("^t"); Delay(1000)
# Open the new location in Google Maps
Sys.Browser("iexplore").Page("about:blank").ToUrl("http://maps.google.com/maps?q=loc:"+IntToStr(Lat)+","+IntToStr(Longt))
# Disable mock locations
Mobile.Device().GPS.AllowMockLocations = False
VBScript
Sub MockGPSLocation
Call Mobile.SetCurrent("Nexus 7")
' Enable GPS
Mobile.Device.GPS.GPSEnabled = true
' Enable the "Allow mock locations" property
Mobile.Device.GPS.AllowMockLocations = true
' Obtain current location data
Longt = Mobile.Device.GPS.Location.Longitude
Lat = Mobile.Device.GPS.Location.Latitude
Alt = Mobile.Device.GPS.Location.Altitude
Acc = Mobile.Device.GPS.Location.Accuracy
' Output the location data
Call Log.Message("The current device location is:")
Call Log.Message("Longitude: "&Longt)
Call Log.Message("Latitude: "&Lat)
Call Log.Message("Altitude: "&Alt)
Call Log.Message("Accuracy: "&Acc)
' Open Google Maps in the browser and pass the current coordinates as URL parameters
Call Browsers.Item(Browsers.btIExplorer).Run("http://maps.google.com/maps?q=loc:"&Lat&","&Longt)
' Change the coordinates
Longt = Longt+0.005
Lat = Lat+0.005
' Specify a mock location
Call Mobile.Device.GPS.SetLocation(Longt,Lat,Alt,Acc)
' Output the new location data
Call Log.Message("The device mock location is:")
Call Log.Message("Longitude: "&Longt)
Call Log.Message("Latitude: "&Lat)
Call Log.Message("Altitude: "&Alt)
Call Log.Message("Accuracy: "&Acc)
' Open a new tab in the browser
Call Sys.Browser("iexplore").BrowserWindow(0).Keys("^t")
Call Delay(1000)
' Open the new location in Google Maps
Call Sys.Browser("iexplore").Page("about:Tabs").ToUrl("http://maps.google.com/maps?q=loc:"&Lat&","&Longt)
End Sub ' Disable mock locations
Mobile.Device.GPS.AllowMockLocations = false
DelphiScript
function MockGPSLocation;
var Longt, Lat, Alt, Acc;
begin
Mobile.SetCurrent('Nexus 7');
// Enable GPS
Mobile.Device.GPS.GPSEnabled := true;
// Enable the "Allow mock locations" property
Mobile.Device.GPS.AllowMockLocations := true;
// Obtain current location data
Longt := Mobile.Device.GPS.Location.Longitude;
Lat := Mobile.Device.GPS.Location.Latitude;
Alt := Mobile.Device.GPS.Location.Altitude;
Acc := Mobile.Device.GPS.Location.Accuracy;
// Output the location data
Log.Message('The current device location is:');
Log.Message('Longitude: '+aqConvert.FloatToStr(Longt));
Log.Message('Latitude: '+aqConvert.FloatToStr(Lat));
Log.Message('Altitude: '+aqConvert.FloatToStr(Alt));
Log.Message('Accuracy: '+aqConvert.FloatToStr(Acc));
// Open Google Maps in the browser and pass the current coordinates as URL parameters
Browsers.Item(Browsers.btIExplorer).Run('http://maps.google.com/maps?q=loc:'+aqConvert.FloatToStr(Lat)+','+aqConvert.FloatToStr(Longt));
// Change the coordinates
Longt := Longt+0.005;
Lat := Lat+0.005;
// Specify a mock location
Mobile.Device.GPS.SetLocation(Longt,Lat,Alt,Acc);
// Output the new location data
Log.Message('The device mock location is:');
Log.Message('Longitude: '+aqConvert.FloatToStr(Longt));
Log.Message('Latitude: '+aqConvert.FloatToStr(Lat));
Log.Message('Altitude: '+aqConvert.FloatToStr(Alt));
Log.Message('Accuracy: '+aqConvert.FloatToStr(Acc));
// Open a new tab in the browser
Sys.Browser('iexplore').BrowserWindow(0).Keys('^t'); Delay(1000);
// Open the new location in Google Maps
Sys.Browser('iexplore').Page('about:Tabs').ToUrl('http://maps.google.com/maps?q=loc:'+aqConvert.FloatToStr(Lat)+','+aqConvert.FloatToStr(Longt));
// Disable mock locations
Mobile.Device.GPS.AllowMockLocations := false;
end;
C++Script, C#Script
function MockGPSLocation()
{
var Longt, Lat, Alt, Acc;
Mobile["SetCurrent"]("Nexus 7");
// Enable GPS
Mobile["Device"].GPS["GPSEnabled"] = true;
// Enable the "Allow mock locations" property
Mobile["Device"].GPS["AllowMockLocations"] = true;
// Obtain current location data
Longt = Mobile["Device"]["GPS"]["Location"]["Longitude"];
Lat = Mobile["Device"]["GPS"]["Location"]["Latitude"];
Alt = Mobile["Device"]["GPS"]["Location"]["Altitude"];
Acc = Mobile["Device"]["GPS"]["Location"]["Accuracy"];
// Output the location data
Log["Message"]("The current device location is:");
Log["Message"]("Longitude: "+Longt);
Log["Message"]("Latitude: "+Lat);
Log["Message"]("Altitude: "+Alt);
Log["Message"]("Accuracy: "+Acc);
// Open Google Maps in the browser and pass the current coordinates as URL parameters
Browsers["Item"](Browsers["btIExplorer"])["Run"]("http://maps.google.com/maps?q=loc:"+Lat+","+Longt);
// Change the coordinates
Longt = Longt+0.005;
Lat = Lat+0.005;
// Specify a mock location
Mobile["Device"]["GPS"]["SetLocation"](Longt,Lat,Alt,Acc);
// Output the new location data
Log["Message"]("The device mock location is:");
Log["Message"]("Longitude: "+Longt);
Log["Message"]("Latitude: "+Lat);
Log["Message"]("Altitude: "+Alt);
Log["Message"]("Accuracy: "+Acc);
// Open a new tab in the browser
Sys["Browser"]("iexplore")["BrowserWindow"](0)["Keys"]("^t"); Delay(1000);
// Open the new location in Google Maps
Sys["Browser"]("iexplore")["Page"]("about:Tabs")["ToUrl"]("http://maps.google.com/maps?q=loc:"+Lat+","+Longt);
// Disable mock locations
Mobile["Device"].GPS["AllowMockLocations"] = false;
}
See Also
Geolocation Testing (Legacy)
AndroidGPS Object
AndroidGPSData Object