AI-generated Key Takeaways
-
Config.GeospatialMode describes the desired behavior of the ARCore Geospatial API, which uses a combination of Google's Visual Positioning System (VPS) and GPS.
-
High accuracy poses are achieved with VPS in areas with coverage, even where GPS accuracy is low, or with GPS in outdoor environments with few obstructions.
-
Not all ARCore supported devices support the Geospatial API; device compatibility can be checked using
Session.isGeospatialModeSupportedor on the ARCore supported devices page. -
When enabled alongside the Depth API, the Geospatial API provides terrain and building geometry in Depth API output images in locations with VPS coverage.
-
The default value for Config.GeospatialMode is DISABLED; ENABLED mode requires specific permissions and library dependencies and is not compatible with the front-facing camera.
public static final enum
Config.GeospatialMode
Describes the desired behavior of the ARCore Geospatial API. The Geospatial API uses a combination of Google's Visual Positioning System (VPS) and GPS to determine the geospatial pose.
The Geospatial API is able to provide the best user experience when it is able to generate high accuracy poses. However, the Geospatial API can be used anywhere, as long as the device is able to determine its location, even if the available location information has low accuracy.
- In areas with VPS coverage, the Geospatial API is able to generate high accuracy poses.
This can work even where GPS accuracy is low, such as dense urban environments. Under
typical conditions, VPS can be expected to provide positional accuracy typically better
than 5 meters and often around 1 meter, and a rotational accuracy of better than 5
degrees. Use
Session.checkVpsAvailabilityAsync(double, double, Consumer)to determine if a given location has VPS coverage. - In outdoor environments with few or no overhead obstructions, GPS may be sufficient to generate high accuracy poses. GPS accuracy may be low in dense urban environments and indoors.
A small number of ARCore supported devices do not support the Geospatial API. Use Session.isGeospatialModeSupported(Config.GeospatialMode) to determine if the current device is
supported. Affected devices are also indicated on the ARCore supported devices page.
When the Geospatial API and the Depth API are enabled, output images from the Depth API will include terrain and building geometry when in a location with VPS coverage. See the Geospatial Depth Developer Guide for more information.
The default value is DISABLED. Use Config.setGeospatialMode(Config.GeospatialMode) to set the desired mode.
Inherited Methods
Enum Values
public static final Config.GeospatialMode DISABLED
DISABLED
public static final Config.GeospatialMode DISABLED
The Geospatial API is disabled. When a configuration with DISABLED becomes active on the Session, current Earth
and Anchor objects created from Earth.createAnchor(double, double, double, float, float, float, float) will stop updating; have their TrackingState set to
TrackingState.STOPPED; and Session.getEarth() will return null. If
re-enabled, you will need to call Session.getEarth() again to obtain a new Earth object.
public static final Config.GeospatialMode ENABLED
ENABLED
public static final Config.GeospatialMode ENABLED
The Geospatial API is enabled. Session.getEarth() will return valid Earth
objects when a configuration becomes active with this mode through Session.configure(Config).
Using this mode requires your app do the following:
- Include the
ACCESS_INTERNETpermission to the app's AndroidManifest; otherwise,Session.configure(Config)throwsSecurityException. - Include the Google Play Services Location Library as a dependency for your app. See Declare
dependencies for Google Play services for instructions on how to include this
library in your app. If this library is not linked,
Session.configure(Config)throwsGooglePlayServicesLocationLibraryNotLinkedException. - Request and be granted the Android
ACCESS_FINE_LOCATIONpermission; otherwise,Session.configure(Config)throwsFineLocationPermissionNotGrantedException.
Location is tracked only while the Session is resumed. While the Session
is paused, Earth's TrackingState will be TrackingState.PAUSED.
For more information, see documentation on the Geospatial API on Google Developers.
When the Geospatial API and the Depth API are enabled, output images from the Depth API will include terrain and building geometry when in a location with VPS coverage. See the Geospatial Depth Developer Guide for more information.
This mode is not compatible with the front-facing (selfie) camera. If Config.GeospatialMode is ENABLED on a session using the front-facing (selfie)
camera, Session.configure(Config) will throw UnsupportedConfigurationException.
Not all devices support ENABLED, use Session.isGeospatialModeSupported(Config.GeospatialMode) to check if the current device and selected camera support
enabling this mode. These checks are done in the call to Session.configure(Config).