SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Automotive quality for mobile products
Stefan Dunca, Ernest Czol
GARMIN, 06.03.2013
Outline
o NAVIGON Mobile Navigator
o Hybrid Android Application (Native & Java)
o Development Tools & Helpers
o Challenges
o Performance for low end devices
o Developing aids for such complex project
o Flexibility & scalability
o Android platform segmentation
Application coverage
Variaty of features
 Support for
xxhdpi
 Amazon shop
 Glympse and
Foursquare
integration
 Urban
Guidance
Hybrid approach: Java GUI & C++ core
Core Components (C++)
Router Name
Browser
Advisor Map
Drawer
Traffic
TMC …
JNI
GPS
Accelerometer
Tilt
Connected
Services
Mobile Navigator Starting Point
• Initially designed for
automotive
• Simple interfaces for
fast development
• Reduce client side
development effort
• Knowledge
sharing/reusing
between platforms
• Brought automotive
quality to mobile
Content Data
Core Library
Core API
Custom HMI
OS
Reality View
Tunnels &
Bridges
Performance gain by using native approach
• Complex algorithms
• Complex routing
support
• Hardware accelerated
drawing
• TTS House
number info
Sound data
POI
• Huge content size
• Data compression and
optimization
• Efficiently pre-compiled
data format
Country info
3D Data
Terrain
elevation
Street
lines
Cross platform core
C++
Core release distribution
• Cmake
• Compiler independent
• Same build scripts
• Just different compiler paths
• Jenkins as build server
• Excellent platform independent build server system
• Support for OS independent nodes:
• Linux
• Windows
Native Core Integration
• JNI mapping
• Existing native API
• Core API hooks
• C++ classes to Objects
• Allows us to implement RPC protocol
Core Components (C++)
Router Name
Browser
Advisor Map
Drawer
Traffic
TMC …
JNI
RPC over Core API
• Remote calls to Core code via a custom RPC
over TCP/IP.
• Light binary protocol
• Application is in control
• Act as separation layer between C++ core and
Android native Java implementation
• Can record for issue replays
• Replay using desktop dev-tool
Java HMI – single process architecture
Java Proxy
Implementation
Core Server
Core Library
Core Server
Stream IO
JNI
API (Java)
Java HMI
API
Java Proxy
translates HMI
function calls into a
data stream which
is passed to a
single JNI function.
Core Server Library
decodes HMI function
calls.
Similar architecture also valid
with C# and COM on other
platforms
• C++ remote implementation of interfaces
that acts as a proxy to the actual
implementation
Core Library multi process architecture
Core Proxy Library
Server Application
Core Library &
actual
implementation
Core Server
Stream IO
Core Proxy
Stream IO
TCP/IP
HMI
API
API
API
Core Proxy interacts between HMI and
Core to separate the HMI process from
main process.
Proxy encodes
HMI function calls.
Core Server decodes
HMI function calls.
Java HMI – multi process architecture
Java Proxy
(Package)
Native Core Library
Core Library
Core Server
Stream IO
JNI
Java HMI
Java Server
Application
TCP/IP
Actual API
implementation
API (Java)
Java Proxy
translates HMI
function calls into a
data stream which
is passed to
JavaServer
Application via
TCP/IP.
Java Server
Application passes the
data stream to JNI.
Similar architecture also valid with C#
and COM on other platforms
Logging mode
Log Player
Application
Core Native
Library
Core Server
Stream IO
Log Player
Core API
File IO
Playback of HMI calls
binary log-file.
Application with
Core logging
enabled
Core Native
Library
Core Server
Stream IO
Core proxy
Core API
File IO
Recording of HMI calls
to binary log-file
considering relative
time-stamps.
HMI
API
3D City Models & Landmarks
Open Gl ES
• Replaced software rendering
• Better user experience
• Advantages:
• Increase drawing performance
• Already tested on other platforms
• Immersion into the city landscape
• Disadvantages:
• Opengl ES 2 for better texture filtering
• Small issues encountered on the way
Open GL integration challenges
• GlEs1.0 have limitations
• GlEs2.0 is available only from 2.2
• NativeActivity only from 2.3
• Native drawing thread
• Sync needed between Java side and native side
• Device specific issues
• Some have Open GL emulation
• Some have bad support
Software vs OpenGL
Android Challenges
• Supporting the full range of screen sizes
• Same code base, same APK
• ldpi, mdpi, hdpi, xhdpi, xxhdpi
• small, normal, large, extra large
Android Challenges
• Supporting the full range of screen sizes
• Same code base, same APK
• ldpi, mdpi, hdpi, xhdpi, xxhdpi
• small, normal, large, extra large
Android Challenges
• Supporting the full range of screen sizes
• Same code base, same APK
• ldpi, mdpi, hdpi, xhdpi, xxhdpi
• small, normal, large, extra large
Android Challenges
• Supporting the full range of screen sizes
• Same code base, same APK
• ldpi, mdpi, hdpi, xhdpi, xxhdpi
• small, normal, large, extra large
Android Challenges
• Supporting the full range of screen sizes
• Same code base, same APK
• ldpi, mdpi, hdpi, xhdpi, xxhdpi
• small, normal, large, extra large
Android Challenges
• Supporting the full range of screen sizes
• Same code base, same APK
• ldpi, mdpi, hdpi, xhdpi, xxhdpi
• small, normal, large, extra large
Android Challenges
• Reduce APK size
• Requested by device manufacturers and operators
• Solutions:
• Download image resource set from content server
• Using LruCache for faster image loading
• (introduced in API 12, but added to Android Support library)
// Get max available VM memory
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
// Get max available VM memory
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// Use 1/5th of the available memory for this memory cache.
final int cacheSize = maxMemory / 5;
Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
// Get max available VM memory
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// Use 1/5th of the available memory for this memory cache.
final int cacheSize = maxMemory / 5;
LruCache<String, Bitmap> mMemoryCache =
new LruCache<String,Bitmap>(cacheSize);
Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
// Get max available VM memory
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// Use 1/5th of the available memory for this memory cache.
final int cacheSize = maxMemory / 5;
LruCache<String, Bitmap> mMemoryCache =
new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// The cache size will be measured in kilobytes rather than
// number of items.
return bitmap.getByteCount() / 1024;
}
};
Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Thank you!
Q?

