arcgis runtime sdk for android: building apps · -tooling –debugging, instant apps templates,...

37
ArcGIS Runtime SDK for Android: Building Apps Shelly Gill

Upload: others

Post on 23-Mar-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

ArcGIS Runtime SDK for AndroidBuilding Apps

Shelly Gill

bull Getting started

bull API

- Android Runtime SDK patterns

- Common functions workflows

bull The Android platform

Agenda

bull Other sessions covered Runtime SDK generally An Introduction to the API and Architecture Building 3D Applications Working with Maps Online and Offline

With a tutorial gradle or samples

Getting started

Getting started with the SDK

1 Sign up for free Developers testing account

- 50 credits a month premium content register apps test tokens

2 Install free Android Studio IDE

- httpdeveloperandroidcomsdk

3 Get dependencies automatically with Gradle and try it out

- Write an app

New developers - Follow first map app tutorial

bull Developers site gt Android gt Guide

- httpdevelopersarcgiscomandroidlatestguide

- Help topics

bull Getting started gt Develop your first map app

bull Step-by-step guide

bull Or try Dev Labs

- 8 so far

- httpsdevelopersarcgiscomlabsdevelopindexhtmlandroid

Existing developers - clone samples or example apps

bull GitHub

- httpsgithubcomEsri

bull API samples

- Java and adding Kotlin

- httpgithubcomEsriarcgis-runtime-samples-android

bull Example apps

bull Clonecheckoutdownload import and run

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 2: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

bull Getting started

bull API

- Android Runtime SDK patterns

- Common functions workflows

bull The Android platform

Agenda

bull Other sessions covered Runtime SDK generally An Introduction to the API and Architecture Building 3D Applications Working with Maps Online and Offline

With a tutorial gradle or samples

Getting started

Getting started with the SDK

1 Sign up for free Developers testing account

- 50 credits a month premium content register apps test tokens

2 Install free Android Studio IDE

- httpdeveloperandroidcomsdk

3 Get dependencies automatically with Gradle and try it out

- Write an app

New developers - Follow first map app tutorial

bull Developers site gt Android gt Guide

- httpdevelopersarcgiscomandroidlatestguide

- Help topics

bull Getting started gt Develop your first map app

bull Step-by-step guide

bull Or try Dev Labs

- 8 so far

- httpsdevelopersarcgiscomlabsdevelopindexhtmlandroid

Existing developers - clone samples or example apps

bull GitHub

- httpsgithubcomEsri

bull API samples

- Java and adding Kotlin

- httpgithubcomEsriarcgis-runtime-samples-android

bull Example apps

bull Clonecheckoutdownload import and run

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 3: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

With a tutorial gradle or samples

Getting started

Getting started with the SDK

1 Sign up for free Developers testing account

- 50 credits a month premium content register apps test tokens

2 Install free Android Studio IDE

- httpdeveloperandroidcomsdk

3 Get dependencies automatically with Gradle and try it out

- Write an app

New developers - Follow first map app tutorial

bull Developers site gt Android gt Guide

- httpdevelopersarcgiscomandroidlatestguide

- Help topics

bull Getting started gt Develop your first map app

bull Step-by-step guide

bull Or try Dev Labs

- 8 so far

- httpsdevelopersarcgiscomlabsdevelopindexhtmlandroid

Existing developers - clone samples or example apps

bull GitHub

- httpsgithubcomEsri

bull API samples

- Java and adding Kotlin

- httpgithubcomEsriarcgis-runtime-samples-android

bull Example apps

bull Clonecheckoutdownload import and run

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 4: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Getting started with the SDK

1 Sign up for free Developers testing account

- 50 credits a month premium content register apps test tokens

2 Install free Android Studio IDE

- httpdeveloperandroidcomsdk

3 Get dependencies automatically with Gradle and try it out

- Write an app

New developers - Follow first map app tutorial

bull Developers site gt Android gt Guide

- httpdevelopersarcgiscomandroidlatestguide

- Help topics

bull Getting started gt Develop your first map app

bull Step-by-step guide

bull Or try Dev Labs

- 8 so far

- httpsdevelopersarcgiscomlabsdevelopindexhtmlandroid

Existing developers - clone samples or example apps

bull GitHub

- httpsgithubcomEsri

bull API samples

- Java and adding Kotlin

- httpgithubcomEsriarcgis-runtime-samples-android

bull Example apps

bull Clonecheckoutdownload import and run

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 5: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

New developers - Follow first map app tutorial

bull Developers site gt Android gt Guide

- httpdevelopersarcgiscomandroidlatestguide

- Help topics

bull Getting started gt Develop your first map app

bull Step-by-step guide

bull Or try Dev Labs

- 8 so far

- httpsdevelopersarcgiscomlabsdevelopindexhtmlandroid

Existing developers - clone samples or example apps

bull GitHub

- httpsgithubcomEsri

bull API samples

- Java and adding Kotlin

- httpgithubcomEsriarcgis-runtime-samples-android

bull Example apps

