SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
Introdução ao
                         desenvolvimento em
                               Android
                               by Tiago Brito




Sunday, February 5, 12
Me

                         Tiago Brito
                         •   Software developer @ be.ubi
                         •   PHP | Symfony | Doctrine | mySQL | jQuery | git
                         •   Android programmer since 2009




Sunday, February 5, 12
Apps


                         VATChecker




Sunday, February 5, 12
Apps

                                             Dicionário

                         VATChecker




Sunday, February 5, 12
Apps

                                             Dicionário

                         VATChecker


                                                          Jogos de
                                                          Apostas




Sunday, February 5, 12
Apps

                                              Dicionário

                          VATChecker


                                                           Jogos de
                         Movies                            Apostas




Sunday, February 5, 12
Apps

                                                   Dicionário

                          VATChecker


                                                                Jogos de
                         Movies         Trânsito                Apostas




Sunday, February 5, 12
Apps

                                                            Dicionário

                          VATChecker
                                       Cultura
                                                                         Jogos de
                         Movies                  Trânsito                Apostas




Sunday, February 5, 12
Apps

                                                            Dicionário

                          VATChecker
                                       Cultura              CCilhavo
                                                                         Jogos de
                         Movies                  Trânsito                Apostas




Sunday, February 5, 12
Apps

                                                            Dicionário

                          VATChecker
                                       Cultura              CCilhavo
                                                                         Jogos de
                         Movies                  Trânsito                Apostas
                                   Horóscopo




Sunday, February 5, 12
Apps

                                                             Dicionário
                                                 Sinónimos
                          VATChecker
                                       Cultura               CCilhavo
                                                                          Jogos de
                         Movies                   Trânsito                Apostas
                                   Horóscopo




Sunday, February 5, 12
Apps

                                  Portagens                   Dicionário
                                                  Sinónimos
                          VATChecker
                                        Cultura               CCilhavo
                                                                           Jogos de
                         Movies                    Trânsito                Apostas
                                    Horóscopo




Sunday, February 5, 12
Apps
       From: xxxxx xxxx@priberam.pt
       CC: DirecçãoJurídica <DireccaoJuridica@priberam.pt>

       Bom dia,
        
       Verificámos que têm no Android Market uma aplicação que utiliza o conteúdo do Dicionário
       Priberam da Língua Portuguesa sem autorização da Priberam nem qualquer referência à
       proveniência do conteúdo.
        
       Por essa razão e porque a Priberam disponibilizou uma aplicação sua para o Android de acesso
       ao Dicionário, vimos por este meio pedir-vos que retirem a aplicação do Android Market
       imediatamente.
        
       Muito obrigado,
        
       xxx xxxxx
       Priberam




Sunday, February 5, 12
Petiscos




Sunday, February 5, 12
Trânsito




Sunday, February 5, 12
Smart-lamp
                git rep: https://github.com/casainho/smart-lamp




Sunday, February 5, 12
Smart-lamp
                git rep: https://github.com/casainho/smart-lamp




Sunday, February 5, 12
Design tips

                         •   Always try to predict the user text.
                         •   Use the default interface
                         •   New input paradigm. Fingers ≠ mouse
                         •   Size of text. Distance to computer screen ≠
                             distance to mobile device.
                         •   Visual Information




Sunday, February 5, 12
Target Your App
                               Serious




                                                content
        Entertainment                    Tool




                                Fun
                               usage
Sunday, February 5, 12
Target Your App
                               Serious




                                                content
        Entertainment                    Tool




                                Fun
                               usage
Sunday, February 5, 12
Target Your App
                                               Serious




                                                                content
                               Entertainment             Tool




                                                Fun
                                               usage




Sunday, February 5, 12
Target Your App
                                                                     Serious




                                                                                      content
                                                     Entertainment             Tool




                                                                      Fun
                               Serious Tool
                         •Productivity Type                          usage
                         •Minimal UI
                         •Create, modify, archieve




Sunday, February 5, 12
Target Your App
                               Serious




                                                content
        Entertainment                    Tool




                                Fun
                               usage
Sunday, February 5, 12
Target Your App
                                               Serious




                                                                content
                               Entertainment             Tool




                                                Fun
                                               usage