Más contenido relacionado

La actualidad más candente

Hybrid App Development with PhoneGap
Hybrid App Development with PhoneGapHybrid App Development with PhoneGap
Hybrid App Development with PhoneGapDotitude
 
Qt - for stack overflow developer conference
Qt - for stack overflow developer conferenceQt - for stack overflow developer conference
Qt - for stack overflow developer conferenceNokia
 
Flash Iphone Fitc 2010
Flash Iphone Fitc 2010Flash Iphone Fitc 2010
Flash Iphone Fitc 2010Yagiz Gurgul
 
TiConf.eu -- Titanium Developer Conference in Europe, 2013
TiConf.eu -- Titanium Developer Conference in Europe, 2013TiConf.eu -- Titanium Developer Conference in Europe, 2013
TiConf.eu -- Titanium Developer Conference in Europe, 2013Jeff Haynie
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDKIntel® Software
 
Mobile Architecture Comparison
Mobile Architecture ComparisonMobile Architecture Comparison
Mobile Architecture ComparisonJonathan Bender
 

La actualidad más candente (10)

Hybrid App Development with PhoneGap
Hybrid App Development with PhoneGapHybrid App Development with PhoneGap
Hybrid App Development with PhoneGap
 
Qt - for stack overflow developer conference
Qt - for stack overflow developer conferenceQt - for stack overflow developer conference
Qt - for stack overflow developer conference
 
Tcdnug xamarin
Tcdnug xamarinTcdnug xamarin
Tcdnug xamarin
 
INTEL XDK
INTEL XDKINTEL XDK
INTEL XDK
 
Flash Iphone Fitc 2010
Flash Iphone Fitc 2010Flash Iphone Fitc 2010
Flash Iphone Fitc 2010
 
TiConf.eu -- Titanium Developer Conference in Europe, 2013
TiConf.eu -- Titanium Developer Conference in Europe, 2013TiConf.eu -- Titanium Developer Conference in Europe, 2013
TiConf.eu -- Titanium Developer Conference in Europe, 2013
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDK
 
Mobile Architecture Comparison
Mobile Architecture ComparisonMobile Architecture Comparison
Mobile Architecture Comparison
 
Eclipse Way
Eclipse WayEclipse Way
Eclipse Way
 
Dreambox caMip
Dreambox caMipDreambox caMip
Dreambox caMip
 

Destacado

Heizer om10 ch05-designh good and services
Heizer om10 ch05-designh good and servicesHeizer om10 ch05-designh good and services
Heizer om10 ch05-designh good and servicesRozaimi Mohd Saad
 
