SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
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?

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Kürzlich hochgeladen (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

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