SlideShare a Scribd company logo
1 of 21
Download to read offline
Dev fest Android
application - case study
       Daniele Bottillo
       GDG Bologna
Indice
● l'applicazione

● da dove siamo partiti

● che cosa abbiamo fatto

● come l'abbiamo fatto

● i problemi incontrati
L'applicazione
L'applicazione
● agenda devfest

● dettaglio talk

● condivisione talk

● aggiunta talk al calendario

● lista sponsor

● about
Da dove siamo partiti
● GDG Bologna è in "partenza"

● supporto agli organizzatori

● conoscenza di Android

● hey ma un'applicazione Android per la
  devfest non esiste?

● GDG Berlin / GDG Zurich (ieri)
Requisiti / Punto di partenza
● 15-20 giorni di tempo

● lavoro notturno e nei weekend

● progettazione in pausa pranzo

● ragazze imbufalite
Punto di partenza tecnico
● non abbiamo tempo

● android 4.0

● solo smartphone

● fragment ed intent

● ragazze imbufalite
Progettazione
Progettazione

                  Main Activity                      About Activity




                  View Pager




Fragment Agenda                   Fragment Sponsor




 Fragment Talk
Progettazione
● genericità

● devfest è ciclica

● progetto android dev-fest

● progetto android dev-fest-2012

● libreria android
Android Library

● progetto non compila più!

● creare riferimento alla libreria

● override

● strings.xml
Sviluppo
● nuovo progetto Eclipse

● Build SDK: Android 4.1 (API 16)

● Minimum Required SDK: Android 4.0 (API
  14)

● android compatibility package
Sviluppo - Agenda
      ● viewpager

      ● fragment

      ● custom adapter
        (section list)

      ● no images!
Sviluppo - Dettaglio Talk
         ● dialog fragment

         ● images!

         ● intent per condivisione

         ● intent per aggiunta a
           calendario
Sviluppo - Intent condivisione
Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_TEXT,
talk.getTitle()+" - "+talk.getSpeaker());

startActivity(Intent.createChooser(intent, app.
getResources().getString(R.string.
title_sharing_dialog)));
Sviluppo - Intent calendario
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setData(Events.CONTENT_URI)

.putExtra(CalendarContract.
EXTRA_EVENT_BEGIN_TIME, talk.getStart().
getTimeInMillis())

.putExtra(CalendarContract.
EXTRA_EVENT_END_TIME, talk.getEnd().
getTimeInMillis())

.putExtra(Events.TITLE, talk.getTitle())
.putExtra(Events.EVENT_LOCATION,
 talk.getPlace())
Sviluppo - Libreria

             android-devfest-2012                                 android-devfest




          json               strings.xml                          List Fragment




                               Class jsonRaw = R.raw.class;
<string-array name="fest">
  <item>Firenze</item>
                               Field field = jsonRaw.
  <item>Sicilia</item>
                               getField(fest[0].toLowerCase());
</string-array>
                               InputStream is = activity.getResources().
                               openRawResource(field.getInt(null));
Sviluppo - NFC




String url = "https://play.google.com/store/apps/details?id=org.gdgbologna.devfest2012";
byte[] payload = url.getBytes();

NdefRecord ndefRecord = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI,
payload, new byte[0], payload);

mNdefPushMessage = new NdefMessage(new NdefRecord[] { ndefRecord });

mNfcAdapter.setNdefPushMessage(mNdefPushMessage, this);
Problemi incontrati
● intent calendario
  ○ +1 per i nexus
  ○ insulti per HTC, SAMSUNG, etc..

● fragment
  ○ bellissima idea
  ○ portano via tempo...
  ○ gestione ciclo di vita e viewpager
Riferimenti
● http://code.google.com/p/android-devfest/

● http://code.google.com/p/android-devfest-
  2012/

● http://www.gdg-bologna.org/ (in
  terminazione)

● GDG Bologna - Google +
Fine
● Daniele Bottillo
  ○ www.danielebottillo.com
  ○ twitter: cribcaged7

More Related Content

Similar to Dev fest android application case study

Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniOpen Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniVendini-Italy
 
