![Page 1: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/1.jpg)
Advanced Development with ArcGIS API for
AndroidWill Crick & Archana Agarwal
Code for the Water Services app used in the sessions can be found here:
http://www.arcgis.com/home/item.html?id=6e0512016fdd4f6ab4e47b2eb64a347d
![Page 2: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/2.jpg)
What will be covered today…
• Introduction• Advanced Android concepts• ArcGIS for Android advanced concepts• Building an enterprise application
- Water engineer app- Requirements & design- Implementation and demos
• Future release plan• Questions
![Page 3: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/3.jpg)
Introduction
![Page 4: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/4.jpg)
About me, you and this session
• Me…• Archana…• You…• Session aims
- Implementation focus
![Page 5: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/5.jpg)
ArcGIS for Android [short] History
CloudCloud
EnterpriseEnterprise
LocalLocal
•• DiscoverDiscover•• CreateCreate•• ManageManage•• VisualizeVisualize•• AnalyzeAnalyze•• CollaborateCollaborate
Mobile
Desktop
Web
ArcGIS for MobileArcGIS for iOSArcGIS for Windows phoneArcGIS for Android
ArcGIS for Android:Public Beta Feb 2011Next release Q2 2011 (not beta)
![Page 6: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/6.jpg)
Android in the Enterprise
• Why Android?- Open- Almost any device- Good default behaviors- Appears to work
• Challenges- Security / Privacy
- Push Cloud-to-device- Private deployment
![Page 7: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/7.jpg)
Advanced Android concepts
![Page 8: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/8.jpg)
• Android components- Activities
- The Stack- Dialogs
- Pop ups- Code stays within the activity
- Views- Use of adapters- Replacing, hydrating
Android UI choices
ActivityActivity
ActivityActivity
ActivityActivity
![Page 9: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/9.jpg)
Activity Lifecycle
• On Create – created• On Start – B4 visible• On Resume – Top• On Pause• On Stop – not visible• On Destroy - destroyed
![Page 10: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/10.jpg)
Passing data between Activities
• Intents- Abstract operation…- Device has defaults- Pass bundle of value
pairs- Pass content provider uri
• Content Providers- URI provides access to
the data
• Global variables- Activity can be killed
• Serialize• Database
![Page 11: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/11.jpg)
The importance of the UI Thread
• Work with Views on the UI Thread• Async methods are common
- Run in other threads
• Options- AsyncTask
- Handler() – bound to creation thread- Messages & runnables
- View.runOnUiThread(new runnable(){…})
- ExecutorService
- Threads
![Page 12: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/12.jpg)
ArcGIS for Android advanced concepts
![Page 13: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/13.jpg)
More on Tasks
![Page 14: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/14.jpg)
ArcGIS Android Layer performance
• Try to minimize traffic- Requests are expensive- Processing of results cost
• Feature layer types- Snapshot- On Demand - Selection
• Dynamic map service layer- Image only- Layer definition expressions
• Combine the above- Selection mode FL & dynamic
![Page 15: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/15.jpg)
Building an enterprise application for water engineers
![Page 16: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/16.jpg)
Requirements
• Show a workers jobs for the day
• Get job information from external system
• Allow the worker to view the assets at a jobs location
• Show worker their location on the map
• Update asset condition information
• Collect/draw incident information at a location
Water engineer
High flying water engineer
![Page 17: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/17.jpg)
Application workflow
Public
Incident call center
Job management
database
Assetdatabase
Spatialdatabase
Mobile worker
Mobile worker
![Page 18: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/18.jpg)
Application design
![Page 19: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/19.jpg)
The Water Engineers Map
![Page 20: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/20.jpg)
Handling the water engineers map
• Uses a graphics layer- For showing jobs
• Other MapView properties- Set by first layer
- Coordinate system - Extent
• Map and Layer status- Are they initialized?
- Map – isLoaded()- Layer – isInitialized()
- Add event listeners- setOnStatusChangedListener()
![Page 21: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/21.jpg)
Handling map rotation
• What happens in Android?- Configuration of Activity changes
- Pause, stop, destroy – create!
• What can you do?- map.retainState()
- Saves scale, centre and layer state (not callout or graphics)- Call in onRetainNonConfigurationInstance()
- Manifest.xml configuration
<activity android:name=".WaterServiceActivity”android:label="@string/app_name" android:configChanges="orientation">
![Page 22: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/22.jpg)
Archana Agarwal
Map handling demo
![Page 23: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/23.jpg)
Integrating additional services
![Page 24: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/24.jpg)
• Web services- Retrieve water jobs
• Android services- Phone calls- Bar code scanning- GPS
- Zoom to exact location- ArcGIS for Android API provides this as LocationService
• Cloud to device messaging
Integrating additional services
![Page 25: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/25.jpg)
Using GPS LocationService
• Create LocationService- start(), stop()
• Set options- Autopan- Bearing- Symbol- Accuracy circle
![Page 26: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/26.jpg)
Archana Agarwal
GPS demo
![Page 27: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/27.jpg)
Attribute Editing
• Update asset condition• Same code as AttributeEditing sample in SDK• Uses Feature Service
- Same model as other webapis- applyEdits()
• Check field data types- Data entry- Validation
• Supports FeatureTypes & Domains- Provide drop downs (Spinners)- User experience
![Page 28: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/28.jpg)
Apply Edits method
• Aynchronous method- Callback tells success for each feature
• applyEdits(adds, deletes, updates, callback)
• Attribute updates- Graphic - only changed attributes & ID
![Page 29: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/29.jpg)
Archana Agarwal
Attribute Editing
![Page 30: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/30.jpg)
Feature Editing
• Add incident features (polygon)- Flood, landslide boundaries
• Uses a “sketch” graphics layer- Uses MapOnTouchListener
- Implements tap and drag events
• Uses feature templates & types• Inserts additional vertices • Tracks local edit history• Uses local GeometryEngine
- No server call
![Page 31: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/31.jpg)
GeometryEngine
• Local- buffer()
- clip()
- contains()
- geodesicLenth()
- getNearestCoordinate()/ver tex / vertices
- intersect()
- project()
- union()
- touches()
- within()
![Page 32: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/32.jpg)
Archana Agarwal
Feature Editing
![Page 33: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/33.jpg)
The future
• Next release- Q2 2011- Includes
- More layer types (bing/image server)
- Secure services
• Beyond- Follow ArcGIS.comm
support….- Disconnected workflows
![Page 34: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/34.jpg)
Further information
• Code for the Water Services app used in the sessions can be found here:
• http://www.arcgis.com/home/item.html?id=6e0512016fdd4f6ab4e47b2eb64a347d
• http://resources.arcgis.com/content/arcgis-android/api• [email protected]
• Web Courses- Getting Started with the ArcGIS API for Android - available in May- Creating Data Collection Applications using the ArcGIS API in
July (hopefully before UC)
• Please fill out the session review form!
![Page 35: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/35.jpg)
Questions…
• Over to you…
![Page 36: Advanced Development with ArcGIS API for Android · Advanced Development with ArcGIS API for Android Author: Esri Subject: 2011 Esri Developer Summit Workshop Keywords: 2011 Esri](https://reader030.vdocuments.us/reader030/viewer/2022040306/5ec6adb238387536650b8351/html5/thumbnails/36.jpg)