arcgis runtime sdk for android: building apps€¦ · arcgis runtime sdk for android: building...

46
ArcGIS Runtime SDK for Android : Building Apps Rama Chintapalli Xueming Wu 2018 Esri DEVSummit Conference | Palm Springs, CA

Upload: others

Post on 21-Jun-2020

32 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

ArcGIS Runtime SDK for Android : Building Apps

Rama Chintapalli

Xueming Wu

2018 Esri DEVSummit Conference | Palm Springs, CA

Page 2: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Agenda

➢Introduction

➢Developer Patterns

➢Functional Overview of SDK

➢SDK Components through Apps

➢Latest/New SDK Features

Page 3: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Building ArcGIS Android Apps

ArcGIS Navigator ArcGIS Collector ArcGIS Explorer

Page 4: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Getting Started with SDKSetup Guide

➢ Sign up for free ArcGIS Developers account

○ 50 credits a month, premium content,

○ register apps

https://developers.arcgis.com/sign-up

➢ Install Android Studio IDE

https://developer.android.com/studio

➢ Get Runtime Android SDK

○ Add dependencies in Gradle (or)

○ Download the SDK locally

https://developers.arcgis.com/android/latest/guide/install-and-set-up.htm

Page 5: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Gradle: Adding Runtime SDK Dependency

➢ Available from a Maven Repository hosted on Bintray

➢ Add Maven Repository to Project build.gradle

repositories {

maven { url 'https://esri.bintray.com/arcgis' }

}

➢ Add SDK dependency in App Module build.gradle

dependencies {

compile 'com.esri.arcgisruntime:arcgis-android:100.2.1'

}

Page 6: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Build Your First Map AppAdd Mapview to Layout

app > res > layout >activity_main.xml

Page 7: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Build Your First Map AppSet Map to MapView

Page 8: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

SDK Resources

➢ Developers site - http://developers.arcgis.com/android

○ Guide Doc

○ API Reference

○ Samples Details

➢ GitHub

○ Samples Code

http://github.com/Esri/arcgis-runtime-samples-android

○ Example Apps

https://developers.arcgis.com/example-apps/

○ You can contribute

➢ GeoNet Community

http://geonet.esri.com/community/developers/

Page 9: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Example Apps

Maps App Ecological Marine Unit Nearby Your App!

Your App Here!

Page 10: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Xueming

Developer Patterns

Page 11: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Loadable pattern

➢A pattern of loading resources metadata asynchronously

○ Layers, Maps, Portal, Geodatabase, FeatureTable, Tasks etc

○ Remote services, disk I/O, or data processing

➢Formalizes and enhances the behaviors

➢Referred as “loadable”

➢Provides a generic API across different types of classes

➢Implements “Loadable” interface

Page 12: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Loadable pattern

➢Loadable is async

○ LoadStatus

○ LoadError

○ Can retry or cancel loading

○ Listeners

○ Supports chaining of loading

Page 13: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Loadable pattern

➢loadAsync()

➢getLoadStatus()

○ Not_LOADED

○ LOADING

○ LOADED

○ FAIL_TO_LOAD

➢getLoadError()

➢addDoneLoadingListener()

Page 14: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

ListenableFuture pattern

➢Asynchronous methods use ListenableFuture

○ A promise to return a result

○ Add done listener, or call get (blocking)

➢Simplify asynchronous programming

○ Executes operations on background threads

○ Standard pattern for errors

Page 15: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

ListenableFuture pattern

➢Future is a proxy or wrapper

around an object that is not there

yet

➢geocodeFuture

○ Returns future GeocodeResult

○ The promise that a GeocodeResult

will be available in the future

○ Retrieve it with geocodeFuture.get()

Page 16: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

ListenableList pattern

➢Bind to data

➢Listener to know when content changes

➢Implemented on

○ GraphicsOverlay.getGraphics()

○ LayerList (getOperationalLayers(), getBaseLayers())