Android base day1
Android base day1Android base day1
Android base day1Andrea Zaza
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...jekil
 
Android Widget @ whymca 2011
Android Widget @ whymca 2011Android Widget @ whymca 2011
Android Widget @ whymca 2011Fabio Collini
 
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressEnrico Zimuel
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
 
Come implementare la governance nella vostra piattaforma e lavorare felici se...
Come implementare la governance nella vostra piattaforma e lavorare felici se...Come implementare la governance nella vostra piattaforma e lavorare felici se...
Come implementare la governance nella vostra piattaforma e lavorare felici se...Giulio Vian
 
Introduzione a React Native - Alessandro Giannini
Introduzione a React Native - Alessandro GianniniIntroduzione a React Native - Alessandro Giannini
Introduzione a React Native - Alessandro GianniniDeveler S.R.L.
 
Corso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloud
Corso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloudCorso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloud
Corso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloudPierfranco Ravotto
 
Job opportunities in_google_emea
Job opportunities in_google_emeaJob opportunities in_google_emea
Job opportunities in_google_emeafirenze-gtug
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Ivan Gualandri
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Regione Toscana - Introdution to R Software
Regione Toscana - Introdution to R SoftwareRegione Toscana - Introdution to R Software
Regione Toscana - Introdution to R SoftwareOmar Giorgetti
 
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalDay
 

Similar to Dev fest android application case study (20)

Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioniOpen Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
 
Android base day1
Android base day1Android base day1
Android base day1
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
 
Android Widget @ whymca 2011
Android Widget @ whymca 2011Android Widget @ whymca 2011
Android Widget @ whymca 2011
 
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in Wordpress
 
Linuxday2013
Linuxday2013 Linuxday2013
Linuxday2013
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 
I package Android
I package AndroidI package Android
I package Android
 
Come implementare la governance nella vostra piattaforma e lavorare felici se...
Come implementare la governance nella vostra piattaforma e lavorare felici se...Come implementare la governance nella vostra piattaforma e lavorare felici se...
Come implementare la governance nella vostra piattaforma e lavorare felici se...
 
Introduzione a React Native - Alessandro Giannini
Introduzione a React Native - Alessandro GianniniIntroduzione a React Native - Alessandro Giannini
Introduzione a React Native - Alessandro Giannini
 
Corso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloud
Corso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloudCorso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloud
Corso Segreterie Crema - Incontro1: Archiviazione e condivisione nel cloud
 
Job opportunities in_google_emea
Job opportunities in_google_emeaJob opportunities in_google_emea
Job opportunities in_google_emea
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2
 
Go on AppEngine
Go on AppEngineGo on AppEngine
Go on AppEngine
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Regione Toscana - Introdution to R Software
Regione Toscana - Introdution to R SoftwareRegione Toscana - Introdution to R Software
Regione Toscana - Introdution to R Software
 
Startup weekend bootcamp
Startup weekend bootcampStartup weekend bootcamp
Startup weekend bootcamp
 
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
 

More from firenze-gtug

Html5 apps - GWT oriented
Html5 apps - GWT orientedHtml5 apps - GWT oriented
Html5 apps - GWT orientedfirenze-gtug
 
Android ndk - ottimizzazione su dispositivi Intel
Android ndk - ottimizzazione su dispositivi IntelAndroid ndk - ottimizzazione su dispositivi Intel
Android ndk - ottimizzazione su dispositivi Intelfirenze-gtug
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosifirenze-gtug
 
Youtube broadcast live - Massimiliano D'Ambrosio
Youtube broadcast live - Massimiliano D'AmbrosioYoutube broadcast live - Massimiliano D'Ambrosio
Youtube broadcast live - Massimiliano D'Ambrosiofirenze-gtug
 
Intro BeagleBone Black - Massimiliano D'Ambrosio
Intro BeagleBone Black - Massimiliano D'AmbrosioIntro BeagleBone Black - Massimiliano D'Ambrosio
Intro BeagleBone Black - Massimiliano D'Ambrosiofirenze-gtug
 
Arduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'AmbrosioArduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'Ambrosiofirenze-gtug
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugianifirenze-gtug
 
