BMW Connected für Android Mobile Forum Stuttgart 2013 17.05.2013 Matthias Habermann iteratec GmbH
iteratec Unternehmenskennzahlen Geschäftsführung Gegründet Niederlassungen Umsatz 2012 Mitarbeiter 05/2013 180 Klaus Eberhardt, Mark Goerke, Inge Hanschke Juli 1996 als GmbH München, Frankfurt, Hamburg Stuttgart, Wien, Zürich 17,5 Mio. mit Ø 158 Mitarbeitern 2
iteratec Kompetenzbereiche IT-Strategien Audits IT-Governance Prozessmanagement Enterprise Architecture Management Demand Management IT-Management- Beratung u.a. EAM-Methodik, iteraplan Technologieberatung Best Practices Durchführung von IT-Projekten Professionelles SW-Engineering Konzeption Realisierung Qualitätssicherung Projektmanagement Evaluierung von Technologien Technische Reviews Softwarearchitekturentwurf Coaching Qualitätssicherung 3
Agenda Projektkontext Kundenfunktionen Connected Library Connected App Infrastruktur 4
Worum geht es? BMW Apps für Connected Drive: Ziel: Anbindung von Smartphones an das Fahrzeug BMW Connected: Smartphone-Apps, die über das Fahrzeug-HMI bedienbare Applikationen enthalten Für ios verfügbar seit 2010 (MINI) bzw. 2011 (BMW) Für Android angekündigt für Juli 2013 (BMW) 5
BMW Apps für Connected Drive Übersicht 6
Vergleich mit nativen Head Unit Applikationen Auf der Head Unit laufende Dienste/Applikationen Langer Lebenszyklus Applikationen müssen vor Produktionsbeginn final sein Updates und Bugfixes schwierig bis unmöglich Herstellerspezifische Lösungen Nicht nachträglich änderbare Kundenfunktionen Smartphone Apps Kurze Time-To-Market Updates und Bugfixes leicht verteilbar (App Stores) Große Entwicklerbasis Nachträglich änderbare und erweiterbare Kundenfunktionen 7
Systemarchitektur HU Android HMI News 3rd Party App Connected Library BMW Connected.. Faceb. News Connected Library Connected Core Platform USB Platform 8
Systemarchitektur HU Android HMI Android Library Projekt News Ermöglicht die Implementierung von Kundenfunktionen 3rd Party App Connected Library BMW Connected.. Faceb. News Connected Library Connected Core Platform USB Platform 9
Projektumfang On-board Plattform (in der Head Unit) Android Connected Core Connected Library Connected App Portierung von Connected App (ios) Kundenfunktionen Tooling Dokumentation API-Dokumentation, Developers Guide usw. 10
Agenda Projektkontext Kundenfunktionen Connected Library Connected App Infrastruktur 11
Kundenfunktionen (Initial geplant) News Calendar Facebook WikiLocal Audioplayer 12
Kundenfunktion News (1/2) 13
Kundenfunktion News (2/2) 14
Kundenfunktion Facebook (1/2) 15
Kundenfunktion Facebook (2/2) 16
Agenda Projektkontext Kundenfunktionen Connected Library Connected App Infrastruktur 17
Connected Library Connected Library zur Entwicklung und Anbindung von Kundenfunktionen Leicht verständliches API Vollständige Dokumentation Orientierung an Android Design Patterns Bietet Zugriff auf Fahrzeugdienste Audio Management Bordnetzsignale 18
Connected Library HMI ist aufgebaut aus Tafeln (sog. States) CarActivity als programmatische Repräsentation einer Tafel Callback-Methoden für Lifecycle Events wie z.b. onstart() Zugriff auf Widgets: CarButton button = (CarButton) findwidgetbyid(carr.components.button1); button.setonclicklistener(new OnClickListener() { @Override public void onclick(carbutton button) { // perform some actions } }); Starten einer anderen CarActivity von einer CarActivity aus: startcaractivity(examplecaractivity.class, new Bundle()); startcaractivityforresult(examplecaractivity.class, 0, new Bundle()); 19
Connected Library Zum Vergleich: Android Activity Lifecycle 20 Quelle: http://developer.android.com/reference/android/app/activity.html
Connected Library CarActivity Lifecycle 21
Connected Library Fahrzeugdienste Beispiel CarDataManager (Bordnetzsignale) Der CarDataManager dient dem lesenden Zugriff auf Bordnetzsignale wie z.b. Geschwindigkeit Abfrage synchron oder asynchron möglich CarDataManager cdm = getcarapplication().getservice(carcontext.car_data_service); DrivingActualSpeed speed = (DrivingActualSpeed) cdm.getvalue(cardata.driving.speed_actual); cdm.addlistener(cardata.driving.speed_actual, 1000, new CarDataEventListener() { }); @Override public void oncardatachanged(cardataevent event) { DrivingActualSpeed speed = (DrivingActualSpeed) event.value; } 22
Agenda Projektkontext Kundenfunktionen Connected Library Connected App Infrastruktur 23
Connected App Herausforderungen Kategorisierung nach mehreren Dimensionen Märkte Marken Komplexe Projektstruktur Nutzung von Android Library Projekten 24
Connected App (1/2) Screenshots BMW Connected (aktueller Stand) 25
Connected App (2/2) Screenshots BMW Connected (aktueller Stand) 26
Agenda Projektkontext Kundenfunktionen Connected Library Connected App Infrastruktur 27
Infrastruktur Entwicklungsumgebung: Eclipse Versionsverwaltung: Git Buildserver: Jenkins Reviewsystem: Gerrit Codeanalyse: Sonar 28
Lessons learned
Kontakt iteratec Matthias Habermann matthias.habermann@iteratec.de +49 89 614551 820 iteratec GmbH Inselkammerstr. 4 82008 München-Unterhaching www.iteratec.de @iteratec BMW Group Edmund Korres edmund.korres@bmw.de +49 89 382 21137 BMW Group Max-Diamand-Str. 25 80937 München www.bmwgroup.com 30