○ SublayerList

○ BookmarkList

○ Surface.ElevationSourceList

○ DistanceCompositeSceneSymbol.RangeCollection

Page 17: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

ListenableList pattern

➢Add Graphic to GraphicsOverlay

Page 18: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Rama

Functional Overview - SDK

Page 19: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Functional Overview of SDKView Components

SceneViewMapView

GeoView

ArcGISMap ArcGISScene

GraphicsOverlay

Grid (MapView)

AttributionText

Callout

LocationDisplay

Magnifier

SketchEditor

ViewGroup

(android)

Page 20: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Functional Overview of SDK ...Model (Map/Scene) Components and their Source

FeatureLayer

ArcGISMap

ArcGISScene

Layers /

Tables

ArcGISTiledLayer

ArcGISVectorTiledLayer

ArcGISMapImageLayer

RasterLayer

WebTiledLayer

MobileMapPackage

(Local)

Webmap

(Service)

WebScene

(Service) WMSLayer

WMTSLayer

BingMapsLayer

ENCLayer

OpenSteetMapLayer

ServiceFeatureTable

GeodatabaseFeatureTable

ShapefileFeatureTable

GeoPackageFeatureTable

ArcGISSceneLayerArcGIS Pro/Desktop

ArcGIS Online ArcGIS Entreprise OGC/ Third Party

Page 21: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Functional Overview of SDK ...Tasks & Other Components

Map

Scene

Layer

LocatorTask

(Geocode)

RouteTask

(Network Analysis)

GeodatabaseSyncTask

(Geodatabase)

OfflineMapTask

OfflineMapSyncTask

ExportTileCacheTask

ExportVectorTileCacheTask

GeoprocessingTask

Portal

Security

Geometry

Symbols

Page 22: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

SDK Components

Page 23: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Demo

Maps Apphttps://github.com/Esri/maps-app-android

Page 24: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Maps AppSDK Features

➢Map/MapView

➢Portal & Authentication - OAuth

➢Please search

○ Place suggestion

○ Geocoding

○ Reverse Geocoding

➢Routing

➢Graphic & GraphicsOverlay

Page 25: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Map/MapView

➢Content and presentation are separated

➢ArcGISMap defines content

○ Composed of basemap and operational layers

○ Loadable

○ Listeners - DoneLoading, LoadStatusChanged, BasemapChanged

○ Can be persisted as a webmap

➢MapView renders map content

○ Extends GeoView (android.view.ViewGroup)

○ Control visible extent of map using Viewpoint

○ Control Magnifier, SketchEditor, ViewInset, WrapAoundMode

○ Listeners

■ DrawStatusChanged, LayerViewStateChanged, and etc

■ MapRotationChanged, MapScaleChanged

Page 26: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Layer

➢Visualize, analyse, query, edit data

➢Renderer, visibility and order can be controlled

➢Loadable

➢LayerContent - Sublayers, LegendInfo

➢Common properties

○ Attribution

○ Description

○ FullExtent

○ Min/MaxScale

○ Name

○ Opacity

○ SpatialReference

Page 27: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Authentication

➢AuthenticationManager

○ Manages user authentication for secured resources

○ Central place for

■ Setting an authentication challenge handler

■ Manage in-memory credential cache

■ Manage OAuth Configurations

■ Manage client/server certificates

➢DefaultAuthenticationChallengeHandler

○ UX for challenge

○ Credentials (http, token-based, client certificate)

○ Self-signed server certificate

Page 28: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

DefaultAuthenticationChallengeHandler

AuthenticationManager.setAuthenticationChallengeHanderl(

new DefaultAuthenticationChallengeHandler(context));

Page 29: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

OAuth 2.0

➢DefaultAuthenticationChallengeHandler

○ Create OAuthConfiguration

○ Add to AuthenticationManager

○ Configure DefaultOauthIntentReceiver in manifest file

➢OAuthLoginManager