Sunday, February 5, 12
Target Your App
                                                                      Serious




                                                                                       content
                                                      Entertainment             Tool




                                                                       Fun
                                   Fun Tool
                         • Fun to use and useful                      usage
                         • Some graphically rich elements
                         • Small information hierarchy




Sunday, February 5, 12
Target Your App
                               Serious




                                                content
        Entertainment                    Tool




                                Fun
                               usage
Sunday, February 5, 12
Target Your App
                                               Serious




                                                                content
                               Entertainment             Tool




                                                Fun
                                               usage




Sunday, February 5, 12
Target Your App
                                                                Serious




                                                                                 content
                                                Entertainment             Tool




                  Serious Entertainment                          Fun
                • No Productivity
                • Educacional entertainment                     usage
                • Data driven
                   • Potentially hierarchical




Sunday, February 5, 12
Target Your App
                              Serious




                                               content
       Entertainment                    Tool




                               Fun
                               usage
Sunday, February 5, 12
Target Your App
                                               Serious




                                                                content
                               Entertainment             Tool




                                                Fun
                                               usage




Sunday, February 5, 12
Target Your App
                                                                 Serious




                                                                                  content
                                                 Entertainment             Tool




                                                                  Fun
                                   Utilities
                         • Rich Graphics                         usage
                         • Single Screen
                         • Ag in app 30 to 60s




Sunday, February 5, 12
Dalvik.equals(Java) == false

                     •   The VM runs on top of a Linux 2.6 kernel.

                     •   A tool called dx is used to convert some (but not all) Java .class
                         files into the .dex format. Multiple classes are included in a
                         single .dex file. Duplicate strings and other constants used in
                         multiple class files are included only once in the .dex output to
                         conserve space. Java bytecode is also converted into an
                         alternative instruction set used by the Dalvik VM.
                     •   JavaVM’s one can find on almost any desktop computer
                         nowadays are Stack-based Virtual Machines (VM).The DalvikVM
                         on the other hand is register based, because on mobile-
                         processors are optimized for register- based execution. Also of
                         register-based VMs allow faster execution times at the expense
                         of programs which are larger after compilation.



Sunday, February 5, 12
Dalvik.equals(Java) == false




Sunday, February 5, 12
Anatomy of an Android
                              Application

                     •    Activity
                     •    Intent Receiver
                     •    Service
                     •    Content Provider




Sunday, February 5, 12
Activity


                     •   An activity is usually a single screen in your
                         application
                     •   One activity is designated as the entry point
                         point for your application




Sunday, February 5, 12
Activity Lifecycle




Sunday, February 5, 12
Activity
               public class NotasSoltasActivity extends Activity {
              /** Called when the activity is first created. */
              @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
              }

         	     @Override
         	     protected void onDestroy() {
         	     	    // TODO Auto-generated method stub
         	     	    super.onDestroy();
         	     }

         	     @Override
         	     protected void onPause() {
         	     	    // TODO Auto-generated method stub
         	     	    super.onPause();
         	     }

         	     @Override
         	     protected void onRestart() {
         	     	    // TODO Auto-generated method stub
         	     	    super.onRestart();
         	     }

         	     @Override
         	     protected void onResume() {
         	     	    // TODO Auto-generated method stub
         	     	    super.onResume();
         	     }

         	     @Override
         	     protected void onStart() {
         	     	    // TODO Auto-generated method stub
         	     	    super.onStart();
         	     }
Sunday, February 5, 12
Service


                         A Service is code that is long-lived and runs
                         without a UI. A good example of this is a media
                         player playing songs from a play list.




Sunday, February 5, 12
Intents


                         Intents are asynchronous messages which allow
                         Android components to request functionality
                         from other components of the Android
                         system. For example an Activity can send an
                         Intents to the Android system which starts
                         another Activity.




Sunday, February 5, 12
Content Provider
                         Applications can store their data in files, a
                         SQLite database, preferences or any other
                         mechanism that makes sense. A content
                         provider, however, is useful if you want your
                         application's data to be shared with other
                         applications. A content provider is a class that
                         implements a standard set of methods to let
                         other applications store and retrieve the type
                         of data that is handled by that content
                         provider.


