ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates,...
Transcript of ArcGIS Runtime SDK for Android: Building Apps · -Tooling –Debugging, Instant Apps templates,...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Thank You to Our Generous Sponsor