Android industrial mobility
Android industrial mobility Android industrial mobility
Android industrial mobility Droidcon Berlin
 
Droidcon de 2014 google cast
Droidcon de 2014   google castDroidcon de 2014   google cast
Droidcon de 2014 google castDroidcon Berlin
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limitsDroidcon Berlin
 

Destacado (8)

Heizer om10 ch05-designh good and services
Heizer om10 ch05-designh good and servicesHeizer om10 ch05-designh good and services
Heizer om10 ch05-designh good and services
 
Yes we can
Yes we canYes we can
Yes we can
 
Details matter in ux
Details matter in uxDetails matter in ux
Details matter in ux
 
Android industrial mobility
Android industrial mobility Android industrial mobility
Android industrial mobility
 
crashing in style
crashing in stylecrashing in style
crashing in style
 
Droidcon de 2014 google cast
Droidcon de 2014   google castDroidcon de 2014   google cast
Droidcon de 2014 google cast
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limits
 
Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 

Similar a Droidcon 2013 automotive quality dunca_czol_garmin

Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...IndicThreads
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache CordovaIvano Malavolta
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application FrameworkYong Heui Cho
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instrumentsIvano Malavolta
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected DevelopmentJim McKeeth
 
Turku2017 recentdevelopments
Turku2017 recentdevelopmentsTurku2017 recentdevelopments
Turku2017 recentdevelopmentsAndrew Crabb
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Androidnatdefreitas
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform libraryKostis Dadamis
 
Android – As a tool of innovation
Android – As a tool of innovation Android – As a tool of innovation
Android – As a tool of innovation Pallab Sarkar
 
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformVisual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformStefano Ottaviani
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkToby Corbin
 
Generating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving PerformanceGenerating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving PerformanceParesh Mayani
 
What's New, Hot, & Awesome for Xamarin Developers!
What's New, Hot, & Awesome for Xamarin Developers!What's New, Hot, & Awesome for Xamarin Developers!
What's New, Hot, & Awesome for Xamarin Developers!James Montemagno
 
Kony one studio technical training
Kony one studio technical trainingKony one studio technical training
Kony one studio technical trainingNiranjan Kumar Reddy
 
Mobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKMobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKIntel® Software
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiTaswar Bhatti
 

Similar a Droidcon 2013 automotive quality dunca_czol_garmin (20)

Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
My androidpresentation
My androidpresentationMy androidpresentation
My androidpresentation
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application Framework
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected Development
 
Turku2017 recentdevelopments
Turku2017 recentdevelopmentsTurku2017 recentdevelopments
Turku2017 recentdevelopments
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
Android – As a tool of innovation
Android – As a tool of innovation Android – As a tool of innovation
Android – As a tool of innovation
 
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformVisual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdk
 
Generating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving PerformanceGenerating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving Performance
 
What's New, Hot, & Awesome for Xamarin Developers!
What's New, Hot, & Awesome for Xamarin Developers!What's New, Hot, & Awesome for Xamarin Developers!
What's New, Hot, & Awesome for Xamarin Developers!
 
Kony one studio technical training
Kony one studio technical trainingKony one studio technical training
Kony one studio technical training
 
Mobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKMobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDK
 
Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar Bhatti
 

Más de Droidcon Berlin

From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_backDroidcon Berlin
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86Droidcon Berlin
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building AndroidDroidcon Berlin
 
Matchinguu droidcon presentation
Matchinguu droidcon presentationMatchinguu droidcon presentation
Matchinguu droidcon presentationDroidcon Berlin
 
Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Droidcon Berlin
 
The artofcalabash peterkrauss
The artofcalabash peterkraussThe artofcalabash peterkrauss
The artofcalabash peterkraussDroidcon Berlin
 
Raesch, gries droidcon 2014
Raesch, gries   droidcon 2014Raesch, gries   droidcon 2014
Raesch, gries droidcon 2014Droidcon Berlin
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Droidcon Berlin
 
20140508 quantified self droidcon
20140508 quantified self droidcon20140508 quantified self droidcon
20140508 quantified self droidconDroidcon Berlin
 
Tuning android for low ram devices
Tuning android for low ram devicesTuning android for low ram devices
Tuning android for low ram devicesDroidcon Berlin
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradioDroidcon Berlin
 
Droidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon Berlin
 
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon Berlin
 
Droidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedekeDroidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedekeDroidcon Berlin
 
Droidcon2013 app analytics_huber_1und1
Droidcon2013  app analytics_huber_1und1Droidcon2013  app analytics_huber_1und1
Droidcon2013 app analytics_huber_1und1Droidcon Berlin
 
Droidcon2013 facebook stewart
Droidcon2013 facebook stewartDroidcon2013 facebook stewart
Droidcon2013 facebook stewartDroidcon Berlin
 
Droidcon 2013 ui smartphones tam hanna
Droidcon 2013 ui smartphones tam hannaDroidcon 2013 ui smartphones tam hanna
Droidcon 2013 ui smartphones tam hannaDroidcon Berlin
 
Droidcon 2013 connected services burrel_ford
Droidcon 2013 connected services burrel_fordDroidcon 2013 connected services burrel_ford
Droidcon 2013 connected services burrel_fordDroidcon Berlin
 

Más de Droidcon Berlin (20)

From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
 
droidparts
droidpartsdroidparts
droidparts
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
 
5 tips of monetization
5 tips of monetization5 tips of monetization
5 tips of monetization
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
 
Matchinguu droidcon presentation
Matchinguu droidcon presentationMatchinguu droidcon presentation
Matchinguu droidcon presentation
 
Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3
 
The artofcalabash peterkrauss
The artofcalabash peterkraussThe artofcalabash peterkrauss
The artofcalabash peterkrauss
 
Raesch, gries droidcon 2014
Raesch, gries   droidcon 2014Raesch, gries   droidcon 2014
Raesch, gries droidcon 2014
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014
 
20140508 quantified self droidcon
20140508 quantified self droidcon20140508 quantified self droidcon
20140508 quantified self droidcon
 
Tuning android for low ram devices
Tuning android for low ram devicesTuning android for low ram devices
Tuning android for low ram devices
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 
Droidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicro
 
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenberg
 
Droidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedekeDroidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedeke
 
Droidcon2013 app analytics_huber_1und1
Droidcon2013  app analytics_huber_1und1Droidcon2013  app analytics_huber_1und1
Droidcon2013 app analytics_huber_1und1
 
Droidcon2013 facebook stewart
Droidcon2013 facebook stewartDroidcon2013 facebook stewart
Droidcon2013 facebook stewart
 
Droidcon 2013 ui smartphones tam hanna
Droidcon 2013 ui smartphones tam hannaDroidcon 2013 ui smartphones tam hanna
Droidcon 2013 ui smartphones tam hanna
 
Droidcon 2013 connected services burrel_ford
Droidcon 2013 connected services burrel_fordDroidcon 2013 connected services burrel_ford
Droidcon 2013 connected services burrel_ford
 

Último

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 