Sunday, February 5, 12
AndroidManifest.xml
             <manifest xmlns:android="http://schemas.android.com/apk/res/android"
               package="com.inovadoor.android.petiscos"
               android:versionCode="9"
               android:versionName="1.4.2">
            <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false">
                 <activity android:name=".Main"
                            android:label="@string/app_name" android:launchMode="singleTop" >
                     <intent-filter>
                          <action android:name="android.intent.action.MAIN" />
                          <category android:name="android.intent.category.LAUNCHER" />
                     </intent-filter>
                     <intent-filter>
                          <action android:name="android.intent.action.SEARCH" />
        	    	     	    	     <category android:name="android.intent.category.DEFAULT" />
        	    	     	    </intent-filter>	
                     <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
                 </activity>
                 <activity android:name="CategoriasListActivity" android:configChanges="orientation|keyboardHidden"></activity>
                 <activity android:name="ReceitaDetailsActivity" android:configChanges="orientation|keyboardHidden" ></activity>
                 <activity android:name="ReceitasListActivity" android:configChanges="orientation|keyboardHidden"></activity>
                 <activity android:name="SimpleReceitasListActivity" android:configChanges="orientation|keyboardHidden" ></activity>
                 <activity
                 	 android:name=".PreferencesActivity"
                 	 android:label="@string/prefsTitle" android:configChanges="orientation|keyboardHidden">
        	    	     </activity>
            </application>
            <uses-sdk android:minSdkVersion="3" />
        	    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
        	    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        	    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
        	    <supports-screens
                   android:largeScreens="true"
                   android:normalScreens="true"
                   android:smallScreens="true"
                   android:anyDensity="true" />
        </manifest>




Sunday, February 5, 12
MVC

                                 Controler




                         Model               View




Sunday, February 5, 12
Development Tools



          •       Eclipse plugin
          •       Android SDK




Sunday, February 5, 12
Development Tools
                         Emulator                                   Simulator




     The difference between emulators and simulators is that emulators mimic the software and
     hardware environments found on actual devices. Simulators, on the other hand, only mimic the
     software environment.




Sunday, February 5, 12
Project
                         MyProject/
                             src/
                                  MyActivity.java
                             res/
                                  drawable/
                                      icon.png
                                  layout/
                                      main.xml
                                      info.xml
                                  values/
                                      strings.xml
                                 values-pt/
                                     strings.xml


Sunday, February 5, 12
Common Problems




Sunday, February 5, 12
Common Problems

                  •      ANR (App Not Responding)
                         block main thread for more than 5 seconds

                  •      Manifest missing configurations




Sunday, February 5, 12
Common Problems
        Don’t block the main thread




Sunday, February 5, 12
Common Problems
        Don’t block the main thread
       public void onClick(View v) {
         new Thread(new Runnable() {
           public void run() {
             Bitmap b = loadImageFromNetwork();
             mImageView.setImageBitmap(b);
           }
         }).start();
       }




Sunday, February 5, 12
Common Problems
        Don’t block the main thread
       public void onClick(View v) {
         new Thread(new Runnable() {
           public void run() {
             Bitmap b = loadImageFromNetwork();
             mImageView.setImageBitmap(b);
           }
         }).start();
       }                 public void onClick(View v) {
                           new Thread(new Runnable() {
                             public void run() {
                               final Bitmap b = loadImageFromNetwork();
                               mImageView.post(new Runnable() {
                                 public void run() {
                                   mImageView.setImageBitmap(b);
                                 }
                               });
                             }
                           }).start();
                         }

Sunday, February 5, 12
Common Problems
   public void onClick(View v) {
     new DownloadImageTask().execute("http://example.com/image.png");
   }

   private class DownloadImageTask extends AsyncTask<String, Void,
   Bitmap> {
        protected Bitmap doInBackground(String... urls) {
            return loadImageFromNetwork(urls[0]);
        }

        protected void onPostExecute(Bitmap result) {
            mImageView.setImageBitmap(result);
        }
    }