bull Clonecheckoutdownload import and run

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 6: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Existing developers - clone samples or example apps

bull GitHub

- httpsgithubcomEsri

bull API samples

- Java and adding Kotlin

- httpgithubcomEsriarcgis-runtime-samples-android

bull Example apps

bull Clonecheckoutdownload import and run

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 7: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Existing apps - add AAR dependency

bull Maven repository hosted by Bintray

- AARs of current and previous releases

bull Project buildgradle

repositories

maven

url httpsesribintraycomarcgis

bull App module buildgradle

dependencies

compile comesriarcgisruntimearcgis-android10010

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 8: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

SDK resources

bull Developers site

- httpdevelopersarcgiscomandroid

- Doc ndash guide API Reference

- Downloadable SDK

- Application support

bull GitHub for samples and example apps

bull GeoNet user communities

- httpgeonetesricomcommunitydevelopersnative-app-developersarcgis-runtime-sdk-for-android

- httpscommunityesricomgroupsarcgis-example-apps

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 9: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Example apps

bull Real world apps based on use cases collected from users

bull Complete working apps with detailed instructions forgetting started

bull Supporting documentation

- code data creation app workflows customization

bull Open sourced on GitHub (Apache 20 license)

bull Current Android apps

- Maps App Ecological Marine Units Nearby Places Offline Mapbook

bull Future apps

- Mobile data collection Situational awareness

- Vote at httpscommunityesricompolls2636

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 10: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Functionality

bull Build apps for Android devices

bull Visualize geographic data ndash maps scenes layers graphics

- feature dynamic tiled raster hellip

bull Identify features query data and display info pop-ups

bull Share maps and content across ArcGIS platform

bull Offline maps data routing geocoding

bull Powerful analysis and local geometric operations

httpsdevelopersarcgiscomandroidlatestguideessential-vocabularyhtm

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 11: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

API

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 12: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

ListenableFuture pattern

bull Asynchronous methods use ListenableFuture

- Inherits from java Future interface

- A promise to return a result

- Add done listener or call get (blocking)

bull Can simplify asynchronous programming

- Done called back on UI thread if listener added on UI thread

- We take care of executing operations on background threads

- Standard pattern for cancellation errors

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 13: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Sample ndash identify-graphics-hittest

ListenableFuture

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 14: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Get future ListenableFutureltBooleangt = mMapViewsetViewpointAsync(firstViewpoint 3)

Add done listenerbooleanListenableFutureaddDoneListener(new Runnable()

Overridepublic void run()

try get result of the futureif (MainActivitythisbooleanListenableFutureget())

Proceed with morehellipmMapViewsetViewpointAsync(secondViewpoint 3)

catch (InterruptedException ie)

user interrupted the operation catch (ExecutionException ee)

a problem with executing the call or returning result

)

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 15: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

ListenableList pattern

bull Bind to data

bull Add listener to know when content changes

- Adds and removes

bull Implemented on

- Graphics in a GraphicsOverlay

- LayerList (operational base reference layers)

- Sublayers in SublayerList

- Bookmarks

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 16: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

bull Loadable resources

- Maps layers portal item geodatabase hellip

bull Does not use ListenableFuture

- Specific pattern for load errors

- Has additional states

- Can reload if failed

bull Loads dependent loadables

Loadable pattern ndash Java implementation

bull httpsdevelopersarcgiscomandroidlatestguideloadable-patternhtm

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 17: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Map and MapView

bull Content and presentation are separated

bull ArcGISMap - separate class that defines content

- Listenable lists of Layer Bookmark

- MapView references ArcGISMap

- Open a map or build in code modify save to portal

bull MapView extends androidviewViewGroup

- GraphicsOverlay(s) LocationDisplay hellip

- Control visible extent of ArcGISMap using Viewpoints

Dont forget andoidpermissionINTERNET for any online layers basemaps portals etc

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 18: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Scene and SceneView

bull New in Android at v1001

bull ArcGISScene ndash content

- SceneView references ArcGISScene

- Basemap ElevationSurface Layers hellip

- Build in code

bull SceneView extends androidviewViewGroup

- Control view using Viewpoints and Cameras

bull Currently requires OpenGL20

- Covers all devices connecting to Google Play

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 19: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

CodeDisplay a sceneAdd elevation surfaceAdd a scene layer

Scene and layer

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 20: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

create a scene and add a basemap to itArcGISScene scene = new ArcGISScene()scenesetBasemap(BasemapcreateImagery())

mSceneView = findViewById(RidsceneView)mSceneViewsetScene(scene)

create an elevation source and add this to the base surface of the sceneArcGISTiledElevationSource elevationSource =

new ArcGISTiledElevationSource(getResources()getString(Rstringelevation_source))scenegetBaseSurface()getElevationSources()add(elevationSource)

add a scene service to the scene for viewing buildingsArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(

getResources()getString(Rstringbuildings_service))scenegetOperationalLayers()add(sceneLayer)

add a camera and initial camera positionCamera camera = new Camera(48378 -4494 200 345 65 0)mSceneViewsetViewpointCamera(camera)

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 21: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Display device location