RFID: What & Why - Stefano Coluccini
RFID: What & Why - Stefano ColucciniRFID: What & Why - Stefano Coluccini
RFID: What & Why - Stefano Coluccinifirenze-gtug
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)firenze-gtug
 
Presentazione Google App Engine
Presentazione Google App EnginePresentazione Google App Engine
Presentazione Google App Enginefirenze-gtug
 
Android chat in the cloud
Android chat in the cloudAndroid chat in the cloud
Android chat in the cloudfirenze-gtug
 
Clean android code
Clean android codeClean android code
Clean android codefirenze-gtug
 
Intel ndk - a few Benchmarks
Intel ndk - a few BenchmarksIntel ndk - a few Benchmarks
Intel ndk - a few Benchmarksfirenze-gtug
 
EE Incremental Store
EE Incremental StoreEE Incremental Store
EE Incremental Storefirenze-gtug
 
Programming objects with android
Programming objects with androidProgramming objects with android
Programming objects with androidfirenze-gtug
 
Apertura "Mobile & Embedded" - 13 febbraio 2014
Apertura "Mobile & Embedded" - 13 febbraio 2014Apertura "Mobile & Embedded" - 13 febbraio 2014
Apertura "Mobile & Embedded" - 13 febbraio 2014firenze-gtug
 
Maven from dummies
Maven from dummiesMaven from dummies
Maven from dummiesfirenze-gtug
 
google drive and the google drive sdk
google drive and the google drive sdkgoogle drive and the google drive sdk
google drive and the google drive sdkfirenze-gtug
 

More from firenze-gtug (20)

Html5 apps - GWT oriented
Html5 apps - GWT orientedHtml5 apps - GWT oriented
Html5 apps - GWT oriented
 
Android ndk - ottimizzazione su dispositivi Intel
Android ndk - ottimizzazione su dispositivi IntelAndroid ndk - ottimizzazione su dispositivi Intel
Android ndk - ottimizzazione su dispositivi Intel
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosi
 
Youtube broadcast live - Massimiliano D'Ambrosio
Youtube broadcast live - Massimiliano D'AmbrosioYoutube broadcast live - Massimiliano D'Ambrosio
Youtube broadcast live - Massimiliano D'Ambrosio
 
Intro BeagleBone Black - Massimiliano D'Ambrosio
Intro BeagleBone Black - Massimiliano D'AmbrosioIntro BeagleBone Black - Massimiliano D'Ambrosio
Intro BeagleBone Black - Massimiliano D'Ambrosio
 
Arduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'AmbrosioArduino - Massimiliano D'Ambrosio
Arduino - Massimiliano D'Ambrosio
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
RFID: What & Why - Stefano Coluccini
RFID: What & Why - Stefano ColucciniRFID: What & Why - Stefano Coluccini
RFID: What & Why - Stefano Coluccini
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Presentazione Google App Engine
Presentazione Google App EnginePresentazione Google App Engine
Presentazione Google App Engine
 
Android chat in the cloud
Android chat in the cloudAndroid chat in the cloud
Android chat in the cloud
 
Clean android code
Clean android codeClean android code
Clean android code
 
#Html2Native
#Html2Native#Html2Native
#Html2Native
 
Intel ndk - a few Benchmarks
Intel ndk - a few BenchmarksIntel ndk - a few Benchmarks
Intel ndk - a few Benchmarks
 
EE Incremental Store
EE Incremental StoreEE Incremental Store
EE Incremental Store
 
Programming objects with android
Programming objects with androidProgramming objects with android
Programming objects with android
 
Apertura "Mobile & Embedded" - 13 febbraio 2014
Apertura "Mobile & Embedded" - 13 febbraio 2014Apertura "Mobile & Embedded" - 13 febbraio 2014
Apertura "Mobile & Embedded" - 13 febbraio 2014
 
Maven from dummies
Maven from dummiesMaven from dummies
Maven from dummies
 
Apps fuel oct2012
Apps fuel oct2012Apps fuel oct2012
Apps fuel oct2012
 