Sunday, February 5, 12
Performance
                     •   Avoid Creating Unnecessary Objects
                     •   Avoid Internal Getters/Setters
                         In native languages like C++ it's common practice to use getters (e.g. i =
                         getCount()) instead of accessing the field directly (i = mCount). This is an
                         excellent habit for C++, because the compiler can usually inline the access,
                         and if you need to restrict or debug field access you can add the code at any
                         time.
                         On Android, this is a bad idea.Virtual method calls are expensive, much
                         more so than instance field lookups. It's reasonable to follow common
                         object-oriented programming practices and have getters and setters in the
                         public interface, but within a class you should always access fields directly.


                     •   Prefer Static Over Virtual
                         If you don't need to access an object's fields, make your method static.
                         Invocations will be about 15%-20% faster.




Sunday, February 5, 12
Performance
                     •   Use Enhanced For Loop Syntax
       static class Foo {
               int mSplat;
           }
           Foo[] mArray = ...                                       public void one() {
                                                                        int sum = 0;
               public void zero() {                                     Foo[] localArray = mArray;
                   int sum = 0;                                         int len = localArray.length;
                   for (int i = 0; i < mArray.length; ++i) {
                       sum += mArray[i].mSplat;                         for (int i = 0; i < len; ++i) {
                   }                                                        sum += localArray[i].mSplat;
               }                                                        }
                                                                    }


               public void two() {
                   int sum = 0;
                   for (Foo a : mArray) {
                       sum += a.mSplat;
                   }
               }




Sunday, February 5, 12
Performance




                         Recycler
Sunday, February 5, 12
Web app VS Native


                     •   If you are building a native app, make sure,
                         that it will be amazing.
                     •   PhoneGap - http://phonegap.com/
                         PhoneGap is an HTML5 app platform that allows you to author native
                         applications with web technologies and get access to APIs and app
                         stores. PhoneGap leverages web technologies developers already know
                         best... HTML and JavaScript.




Sunday, February 5, 12
Demo



                         This slide has been deliberately left blank




Sunday, February 5, 12
Android Market
                   •     25$ registation fee for developers
                   •     30 / 70




Sunday, February 5, 12
Android Market




Sunday, February 5, 12
Inspiration

                     •   What app should i make?
                         •   Identify a necessity
                     •   Forget Apps, build a service!
                     •   Use the out-of-the-box phone features: GPS,
                         Contact List, Google Account, Internet,
                         Accelerometer, Maps



Sunday, February 5, 12
Market




Sunday, February 5, 12
Market

             •       Right now, Portuguese market is too
                     small for mobile ads revenue.
                   •     Take advantage of Portuguese
                         language
             •       Think Global.




Sunday, February 5, 12
Market

             •       Right now, Portuguese market is too
                     small for mobile ads revenue.
                   •     Take advantage of Portuguese
                         language
             •       Think Global.




Sunday, February 5, 12
Market
      “The latest Distimo report found that just two paid
      Android apps have ever eclipsed the half-million
      milestone, while six iPhone apps did that in two months
      in April and May.”


       “Overall, 79.3 percent of all paid Android apps have
       been downloaded less than 100 times, and only 4.6
       percent of paid apps were downloaded more than
       1,000 times.”
         http://gigaom.com/2011/05/27/android-still-trails-ios-as-a-money-maker-for-devs/




Sunday, February 5, 12
Fragmentation
                              Trânsito                                                    Versão      Utilizadores
                                                                                     Android 2.3.3+             1024
                                Android 1.6 3.1 4.0
                                    Android 4.0.3
                                    Android                                          Android 2.2                 763
                           Android 1.5 Android 2.3
                                       Android 3.2
                                        Android
                                    4% 2%0%
                                          1%
                                           1%
                                            0%
                              5%                                                     Android 2.1                 500

                Android 2.1
                                                                                     Android 1.5                 123
                   19%                                                               Android 1.6                 115
                                                      Android 2.3.3+                 Android 3.1                     41
                                                          39%
                                                                                     Android 4.0.3                   27
                                                                                     Android 2.3                     14
                                                                                     Android 4.0                      8
                         Android 2.2
                            29%                                                      Android 3.2                      8




                   Android 2.3.3+            Android 2.2               Android 2.1
                   Android 1.5               Android 1.6               Android 3.1
                   Android 4.0.3             Android 2.3               Android 4.0
                   Android 3.2