Último (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 

Droidcon 2013 automotive quality dunca_czol_garmin

  • 1. Automotive quality for mobile products Stefan Dunca, Ernest Czol GARMIN, 06.03.2013
  • 2. Outline o NAVIGON Mobile Navigator o Hybrid Android Application (Native & Java) o Development Tools & Helpers o Challenges o Performance for low end devices o Developing aids for such complex project o Flexibility & scalability o Android platform segmentation
  • 4. Variaty of features  Support for xxhdpi  Amazon shop  Glympse and Foursquare integration  Urban Guidance
  • 5. Hybrid approach: Java GUI & C++ core Core Components (C++) Router Name Browser Advisor Map Drawer Traffic TMC … JNI GPS Accelerometer Tilt Connected Services
  • 6. Mobile Navigator Starting Point • Initially designed for automotive • Simple interfaces for fast development • Reduce client side development effort • Knowledge sharing/reusing between platforms • Brought automotive quality to mobile Content Data Core Library Core API Custom HMI OS
  • 7. Reality View Tunnels & Bridges Performance gain by using native approach • Complex algorithms • Complex routing support • Hardware accelerated drawing • TTS House number info Sound data POI • Huge content size • Data compression and optimization • Efficiently pre-compiled data format Country info 3D Data Terrain elevation Street lines
  • 9. Core release distribution • Cmake • Compiler independent • Same build scripts • Just different compiler paths • Jenkins as build server • Excellent platform independent build server system • Support for OS independent nodes: • Linux • Windows
  • 10. Native Core Integration • JNI mapping • Existing native API • Core API hooks • C++ classes to Objects • Allows us to implement RPC protocol Core Components (C++) Router Name Browser Advisor Map Drawer Traffic TMC … JNI
  • 11. RPC over Core API • Remote calls to Core code via a custom RPC over TCP/IP. • Light binary protocol • Application is in control • Act as separation layer between C++ core and Android native Java implementation • Can record for issue replays • Replay using desktop dev-tool
  • 12. Java HMI – single process architecture Java Proxy Implementation Core Server Core Library Core Server Stream IO JNI API (Java) Java HMI API Java Proxy translates HMI function calls into a data stream which is passed to a single JNI function. Core Server Library decodes HMI function calls. Similar architecture also valid with C# and COM on other platforms • C++ remote implementation of interfaces that acts as a proxy to the actual implementation
  • 13. Core Library multi process architecture Core Proxy Library Server Application Core Library & actual implementation Core Server Stream IO Core Proxy Stream IO TCP/IP HMI API API API Core Proxy interacts between HMI and Core to separate the HMI process from main process. Proxy encodes HMI function calls. Core Server decodes HMI function calls.
  • 14. Java HMI – multi process architecture Java Proxy (Package) Native Core Library Core Library Core Server Stream IO JNI Java HMI Java Server Application TCP/IP Actual API implementation API (Java) Java Proxy translates HMI function calls into a data stream which is passed to JavaServer Application via TCP/IP. Java Server Application passes the data stream to JNI. Similar architecture also valid with C# and COM on other platforms
  • 15. Logging mode Log Player Application Core Native Library Core Server Stream IO Log Player Core API File IO Playback of HMI calls binary log-file. Application with Core logging enabled Core Native Library Core Server Stream IO Core proxy Core API File IO Recording of HMI calls to binary log-file considering relative time-stamps. HMI API
  • 16. 3D City Models & Landmarks
  • 17. Open Gl ES • Replaced software rendering • Better user experience • Advantages: • Increase drawing performance • Already tested on other platforms • Immersion into the city landscape • Disadvantages: • Opengl ES 2 for better texture filtering • Small issues encountered on the way
  • 18. Open GL integration challenges • GlEs1.0 have limitations • GlEs2.0 is available only from 2.2 • NativeActivity only from 2.3 • Native drawing thread • Sync needed between Java side and native side • Device specific issues • Some have Open GL emulation • Some have bad support
  • 20. Android Challenges • Supporting the full range of screen sizes • Same code base, same APK • ldpi, mdpi, hdpi, xhdpi, xxhdpi • small, normal, large, extra large
  • 21. Android Challenges • Supporting the full range of screen sizes • Same code base, same APK • ldpi, mdpi, hdpi, xhdpi, xxhdpi • small, normal, large, extra large
  • 22. Android Challenges • Supporting the full range of screen sizes • Same code base, same APK • ldpi, mdpi, hdpi, xhdpi, xxhdpi • small, normal, large, extra large
  • 23. Android Challenges • Supporting the full range of screen sizes • Same code base, same APK • ldpi, mdpi, hdpi, xhdpi, xxhdpi • small, normal, large, extra large
  • 24. Android Challenges • Supporting the full range of screen sizes • Same code base, same APK • ldpi, mdpi, hdpi, xhdpi, xxhdpi • small, normal, large, extra large
  • 25. Android Challenges • Supporting the full range of screen sizes • Same code base, same APK • ldpi, mdpi, hdpi, xhdpi, xxhdpi • small, normal, large, extra large
  • 26. Android Challenges • Reduce APK size • Requested by device manufacturers and operators • Solutions: • Download image resource set from content server • Using LruCache for faster image loading • (introduced in API 12, but added to Android Support library)
  • 27. // Get max available VM memory final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
  • 28. // Get max available VM memory final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); // Use 1/5th of the available memory for this memory cache. final int cacheSize = maxMemory / 5; Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
  • 29. // Get max available VM memory final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); // Use 1/5th of the available memory for this memory cache. final int cacheSize = maxMemory / 5; LruCache<String, Bitmap> mMemoryCache = new LruCache<String,Bitmap>(cacheSize); Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
  • 30. // Get max available VM memory final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); // Use 1/5th of the available memory for this memory cache. final int cacheSize = maxMemory / 5; LruCache<String, Bitmap> mMemoryCache = new LruCache<String, Bitmap>(cacheSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { // The cache size will be measured in kilobytes rather than // number of items. return bitmap.getByteCount() / 1024; } }; Sample code taken from http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html