➢Support social login

Page 30: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Portal API

➢A developer’s gateway to the portal information model

➢High-level, coarse-grained APIs to access, use, create, and share content

➢Key classes

○ Portal

○ PortalUser

○ PortalItem

○ PortalGroup

Page 31: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Portal Workflows

➢Access basemaps of a portal

➢Access user’s content and groups

Page 32: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Geocoding API

➢LocatorTask

○ Loadable

○ ListenableFuture

➢GeocodeParameters

➢GeocodeResult

○ List

■ DisplayLocation

■ Label

■ Score

■ Attributes

Page 33: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Routing API

➢RouteTask

○ Loadable

○ ListenableFuture

➢RouteParameters

○ Get/Add stops

➢solveAsync

○ RouteResult - List

■ Routes

■ Messages

■ Barriers

Page 34: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Demo

Mobile Data Collector( Available Soon )

Page 35: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Mobile Data Collector AppSDK Features

➢Identify

➢Reverse Geocode

➢Portal Authentication - OAuth

➢Editing ○ Connected

○ Disconnected

○ Related Tables

➢OfflineMapTask○ Take Map Offline

Page 36: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Identify

Mobile Data Collector App

➢ Perform on MapView

➢ Can identify single/multiple layers

Page 37: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Editing

Mobile Data Collector App

➢ Connected

○ ServiceFeatureTable

○ ApplyEdits

➢ Disconnected

○ GeodatabaseFeatureTable

➢ ArcGISFeatureTable is the Base Class

➢ Related Features

○ Query methods on ArcGISFeatureTable

Page 38: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

OfflineMapTask & OfflineMapSyncTask

Mobile Data Collector App

➢OfflineMapTask

○ Tiled Layer should have Export Tiles enabled

○ Feature Layer should have sync enabled

○ Methods to generate offline map

■ Also supports Preplanned Workflows

➢OfflineMapSyncTask

○ Synchronize Offline Map

➢Generated Offline Map is a MobileMapPackage

Page 39: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Demo

Viewshed Locationhttps://github.com/Esri/arcgis-runtime-

samples-android/tree/master/java/viewshed-

location

Page 40: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Viewshed Location sampleSDK Features

➢Scene/ScenView

➢ArcGISSceneLayer

➢ArcGISTiledElevationSource

➢AnalysisOverlay

➢Viewshed

➢LocationViewshed

Page 41: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Scene/SceneView

➢Content and presentation are separated

➢ArcGISScene defines content

○ Composed of basemap and operational layers

○ ArcGISSceneLayer - 3D features

○ Surface layers - elevation information

○ Loadable

➢SceneView renders scene data

○ Extends GeoView (android.view.ViewGroup)

○ Navigate scene using Camera

○ AnalysisOverlay - dynamic visualization of analysis result

Page 42: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Scene/SceneView

Page 43: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Analysis and AnalysisOverlay

➢Analysis defines analyses

○ LightOfSight, Viewshed and more to come

○ Can be added to AnalysisOverlay

➢AnalysisOverlayer visualize analyses

○ Control visibilities of Analysis

Page 44: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

What’s New

➢OGC○ GeoPackages

○ WMSLayer

➢3D○ Analysis

■ Line Of Sight

■ Viewshed

➢Shapefile

➢ENC Layer

➢Geodatabase○ Transactional Editing

➢OfflineMap○ Preplanned Workflows

➢MobileMapPackages○ Raster Datasets

○ Tile Packages

Page 45: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Agenda

➢Introduction

➢Developer Patterns

➢Functional Overview of SDK

➢SDK Components through Apps

➢Latest/New SDK Features

Page 46: ArcGIS Runtime SDK for Android: Building Apps€¦ · ArcGIS Runtime SDK for Android: Building Apps, 2018 Esri Developer Summit Palm Springs -- Presentation, 2018 Esri Developer Summit

Thank You

Please take our survey on the Esri Events App!