Sunday, February 5, 12
Links

                     •   http://developer.android.com
                     •   https://market.android.com/publish


                     •   Dianne Hackborn
                     •   Andrew Munn
                     •   http://blog.crazybob.org/2011/12/truth-about-
                         android-ios-ui-performance.html


Sunday, February 5, 12
The end


                         Tiago Brito
                         tlfbrito@gmail.com
                         @tlfbrito




Sunday, February 5, 12

Mais conteúdo relacionado

Último

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
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

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
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
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
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

Destaque

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 

Destaque (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

Introdução ao desenvolvimento Android - Notas Soltas

  • 1. Introdução ao desenvolvimento em Android by Tiago Brito Sunday, February 5, 12
  • 2. Me Tiago Brito • Software developer @ be.ubi • PHP | Symfony | Doctrine | mySQL | jQuery | git • Android programmer since 2009 Sunday, February 5, 12
  • 3. Apps VATChecker Sunday, February 5, 12
  • 4. Apps Dicionário VATChecker Sunday, February 5, 12
  • 5. Apps Dicionário VATChecker Jogos de Apostas Sunday, February 5, 12
  • 6. Apps Dicionário VATChecker Jogos de Movies Apostas Sunday, February 5, 12
  • 7. Apps Dicionário VATChecker Jogos de Movies Trânsito Apostas Sunday, February 5, 12
  • 8. Apps Dicionário VATChecker Cultura Jogos de Movies Trânsito Apostas Sunday, February 5, 12
  • 9. Apps Dicionário VATChecker Cultura CCilhavo Jogos de Movies Trânsito Apostas Sunday, February 5, 12
  • 10. Apps Dicionário VATChecker Cultura CCilhavo Jogos de Movies Trânsito Apostas Horóscopo Sunday, February 5, 12
  • 11. Apps Dicionário Sinónimos VATChecker Cultura CCilhavo Jogos de Movies Trânsito Apostas Horóscopo Sunday, February 5, 12
  • 12. Apps Portagens Dicionário Sinónimos VATChecker Cultura CCilhavo Jogos de Movies Trânsito Apostas Horóscopo Sunday, February 5, 12
  • 13. Apps From: xxxxx xxxx@priberam.pt CC: DirecçãoJurídica <DireccaoJuridica@priberam.pt> Bom dia,   Verificámos que têm no Android Market uma aplicação que utiliza o conteúdo do Dicionário Priberam da Língua Portuguesa sem autorização da Priberam nem qualquer referência à proveniência do conteúdo.   Por essa razão e porque a Priberam disponibilizou uma aplicação sua para o Android de acesso ao Dicionário, vimos por este meio pedir-vos que retirem a aplicação do Android Market imediatamente.   Muito obrigado,   xxx xxxxx Priberam Sunday, February 5, 12
  • 16. Smart-lamp git rep: https://github.com/casainho/smart-lamp Sunday, February 5, 12
  • 17. Smart-lamp git rep: https://github.com/casainho/smart-lamp Sunday, February 5, 12
  • 18. Design tips • Always try to predict the user text. • Use the default interface • New input paradigm. Fingers ≠ mouse • Size of text. Distance to computer screen ≠ distance to mobile device. • Visual Information Sunday, February 5, 12
  • 19. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 20. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 21. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 22. Target Your App Serious content Entertainment Tool Fun Serious Tool •Productivity Type usage •Minimal UI •Create, modify, archieve Sunday, February 5, 12
  • 23. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 24. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 25. Target Your App Serious content Entertainment Tool Fun Fun Tool • Fun to use and useful usage • Some graphically rich elements • Small information hierarchy Sunday, February 5, 12
  • 26. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 27. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 28. Target Your App Serious content Entertainment Tool Serious Entertainment Fun • No Productivity • Educacional entertainment usage • Data driven • Potentially hierarchical Sunday, February 5, 12
  • 29. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 30. Target Your App Serious content Entertainment Tool Fun usage Sunday, February 5, 12
  • 31. Target Your App Serious content Entertainment Tool Fun Utilities • Rich Graphics usage • Single Screen • Ag in app 30 to 60s Sunday, February 5, 12
  • 32. Dalvik.equals(Java) == false • The VM runs on top of a Linux 2.6 kernel. • A tool called dx is used to convert some (but not all) Java .class files into the .dex format. Multiple classes are included in a single .dex file. Duplicate strings and other constants used in multiple class files are included only once in the .dex output to conserve space. Java bytecode is also converted into an alternative instruction set used by the Dalvik VM. • JavaVM’s one can find on almost any desktop computer nowadays are Stack-based Virtual Machines (VM).The DalvikVM on the other hand is register based, because on mobile- processors are optimized for register- based execution. Also of register-based VMs allow faster execution times at the expense of programs which are larger after compilation. Sunday, February 5, 12
  • 34. Anatomy of an Android Application • Activity • Intent Receiver • Service • Content Provider Sunday, February 5, 12
  • 35. Activity • An activity is usually a single screen in your application • One activity is designated as the entry point point for your application Sunday, February 5, 12
  • 37. Activity public class NotasSoltasActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); } Sunday, February 5, 12
  • 38. Service A Service is code that is long-lived and runs without a UI. A good example of this is a media player playing songs from a play list. Sunday, February 5, 12
  • 39. Intents Intents are asynchronous messages which allow Android components to request functionality from other components of the Android system. For example an Activity can send an Intents to the Android system which starts another Activity. Sunday, February 5, 12
  • 40. Content Provider Applications can store their data in files, a SQLite database, preferences or any other mechanism that makes sense. A content provider, however, is useful if you want your application's data to be shared with other applications. A content provider is a class that implements a standard set of methods to let other applications store and retrieve the type of data that is handled by that content provider. Sunday, February 5, 12
  • 41. AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.inovadoor.android.petiscos" android:versionCode="9" android:versionName="1.4.2"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> <activity android:name=".Main" android:label="@string/app_name" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> <activity android:name="CategoriasListActivity" android:configChanges="orientation|keyboardHidden"></activity> <activity android:name="ReceitaDetailsActivity" android:configChanges="orientation|keyboardHidden" ></activity> <activity android:name="ReceitasListActivity" android:configChanges="orientation|keyboardHidden"></activity> <activity android:name="SimpleReceitasListActivity" android:configChanges="orientation|keyboardHidden" ></activity> <activity android:name=".PreferencesActivity" android:label="@string/prefsTitle" android:configChanges="orientation|keyboardHidden"> </activity> </application> <uses-sdk android:minSdkVersion="3" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:anyDensity="true" /> </manifest> Sunday, February 5, 12
  • 42. MVC Controler Model View Sunday, February 5, 12
  • 43. Development Tools • Eclipse plugin • Android SDK Sunday, February 5, 12
  • 44. Development Tools Emulator Simulator The difference between emulators and simulators is that emulators mimic the software and hardware environments found on actual devices. Simulators, on the other hand, only mimic the software environment. Sunday, February 5, 12
  • 45. Project MyProject/ src/ MyActivity.java res/ drawable/ icon.png layout/ main.xml info.xml values/ strings.xml values-pt/ strings.xml Sunday, February 5, 12
  • 47. Common Problems • ANR (App Not Responding) block main thread for more than 5 seconds • Manifest missing configurations Sunday, February 5, 12
  • 48. Common Problems Don’t block the main thread Sunday, February 5, 12
  • 49. Common Problems Don’t block the main thread public void onClick(View v) {   new Thread(new Runnable() {     public void run() {       Bitmap b = loadImageFromNetwork();       mImageView.setImageBitmap(b);     }   }).start(); } Sunday, February 5, 12
  • 50. Common Problems Don’t block the main thread public void onClick(View v) {   new Thread(new Runnable() {     public void run() {       Bitmap b = loadImageFromNetwork();       mImageView.setImageBitmap(b);     }   }).start(); } public void onClick(View v) {   new Thread(new Runnable() {     public void run() {       final Bitmap b = loadImageFromNetwork();       mImageView.post(new Runnable() {         public void run() {           mImageView.setImageBitmap(b);         }       });     }   }).start(); } Sunday, February 5, 12
  • 51. Common Problems public void onClick(View v) {   new DownloadImageTask().execute("http://example.com/image.png"); } private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {      protected Bitmap doInBackground(String... urls) {          return loadImageFromNetwork(urls[0]);      }      protected void onPostExecute(Bitmap result) {          mImageView.setImageBitmap(result);      }  } Sunday, February 5, 12
  • 52. Performance • Avoid Creating Unnecessary Objects • Avoid Internal Getters/Setters In native languages like C++ it's common practice to use getters (e.g. i = getCount()) instead of accessing the field directly (i = mCount). This is an excellent habit for C++, because the compiler can usually inline the access, and if you need to restrict or debug field access you can add the code at any time. On Android, this is a bad idea.Virtual method calls are expensive, much more so than instance field lookups. It's reasonable to follow common object-oriented programming practices and have getters and setters in the public interface, but within a class you should always access fields directly. • Prefer Static Over Virtual If you don't need to access an object's fields, make your method static. Invocations will be about 15%-20% faster. Sunday, February 5, 12
  • 53. Performance • Use Enhanced For Loop Syntax static class Foo {         int mSplat;     }     Foo[] mArray = ...     public void one() {         int sum = 0;     public void zero() {         Foo[] localArray = mArray;         int sum = 0;         int len = localArray.length;         for (int i = 0; i < mArray.length; ++i) {             sum += mArray[i].mSplat;        for (int i = 0; i < len; ++i) {         }            sum += localArray[i].mSplat;     }        }     }     public void two() {         int sum = 0;         for (Foo a : mArray) {             sum += a.mSplat;         }     } Sunday, February 5, 12
  • 54. Performance Recycler Sunday, February 5, 12
  • 55. Web app VS Native • If you are building a native app, make sure, that it will be amazing. • PhoneGap - http://phonegap.com/ PhoneGap is an HTML5 app platform that allows you to author native applications with web technologies and get access to APIs and app stores. PhoneGap leverages web technologies developers already know best... HTML and JavaScript. Sunday, February 5, 12
  • 56. Demo This slide has been deliberately left blank Sunday, February 5, 12
  • 57. Android Market • 25$ registation fee for developers • 30 / 70 Sunday, February 5, 12
  • 59. Inspiration • What app should i make? • Identify a necessity • Forget Apps, build a service! • Use the out-of-the-box phone features: GPS, Contact List, Google Account, Internet, Accelerometer, Maps Sunday, February 5, 12
  • 61. Market • Right now, Portuguese market is too small for mobile ads revenue. • Take advantage of Portuguese language • Think Global. Sunday, February 5, 12
  • 62. Market • Right now, Portuguese market is too small for mobile ads revenue. • Take advantage of Portuguese language • Think Global. Sunday, February 5, 12
  • 63. Market “The latest Distimo report found that just two paid Android apps have ever eclipsed the half-million milestone, while six iPhone apps did that in two months in April and May.” “Overall, 79.3 percent of all paid Android apps have been downloaded less than 100 times, and only 4.6 percent of paid apps were downloaded more than 1,000 times.” http://gigaom.com/2011/05/27/android-still-trails-ios-as-a-money-maker-for-devs/ Sunday, February 5, 12
  • 64. Fragmentation Trânsito Versão Utilizadores Android 2.3.3+ 1024 Android 1.6 3.1 4.0 Android 4.0.3 Android Android 2.2 763 Android 1.5 Android 2.3 Android 3.2 Android 4% 2%0% 1% 1% 0% 5% Android 2.1 500 Android 2.1 Android 1.5 123 19% Android 1.6 115 Android 2.3.3+ Android 3.1 41 39% Android 4.0.3 27 Android 2.3 14 Android 4.0 8 Android 2.2 29% Android 3.2 8 Android 2.3.3+ Android 2.2 Android 2.1 Android 1.5 Android 1.6 Android 3.1 Android 4.0.3 Android 2.3 Android 4.0 Android 3.2 Sunday, February 5, 12
  • 65. Links • http://developer.android.com • https://market.android.com/publish • Dianne Hackborn • Andrew Munn • http://blog.crazybob.org/2011/12/truth-about- android-ios-ui-performance.html Sunday, February 5, 12
  • 66. The end Tiago Brito tlfbrito@gmail.com @tlfbrito Sunday, February 5, 12