google drive and the google drive sdk
google drive and the google drive sdkgoogle drive and the google drive sdk
google drive and the google drive sdk
 

Dev fest android application case study

  • 1. Dev fest Android application - case study Daniele Bottillo GDG Bologna
  • 2. Indice ● l'applicazione ● da dove siamo partiti ● che cosa abbiamo fatto ● come l'abbiamo fatto ● i problemi incontrati
  • 4. L'applicazione ● agenda devfest ● dettaglio talk ● condivisione talk ● aggiunta talk al calendario ● lista sponsor ● about
  • 5. Da dove siamo partiti ● GDG Bologna è in "partenza" ● supporto agli organizzatori ● conoscenza di Android ● hey ma un'applicazione Android per la devfest non esiste? ● GDG Berlin / GDG Zurich (ieri)
  • 6. Requisiti / Punto di partenza ● 15-20 giorni di tempo ● lavoro notturno e nei weekend ● progettazione in pausa pranzo ● ragazze imbufalite
  • 7. Punto di partenza tecnico ● non abbiamo tempo ● android 4.0 ● solo smartphone ● fragment ed intent ● ragazze imbufalite
  • 9. Progettazione Main Activity About Activity View Pager Fragment Agenda Fragment Sponsor Fragment Talk
  • 10. Progettazione ● genericità ● devfest è ciclica ● progetto android dev-fest ● progetto android dev-fest-2012 ● libreria android
  • 11. Android Library ● progetto non compila più! ● creare riferimento alla libreria ● override ● strings.xml
  • 12. Sviluppo ● nuovo progetto Eclipse ● Build SDK: Android 4.1 (API 16) ● Minimum Required SDK: Android 4.0 (API 14) ● android compatibility package
  • 13. Sviluppo - Agenda ● viewpager ● fragment ● custom adapter (section list) ● no images!
  • 14. Sviluppo - Dettaglio Talk ● dialog fragment ● images! ● intent per condivisione ● intent per aggiunta a calendario
  • 15. Sviluppo - Intent condivisione Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, talk.getTitle()+" - "+talk.getSpeaker()); startActivity(Intent.createChooser(intent, app. getResources().getString(R.string. title_sharing_dialog)));
  • 16. Sviluppo - Intent calendario Intent intent = new Intent(Intent.ACTION_EDIT); intent.setData(Events.CONTENT_URI) .putExtra(CalendarContract. EXTRA_EVENT_BEGIN_TIME, talk.getStart(). getTimeInMillis()) .putExtra(CalendarContract. EXTRA_EVENT_END_TIME, talk.getEnd(). getTimeInMillis()) .putExtra(Events.TITLE, talk.getTitle()) .putExtra(Events.EVENT_LOCATION, talk.getPlace())
  • 17. Sviluppo - Libreria android-devfest-2012 android-devfest json strings.xml List Fragment Class jsonRaw = R.raw.class; <string-array name="fest"> <item>Firenze</item> Field field = jsonRaw. <item>Sicilia</item> getField(fest[0].toLowerCase()); </string-array> InputStream is = activity.getResources(). openRawResource(field.getInt(null));
  • 18. Sviluppo - NFC String url = "https://play.google.com/store/apps/details?id=org.gdgbologna.devfest2012"; byte[] payload = url.getBytes(); NdefRecord ndefRecord = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, payload, new byte[0], payload); mNdefPushMessage = new NdefMessage(new NdefRecord[] { ndefRecord }); mNfcAdapter.setNdefPushMessage(mNdefPushMessage, this);
  • 19. Problemi incontrati ● intent calendario ○ +1 per i nexus ○ insulti per HTC, SAMSUNG, etc.. ● fragment ○ bellissima idea ○ portano via tempo... ○ gestione ciclo di vita e viewpager
  • 20. Riferimenti ● http://code.google.com/p/android-devfest/ ● http://code.google.com/p/android-devfest- 2012/ ● http://www.gdg-bologna.org/ (in terminazione) ● GDG Bologna - Google +
  • 21. Fine ● Daniele Bottillo ○ www.danielebottillo.com ○ twitter: cribcaged7