bull Uses Android platform location providers

- GPS and network location if enabled

bull Customizable appearance

bull AutoPan behavior ndash pan rotate

- Navigation (car)

- CompassNavigation (waypoint)

- Recenter (no rotation)

bull LocationDisplay

- MapViewgetLocationDisplay()

- LocationDisplaystartAsync()

Only Position

Positionamp Heading

Positionamp Course

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 22: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

LocationDisplay top tips

bull Donrsquot forget

- androidpermissionACCESS_COARSE_LOCATION +

- androidpermissionACCESS_FINE_LOCATION

bull User interactive navigation cancels auto-pan

- MapViewaddNavigationChangedListener ndash when isNavigating returns to false re-set the AutoPanMode

- Or disable interactive navigationhellip

bull User interactive navigation can also change scale

- Again can use addNavigationChangedListener and re-set map scale if required

bull Can create own LocationDataSource if required

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 23: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Handling touch on the map

bull Default navigation gestures

- Swipe to pan

- Double-tap = zoom in two-finger-tap = zoom out

- Pinch to zoom and rotate

- Tap and hold then swipe updown for continuous zoom

bull Change interactive navigation by creating custom touch listener

- Inherit from DefaultMapViewOnTouchListener

- Implement ViewOnTouchListener

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 24: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Sample ndash identify-graphics-hittest

Handling gestures

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 25: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Integration with the ArcGIS Platform using Portal API

bull Portal

- Connection to ArcGIS Online or an on-premises Portal

- Authenticated and anonymous access

bull PortalUser

- Current authenticated user or other users

bull PortalItem

- Represent any item type

- Create update delete items and PortalFolders

- Share publicly organization or PortalGroup

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 26: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

MobileMapPackage

bull Provide offline maps so users can be productive when network connectivity is poor or nonexistent

bull MobileMapPackage class

- maps layers data locators transportation networks

bull Desktop pattern

- Create MMPK in Pro

bull Services pattern

- Use OfflineMapTask

ArcGIS Runtime SDKs Working with Maps Online and Offline

2pm - B 07 - B 08

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 27: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Offline Mapbook Example App

Offline Mapbook Example App

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 28: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Authentication ndash default challenge handler

bull Cross-platform security pattern

- Challenges challenge handlers OAuth2 tokens

bull DefaultAuthenticationChallengeHandler

- Out of the box UX for challenges

- Network credential HTTP secured service Integrated Windows Authentication (IWA)

- ArcGIS Tokens proprietary token-based authentication

- PKI certificates

- Self signed certificates

bull Create own handler if required

- Implement AuthenticationChallengeHandler

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 29: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Security pattern ndash OAuth 20

bull Used by ArcGIS Online

bull OAuthConfiguration

- Provides challenge handling specifically for OAuth

- Uses default Android browser app to display login UX

bull Set this up

- Create Application - Developers site account

- Set DefaultAuthenticationChallengeHandler

- Create OAuthConfiguration

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 30: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Maps App example app

bull AuthenticationManager

bull DefaultAuthenticationChallengeHandler

bull OAuthConfiguration

Authentication code

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 31: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Android Platform

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 32: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Android Platform

bull Runtime SDK supports minimum Android API 16 (ldquoJelly Beanrdquo Android 41)

defaultConfig minSdkVersion 16

bull No need for separate JDK

bull What about your deployments

- API 16 (Jelly Bean)

- API 19 (Kit Kat)

- API 24 Nougat or forward

Android platforms connections toGoogle Play store 2nd Oct 2017

Nougat + Oreo

Marshmallow

Lollipop

KitKat

Jelly Bean

Older

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 33: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Android Studio 3

bull Significant update to Android Studio

- IDE - Parameter hints semantic highlighting

- Tooling ndash Debugging Instant Apps templates Android Profiler new gradle plugin + optimizations

bull Release Candidate 2 ndash Oct 19th Final released last night

bull Java 8 language features as standard

bull Migrate projects forward from 233 release

bull Supports Kotlin

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 34: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

bull New official language

- Interoperable with Java Java standard types

- Open source by JetBrains - httpkotlinlangorgdocsreference

bull Modern language features

- Null safetynullable types default parameter values

- Lambdas inferred properties higher order functions + function types auto-casting

bull Support in Runtime SDK

- Migrating samples

- Future plans for documentation

- Example apps

- ask at httpscommunityesricomgroupsarcgis-example-appscontentfilterID=contentstatus5Bpublished5D~objecttype~objecttype5Bthread5D

Kotlin

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 35: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

bull Free to get going

- Android Studio

- Free Developers account for testing

- ArcGIS Runtime SDK for Android

bull Runtime SDK support for wide range of functionality and workflows

bull GeoNet ndash questions discussions suggestions

bull Feedback in the conference app

In conclusion

Thank You to Our Generous Sponsor

Page 36: ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates, Android Profiler, new gradle plugin + optimizations •Release Candidate 2 –Oct 19th

Thank You to Our Generous Sponsor