SlideShare a Scribd company logo
Jabber Guest – Android
SDK Live Coding Tutorial
Robert Tyler, Software Engineer
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
•  What we will / won’t cover
•  Requirements
•  Overview of the Jabber Guest for Android SDK
•  South Beach Bank App Demo
•  Four different app development options
•  Summary and Resources
Agenda
2
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
What we will / won’t cover
•  We will cover
•  Jabber Guest for Android hierarchy / high-level overview
•  Some (not all) sample code from today’s app
•  All sample code is provided for future download
•  We will not cover
•  Various platforms / how to install (or configure) software
•  Intro-level Android development
•  Lots of resources available for getting started with Android
•  Every Jabber Guest for Android SDK component
•  Jabber Guest for Android SDK comes with documentation and sample programs
3
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Requirements (High Level)
•  Java SE Development Kit (JDK)
•  Android IDE
•  Android Studio (https://developer.android.com/sdk/index.html)
•  Jabber Guest for Android SDK
•  10.5 version released
•  10.6 version coming soon!
•  An existing Android app
•  Or, you build one now and add Jabber Guest into it
4
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Overview of the Jabber
Guest for Android SDK
5
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Jabber Guest for Android SDK – Hierarchy
6
JabberGuestCallActivity
JabberGuestCall CallService AudioRouteManager
RenderCallbacks Log
PreviewFragment CallFragment
PreviewView
RemoteView SelfView CallBarView
KeypadView
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
What is JabberGuestCall?
•  The messenger between your app, and the Cisco Jabber Guest server
•  Also handles the media between your app, and the remote endpoint
•  Receives registered TextureView(s) from your app to display media content (frames)
•  Communicates info with your app via LocalBroadcastManager and registered
BroadcastReceiver(s)
•  New instance availability
•  Call state changes
•  Call control events
•  Call error events
•  One instance per call lifecycle
7
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
South Beach Bank App
Demo
8
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 1 –
JabberGuestCallActivity
9
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 1 - JabberGuestCallActivity
•  Simplest solution, uses pre-packaged activity
•  Manifest entry for JabberGuestCallActivity
•  Import JabberGuestCallActivity in calling class
•  Create intent to launch JabberGuestCallActivity (with proper intent extras)
•  No other SDK components that you are required to interact with
•  JabberGuestCallActivity handles this for you
•  Requires that you accept how the SDK responds to specific events during the call
lifecycle (ex. state changes, dialogs, etc.)
•  Less control over look and feel of elements in the call activity
10
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 2 – SDK
fragments
11
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 2 – SDK fragments
•  Use of Fragment Transactions to display PreviewFragment, CallFragment
•  JabberGuestCallActivity does this automatically
•  Have to decide when to show each fragment
•  Call state changes from JabberGuestCall instance
•  Or maybe you skip straight to CallFragment?
•  Still didn’t really have to know too much of the specifics of handling call
•  Most functionality still exists with SDK fragments
•  Greater layout flexibility with fragments
•  Alternative layouts with multiple fragments
•  Less control of what is shown in the fragments themselves
12
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 3 – SDK views
13
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 3 – SDK views
•  Lots more code to write with this approach
•  Custom activity for managing SDK views (and my own views)
•  Registration of a BroadcastReceiver with JabberGuestCall
•  Processing of all four notification types (new instance, state change, call control, error)
•  Invalid certificate handler
•  MPEG-LA licensing
•  Much more control of layout since we’re directly referring to views
•  We have our own layout(s) to manage however
•  Mixed approach, some views are from SDK, others are not
14
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
JabberGuestCall new instance available
•  Communicate to other interested components (views, fragments, activities)
whenever a new instance has been created and is ready for use
•  Lots of SDK components use this notification
•  When registering a BroadcastReceiver, if an instance already exists you will
receive this notification immediately
15
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
JabberGuestCall state change events
•  Intent includes ARG_CALL_STATE_VALUE intent extra
(JabberGuestCall.State)
•  GuestCallStateNotInitialized
•  GuestCallStateDisconnected
•  GuestCallStateConnecting
•  GuestCallStateConnected
•  GuestCallStateDisconnecting
16
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
JabberGuestCall call error events
•  Intent will contain two key pieces of information as intent extras
•  ARG_USER_TITLE_LABEL – Title of a dialog for this error
•  ARG_USER_MESSAGE_LABEL – Body of a dialog for this error
•  Other contained pieces of info (for debugging / diagnostic purposes)
•  ARG_CATEGORY_LABEL – numeric code categorizing the class of error
•  ARG_CODE_LABEL – numeric code categorizing any SIP-related error if applicable
•  ARG_INTERNAL_MESSAGE_LABEL – string returned by SDK for error
17
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
JabberGuestCall call control events
•  Intent includes ARG_CALL_CONTROL_EVENT_VALUE intent extra
(JabberGuestCall.CallControlEvent)
•  audioMuted, audioUnmuted
•  videoMuted, videoUnmuted
•  dtmfSent
•  streamsUpdated
•  audioRouteUpdated
•  cameraSwitched
18
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
JabberGuestCall invalid certificate handlers
•  Previously handled by SDK fragments (returned a custom dialog)
•  Not handled by individual SDK views
•  Implement an interface w/ single callback (onInvalidCertificate)
•  Call one of two functions w/ JabberGuestCall instance based on conditions
•  acceptInvalidCertificate
•  rejectInvalidCertificate
•  Choice is remembered as long as the app remains installed (for that certificate)
•  Only last registered invalid certificate handler is used by JabberGuestCall
•  Careful when using SDK fragments or SDK JabberGuestCallActivity, competing
registrations
19
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
MPEG-LA licensing
•  Jabber Guest for Android uses H.264 AVC video, requires license agreement
•  Any components that use this functionality will not start until this is accepted
•  SelfView, PreviewView
•  And containing SDK components (fragments, activities)
•  Must provide an activity context to JabberGuestCall instance prior to calling
start() or setSelfTextureView()
•  SDK will provide a dialog where this can be accepted
•  Alternatively, you can implicitly accept the license via code,
JabberGuestCall.disableVideoLicenseActivation
•  ONLY DO THIS IF YOU HAVE YOUR OWN LICENSE AGREEMENT WITH MPEG LA IN PLACE
•  Once activation completed (or disabled), will never see this popup again
20
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Logging in SDK
•  By default, SDK logs only at level android.util.Log.WARN
•  Can be manually changed to any android.util.Log.* logging level
•  Three different sub-components
•  setLogLevel – for high-level SDK logging
•  setJcfLogLevel – for logging from the native-level libraries used by the SDK
•  setCpveLogLevel – for logging from the video engine used by the SDK
•  Logs to logcat
•  Careful with the level…
21
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 4 – No SDK
views, fragments, or
activities
22
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Option 4 – No SDK views, fragments, or activities
•  Extra calls to JabberGuestCall to register our TextureViews
•  setSelfTextureView, setRemoteTextureView
•  Optional RenderCallbacks argument, if you wanted to use your own custom views
23
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Summary and Resources
24
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Summary
•  Four ways to use Jabber Guest for Android SDK
•  JabberGuestCallActivity
•  Custom activity with SDK fragments
•  Custom activity with SDK views
•  Custom activity, no SDK views, fragments, or activities
•  Approach varies based on amount of flexibility and customization
25
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Resources
•  Code from this presentation
•  Included as a sample app with Jabber Guest for Android SDK (as of version 10.6)
•  DevNet
•  Developer Guide -
https://developer.cisco.com/site/jabber-guestsdk/documents/android-developer-guide/
•  API / Javadoc -
https://developer.cisco.com/site/jabber-guestsdk/documents/android-api/
•  Release notes -
https://developer.cisco.com/site/jabber-guestsdk/documents/release-notes/android/
26
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID
Resources
•  Early Adopter Program
•  Here at Customer Connection Program Kiosk, Collaboration area
•  Free swag…
•  Registering later
•  Go to Cisco Customer Connection Program (CCP) public page: www.cisco.com/go/ccp
•  If you are already a CCP member, login with your cisco.com (CCO) id
•  If you are not currently a CCP member, follow the instructions to join the CCP
•  Once you’ve logged in, click on the link “Go to the private member community”
•  Once you are in the Private – CCP space, click on the “Access & sign up for trials” button
•  Early Adopters and Beta Trials section of space
•  Select the Jabber trial of interest, read the requirements, and register for the trial
27
Thank you
© 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID 28
DEVNET-2011	Jabber Guest - Android SDK Live Coding Tutorial

More Related Content

PPTX
DEVNET-2010 Remote Expert Mobile Web/Android/iOS SDK Live Coding Tutorial and...
PDF
Vbrownbag container networking for real workloads
PPTX
Service Mesh - Why? How? What?
PPTX
DEVNET-1122 Integrating Cisco Collaboration into Web Apps
PPTX
Achieving DevSecOps Outcomes with Tanzu Advanced - Spanish
DOC
Balaji Resume
DOC
PPTX
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
DEVNET-2010 Remote Expert Mobile Web/Android/iOS SDK Live Coding Tutorial and...
Vbrownbag container networking for real workloads
Service Mesh - Why? How? What?
DEVNET-1122 Integrating Cisco Collaboration into Web Apps
Achieving DevSecOps Outcomes with Tanzu Advanced - Spanish
Balaji Resume
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura

What's hot (20)

PDF
Modern Application Configuration in Kubernetes
PPTX
Show and Tell: Building Applications on Cisco Open SDN Controller
PPTX
Microservice Pattern Launguage
PDF
Patterns of evolution from monolith to microservices
PDF
Going Serverless Using the Spring Framework Ecosystem
PDF
Comparison of Current Service Mesh Architectures
PPTX
Introduction to KubeSphere and its open source ecosystem
PDF
Demystifying AuthN/AuthZ Using OIDC & OAuth2
PDF
Identity Server on Azure: A Reference Architecture
PDF
Developers Are Users, Too
PDF
Kubestr browse2021.pptx
PPTX
Video production in the cloud for live streaming
PDF
Securing Your Apps & APIs in the Cloud
PPTX
Thinking about Jenkins Security
PPTX
Cloud Based Video Production and Editing
PPTX
Enabling Web Apps For DoD Security via PKI/CAC Enablement (Forge.Mil case study)
PDF
Implementing Microservices Security Patterns & Protocols with Spring
PPTX
Microservices and containers networking: Contiv, an industry leading open sou...
PPTX
Smart Card Authentication
PDF
Securing k8s With Kubernetes Goat
Modern Application Configuration in Kubernetes
Show and Tell: Building Applications on Cisco Open SDN Controller
Microservice Pattern Launguage
Patterns of evolution from monolith to microservices
Going Serverless Using the Spring Framework Ecosystem
Comparison of Current Service Mesh Architectures
Introduction to KubeSphere and its open source ecosystem
Demystifying AuthN/AuthZ Using OIDC & OAuth2
Identity Server on Azure: A Reference Architecture
Developers Are Users, Too
Kubestr browse2021.pptx
Video production in the cloud for live streaming
Securing Your Apps & APIs in the Cloud
Thinking about Jenkins Security
Cloud Based Video Production and Editing
Enabling Web Apps For DoD Security via PKI/CAC Enablement (Forge.Mil case study)
Implementing Microservices Security Patterns & Protocols with Spring
Microservices and containers networking: Contiv, an industry leading open sou...
Smart Card Authentication
Securing k8s With Kubernetes Goat
Ad

Viewers also liked (20)

PDF
Relatoio contas sgu 2
PDF
2016 09-12 Europe Biobanking Week, Vienna, Alain van Gool
PDF
Social media to Social Business
PDF
Forecasting digital in 2016
PDF
Search content VS Social content
PPTX
Trinity park church june 22 vision budget presentation
PPTX
Possible locations for my magazine
PDF
2014 12-11 Skipr99 masterclass Arnhem
PPTX
DEVNET-1115 Learning@Cisco: Developers + IT Professional: The Future of the I...
PPTX
The gnome ranger and pronto's Journey
PPTX
Patient confidentiality training
PPT
Sviesuva istorija 2 dalis
PPTX
Vaizdine metodine medziaga svietejams 8 dalis sveiki ir laimingi vaikai
PPTX
Presentation of scenes of The Descent
PDF
2016 03-17 Diesviering Maasziekenhuis, Boxmeer, Alain van Gool
PPT
Children Are The Future! We Can Do This!
PDF
2015 09-10 Health Valley meets Topsector LSH Alain van Gool
PDF
Bcvtvn q4 2013
PDF
2014 10-15 LGC Biosciences Autumn seminar Cambridge
PPT
Bad Boy Splash & Dash * ages 5 and up * Batesville AR * July 12, 2014
Relatoio contas sgu 2
2016 09-12 Europe Biobanking Week, Vienna, Alain van Gool
Social media to Social Business
Forecasting digital in 2016
Search content VS Social content
Trinity park church june 22 vision budget presentation
Possible locations for my magazine
2014 12-11 Skipr99 masterclass Arnhem
DEVNET-1115 Learning@Cisco: Developers + IT Professional: The Future of the I...
The gnome ranger and pronto's Journey
Patient confidentiality training
Sviesuva istorija 2 dalis
Vaizdine metodine medziaga svietejams 8 dalis sveiki ir laimingi vaikai
Presentation of scenes of The Descent
2016 03-17 Diesviering Maasziekenhuis, Boxmeer, Alain van Gool
Children Are The Future! We Can Do This!
2015 09-10 Health Valley meets Topsector LSH Alain van Gool
Bcvtvn q4 2013
2014 10-15 LGC Biosciences Autumn seminar Cambridge
Bad Boy Splash & Dash * ages 5 and up * Batesville AR * July 12, 2014
Ad

Similar to DEVNET-2011 Jabber Guest - Android SDK Live Coding Tutorial (20)

PDF
Nokia Qt SDK in action - Qt developer days 2010
DOC
Srikanth_PILLI_CV_latest
PDF
Aws Deployment Tools - Overview, Details, Implementation
PPTX
DEVNET-1121 Customizing Cisco Video Access for Guests
PDF
Emulators as an Emerging Best Practice for API Providers
PPTX
Barcode scanning on Android
PPTX
Gocd – Kubernetes/Nomad Continuous Deployment
PPTX
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
PPTX
Azure Integration DTAP Series, How to go from Development to Production – Par...
PPTX
CIP Developing Curator Tool Wizards
PDF
EDK_II_SW_debugger_v0.1_lj-Plugfest.pdf
PPTX
Webinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
PDF
APIsecure 2023 - For flex(ibility) sake, modernize your legacy APIs!, Topher ...
PPTX
Dependency injection presentation
PDF
Google Developer Day 2010 Japan: マーケットライセンシングを使って Android アプリケーションを守るには (トニー ...
PPTX
Azure Integration DTAP Series, How to go from Development to Production – Par...
PDF
Removing Barriers Between Dev and Ops
PDF
Cisco connect montreal 2018 saalvare md-program-xr-v2
DOCX
SachinBC_Resume
PPTX
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Nokia Qt SDK in action - Qt developer days 2010
Srikanth_PILLI_CV_latest
Aws Deployment Tools - Overview, Details, Implementation
DEVNET-1121 Customizing Cisco Video Access for Guests
Emulators as an Emerging Best Practice for API Providers
Barcode scanning on Android
Gocd – Kubernetes/Nomad Continuous Deployment
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
Azure Integration DTAP Series, How to go from Development to Production – Par...
CIP Developing Curator Tool Wizards
EDK_II_SW_debugger_v0.1_lj-Plugfest.pdf
Webinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
APIsecure 2023 - For flex(ibility) sake, modernize your legacy APIs!, Topher ...
Dependency injection presentation
Google Developer Day 2010 Japan: マーケットライセンシングを使って Android アプリケーションを守るには (トニー ...
Azure Integration DTAP Series, How to go from Development to Production – Par...
Removing Barriers Between Dev and Ops
Cisco connect montreal 2018 saalvare md-program-xr-v2
SachinBC_Resume
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891

More from Cisco DevNet (20)

PPTX
How to Contribute to Ansible
PPTX
Rome 2017: Building advanced voice assistants and chat bots
PPTX
How to Build Advanced Voice Assistants and Chatbots
PPTX
Cisco Spark and Tropo and the Programmable Web
PPTX
Device Programmability with Cisco Plug-n-Play Solution
PPTX
Building a WiFi Hotspot with NodeJS: Cisco Meraki - ExCap API
PPTX
Application Visibility and Experience through Flexible Netflow
PPTX
WAN Automation Engine API Deep Dive
PPTX
Cisco's Open Device Programmability Strategy: Open Discussion
PPTX
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
PPTX
NETCONF & YANG Enablement of Network Devices
PPTX
UCS Management APIs A Technical Deep Dive
PPTX
OpenStack Enabling DevOps
PPTX
NetDevOps for the Network Dude: How to get started with API's, Ansible and Py...
PPTX
Getting Started: Developing Tropo Applications
PPTX
Cisco Spark & Tropo API Workshop
PPTX
Coding 102 REST API Basics Using Spark
PPTX
Cisco APIs: An Interactive Assistant for the Web2Day Developer Conference
PPTX
DevNet Express - Spark & Tropo API - Lisbon May 2016
PPTX
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
How to Contribute to Ansible
Rome 2017: Building advanced voice assistants and chat bots
How to Build Advanced Voice Assistants and Chatbots
Cisco Spark and Tropo and the Programmable Web
Device Programmability with Cisco Plug-n-Play Solution
Building a WiFi Hotspot with NodeJS: Cisco Meraki - ExCap API
Application Visibility and Experience through Flexible Netflow
WAN Automation Engine API Deep Dive
Cisco's Open Device Programmability Strategy: Open Discussion
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
NETCONF & YANG Enablement of Network Devices
UCS Management APIs A Technical Deep Dive
OpenStack Enabling DevOps
NetDevOps for the Network Dude: How to get started with API's, Ansible and Py...
Getting Started: Developing Tropo Applications
Cisco Spark & Tropo API Workshop
Coding 102 REST API Basics Using Spark
Cisco APIs: An Interactive Assistant for the Web2Day Developer Conference
DevNet Express - Spark & Tropo API - Lisbon May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Approach and Philosophy of On baking technology
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
Teaching material agriculture food technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Programs and apps: productivity, graphics, security and other tools
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation_ Review paper, used for researhc scholars
Dropbox Q2 2025 Financial Results & Investor Presentation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Weekly Chronicles - August'25-Week II
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Electronic commerce courselecture one. Pdf
Spectral efficient network and resource selection model in 5G networks
The Rise and Fall of 3GPP – Time for a Sabbatical?
Review of recent advances in non-invasive hemoglobin estimation
Approach and Philosophy of On baking technology
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Per capita expenditure prediction using model stacking based on satellite ima...
20250228 LYD VKU AI Blended-Learning.pptx
Teaching material agriculture food technology

DEVNET-2011 Jabber Guest - Android SDK Live Coding Tutorial

  • 1. Jabber Guest – Android SDK Live Coding Tutorial Robert Tyler, Software Engineer
  • 2. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID •  What we will / won’t cover •  Requirements •  Overview of the Jabber Guest for Android SDK •  South Beach Bank App Demo •  Four different app development options •  Summary and Resources Agenda 2
  • 3. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID What we will / won’t cover •  We will cover •  Jabber Guest for Android hierarchy / high-level overview •  Some (not all) sample code from today’s app •  All sample code is provided for future download •  We will not cover •  Various platforms / how to install (or configure) software •  Intro-level Android development •  Lots of resources available for getting started with Android •  Every Jabber Guest for Android SDK component •  Jabber Guest for Android SDK comes with documentation and sample programs 3
  • 4. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Requirements (High Level) •  Java SE Development Kit (JDK) •  Android IDE •  Android Studio (https://developer.android.com/sdk/index.html) •  Jabber Guest for Android SDK •  10.5 version released •  10.6 version coming soon! •  An existing Android app •  Or, you build one now and add Jabber Guest into it 4
  • 5. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Overview of the Jabber Guest for Android SDK 5
  • 6. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Jabber Guest for Android SDK – Hierarchy 6 JabberGuestCallActivity JabberGuestCall CallService AudioRouteManager RenderCallbacks Log PreviewFragment CallFragment PreviewView RemoteView SelfView CallBarView KeypadView
  • 7. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID What is JabberGuestCall? •  The messenger between your app, and the Cisco Jabber Guest server •  Also handles the media between your app, and the remote endpoint •  Receives registered TextureView(s) from your app to display media content (frames) •  Communicates info with your app via LocalBroadcastManager and registered BroadcastReceiver(s) •  New instance availability •  Call state changes •  Call control events •  Call error events •  One instance per call lifecycle 7
  • 8. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID South Beach Bank App Demo 8
  • 9. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 1 – JabberGuestCallActivity 9
  • 10. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 1 - JabberGuestCallActivity •  Simplest solution, uses pre-packaged activity •  Manifest entry for JabberGuestCallActivity •  Import JabberGuestCallActivity in calling class •  Create intent to launch JabberGuestCallActivity (with proper intent extras) •  No other SDK components that you are required to interact with •  JabberGuestCallActivity handles this for you •  Requires that you accept how the SDK responds to specific events during the call lifecycle (ex. state changes, dialogs, etc.) •  Less control over look and feel of elements in the call activity 10
  • 11. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 2 – SDK fragments 11
  • 12. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 2 – SDK fragments •  Use of Fragment Transactions to display PreviewFragment, CallFragment •  JabberGuestCallActivity does this automatically •  Have to decide when to show each fragment •  Call state changes from JabberGuestCall instance •  Or maybe you skip straight to CallFragment? •  Still didn’t really have to know too much of the specifics of handling call •  Most functionality still exists with SDK fragments •  Greater layout flexibility with fragments •  Alternative layouts with multiple fragments •  Less control of what is shown in the fragments themselves 12
  • 13. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 3 – SDK views 13
  • 14. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 3 – SDK views •  Lots more code to write with this approach •  Custom activity for managing SDK views (and my own views) •  Registration of a BroadcastReceiver with JabberGuestCall •  Processing of all four notification types (new instance, state change, call control, error) •  Invalid certificate handler •  MPEG-LA licensing •  Much more control of layout since we’re directly referring to views •  We have our own layout(s) to manage however •  Mixed approach, some views are from SDK, others are not 14
  • 15. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID JabberGuestCall new instance available •  Communicate to other interested components (views, fragments, activities) whenever a new instance has been created and is ready for use •  Lots of SDK components use this notification •  When registering a BroadcastReceiver, if an instance already exists you will receive this notification immediately 15
  • 16. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID JabberGuestCall state change events •  Intent includes ARG_CALL_STATE_VALUE intent extra (JabberGuestCall.State) •  GuestCallStateNotInitialized •  GuestCallStateDisconnected •  GuestCallStateConnecting •  GuestCallStateConnected •  GuestCallStateDisconnecting 16
  • 17. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID JabberGuestCall call error events •  Intent will contain two key pieces of information as intent extras •  ARG_USER_TITLE_LABEL – Title of a dialog for this error •  ARG_USER_MESSAGE_LABEL – Body of a dialog for this error •  Other contained pieces of info (for debugging / diagnostic purposes) •  ARG_CATEGORY_LABEL – numeric code categorizing the class of error •  ARG_CODE_LABEL – numeric code categorizing any SIP-related error if applicable •  ARG_INTERNAL_MESSAGE_LABEL – string returned by SDK for error 17
  • 18. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID JabberGuestCall call control events •  Intent includes ARG_CALL_CONTROL_EVENT_VALUE intent extra (JabberGuestCall.CallControlEvent) •  audioMuted, audioUnmuted •  videoMuted, videoUnmuted •  dtmfSent •  streamsUpdated •  audioRouteUpdated •  cameraSwitched 18
  • 19. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID JabberGuestCall invalid certificate handlers •  Previously handled by SDK fragments (returned a custom dialog) •  Not handled by individual SDK views •  Implement an interface w/ single callback (onInvalidCertificate) •  Call one of two functions w/ JabberGuestCall instance based on conditions •  acceptInvalidCertificate •  rejectInvalidCertificate •  Choice is remembered as long as the app remains installed (for that certificate) •  Only last registered invalid certificate handler is used by JabberGuestCall •  Careful when using SDK fragments or SDK JabberGuestCallActivity, competing registrations 19
  • 20. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID MPEG-LA licensing •  Jabber Guest for Android uses H.264 AVC video, requires license agreement •  Any components that use this functionality will not start until this is accepted •  SelfView, PreviewView •  And containing SDK components (fragments, activities) •  Must provide an activity context to JabberGuestCall instance prior to calling start() or setSelfTextureView() •  SDK will provide a dialog where this can be accepted •  Alternatively, you can implicitly accept the license via code, JabberGuestCall.disableVideoLicenseActivation •  ONLY DO THIS IF YOU HAVE YOUR OWN LICENSE AGREEMENT WITH MPEG LA IN PLACE •  Once activation completed (or disabled), will never see this popup again 20
  • 21. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Logging in SDK •  By default, SDK logs only at level android.util.Log.WARN •  Can be manually changed to any android.util.Log.* logging level •  Three different sub-components •  setLogLevel – for high-level SDK logging •  setJcfLogLevel – for logging from the native-level libraries used by the SDK •  setCpveLogLevel – for logging from the video engine used by the SDK •  Logs to logcat •  Careful with the level… 21
  • 22. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 4 – No SDK views, fragments, or activities 22
  • 23. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Option 4 – No SDK views, fragments, or activities •  Extra calls to JabberGuestCall to register our TextureViews •  setSelfTextureView, setRemoteTextureView •  Optional RenderCallbacks argument, if you wanted to use your own custom views 23
  • 24. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Summary and Resources 24
  • 25. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Summary •  Four ways to use Jabber Guest for Android SDK •  JabberGuestCallActivity •  Custom activity with SDK fragments •  Custom activity with SDK views •  Custom activity, no SDK views, fragments, or activities •  Approach varies based on amount of flexibility and customization 25
  • 26. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Resources •  Code from this presentation •  Included as a sample app with Jabber Guest for Android SDK (as of version 10.6) •  DevNet •  Developer Guide - https://developer.cisco.com/site/jabber-guestsdk/documents/android-developer-guide/ •  API / Javadoc - https://developer.cisco.com/site/jabber-guestsdk/documents/android-api/ •  Release notes - https://developer.cisco.com/site/jabber-guestsdk/documents/release-notes/android/ 26
  • 27. © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID Resources •  Early Adopter Program •  Here at Customer Connection Program Kiosk, Collaboration area •  Free swag… •  Registering later •  Go to Cisco Customer Connection Program (CCP) public page: www.cisco.com/go/ccp •  If you are already a CCP member, login with your cisco.com (CCO) id •  If you are not currently a CCP member, follow the instructions to join the CCP •  Once you’ve logged in, click on the link “Go to the private member community” •  Once you are in the Private – CCP space, click on the “Access & sign up for trials” button •  Early Adopters and Beta Trials section of space •  Select the Jabber trial of interest, read the requirements, and register for the trial 27
  • 28. Thank you © 2015 Cisco and/or its affiliates. All rights reserved. Cisco PublicPresentation ID 28