Your SlideShare is downloading. ×
Android Application Development      DevFest event 2012  @Pear Continental, Karachi     Presenter: Imam Raza
Speaker.bio.toString()•     Senior Software Architect @ Folio3.•     Specialties: Enterprise Software Architecture,      M...
Me.loveQuestions==trueMonday, September 19, 2011
Monday, September 19, 2011
Agenda•   Market Statistics•   The Android Work in Pakistan•   Android Basics•   Hello World•   Main Building Blocks•   An...
Agenda•   Market Statistics•   The Android Work in Pakistan•   Android Basics•   Hello World•   Main Building Blocks•   An...
SmartPhone Vs PC sales 2011Category           Q4 2011      Growth        Full year 2011   Growth                   shipmen...
Market Share Q2 2012Smart Phone   %percentage   Unit sold (millions)Android       68.1%         104.8iOS           16.9%  ...
AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
Android Apps•   Myomo MyProgress•   Sony Socom Android App•   Bitzer•   NSDroid (NetSuite CRM)•   Hiplink
Myomo
Sony Socom App
BEAM(Bitzer Enterprise)
NSDroid(NetSuite CRM)
Hiplink
AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
Android Stack
The Stack
Linux Kernel•   Android runs on Linux. Linux    provides:        –     Hardware abstraction             layer        –    ...
Native Libraries•   Pieces borrowed from other    open source projects:        –    Bionic, a super fast and             s...
Question: Difference betweenJava VM and Dalvik VM?
Dalvik VM•   Dalvik VM is Android implementation of Java VM•   Dalvik is optimized for mobile devices:       –    Battery ...
Application Framework•   The rich set of system services wrapped in an    intuitive Java API.•   This ecosystem that devel...
Applications
Applications• Dalvik Executable +  Resources = APK• Must be signed (but  debug key is okayfor development)• Many markets w...
Question: What is thedifference between Androidand Java?
Android and JavaAndroid Java=Java SE–AWT/Swing+Android API
Android SDK- what is in box?SDKToolsDocsPlatforms          –   Data          –   Skins          –   Images          –   Sa...
AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
Hello World-Create NewProjectUse the Eclipse tool to create a new Android  project.Here are some key constructs:
Step-1
Step-2
Step-3
Step-4
Hello World-Anatomy of AppJava Code+XML / OtherResources+Manifest File=Android App
HelloWorld-Manifest File<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/...
HelloWorld- Layout ResourceFile<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.c...
HelloWorld-JAVA Filepackage com.folio3;import android.app.Activity;import android.os.Bundle;public class HelloAndroid exte...
AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
Main Building Blocks•   Activities•   Intents•   Services•   Content Providers•   Broadcast Receivers•   Fragments
ActivitiesAn activity represents a screenor windows
Activity LifeCycleActivity have well-definedlifecycle. The android OSmanages your activity bychanging its state.You fill i...
Intents• Intents represent  events or actions.• They are to Android  apps what hyperlinks  are to websites. Sort  of.• Int...
ServicesServices are code that runs in the background.  They can be started and stopped. Services  doesn’t have UI.
Service LifeCycle•   Service also has a lifecycle,    but it’s much simpler than    activity’s.•   An activity typically s...
Content Provider•   Content Providers sharecontent with applicationsacross applicationboundaries.•   Examples of built-inC...
Broadcast ReceiversAn Intent-based publish-subscribe mechanism. Great for listening system events such as SMS messages.
FragmentsA Fragment represents a behavior or a portion ofuser interface in an Activity.
Fragments• Fragments were introduced in Android 3.0 (API  level 11), primarily to support more dynamic and  flexible UI de...
Monday, September 19, 2011
AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
Best Practices• Use RoboGuice(DI based framework)• Learn Activity Life Cycle• Avoid getting activities thick• Design views...
RoboGuice• It’s based on dependency injection pattern just  like Spring Framework in enterprise apps• It takes the guesswo...
class AndroidWay extends Activity {      TextView name;      ImageView thumbnail;      LocationManager loc;      Drawable ...
class RoboWay extends RoboActivity {     @InjectView(R.id.name)       TextView name;     @InjectView(R.id.thumbnail)    Im...
Compatibility• Ability to install and run app on device.• Huge variety of devices so developer need to  make sure about th...
Compatibility• Specify uses-feature node for every API you use• Mark essential features as required.• Mark optional featur...
Compatibility• Check for API existence in code.PackageManager pm = getPackageManager();Boolean hasCompass=    pm.hasSystem...
CompatibilityUse dp and sp instead of px:<Button android:layout_width=“wrap_content”  Android:layout_height=“wrap_content”...
CompatibilityMonday, September 19, 2011
Compatibility-Test for differentdevice/screen size Monday, September 19, 2011
Compatibility-Test for differentdevice/screen size Monday, September 19, 2011
Advance Task Killer App is       among 50 millions or more             install apps                             Why?Monday...
Performance• Avoid creating objects. (e.g use StringBuffer) .• Prefer static over virtual.• Use static final for constants...
ResponsivenessMonday, September 19, 2011
Responsiveness• “Application Not Responding”     •     Respond to user within 5 seconds     •     Broadcast Receiver must ...
Source Code Analyzer Tools•     FindBugs•     PMD•     CheckStyle•     CPD : Shows code duplication•     You can integrate...
Monday, September 19, 2011
Questions
Google Developer Group(GDG) DevFest Event 2012 Android talk
Upcoming SlideShare
Loading in...5
×

Google Developer Group(GDG) DevFest Event 2012 Android talk

859

Published on

This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).

ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو

یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو

خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے

دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے

چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے


چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے

کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں





Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
859
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • -First I would like to thank the organizers of the event that they allow me to put this slide as right of freedom of speech of every individual.-I condemn blasphemy act made recently by individuals and organizations in the name of freedom of speech that hurt millions of humans. So I would like to record my statement of condemnation to all those individual and organization who involved in this. And I would say to one sentence to them “Shame on you. Shame on you Google. Shame on you Facebook. Shame on you all on this wicked act”.-After recording my condemnation I would like to address you as your Muslim brother that lets we all start attaching ourselves with the only great personality ever sent to human kind. I would like share some Iqbal thoughts on the importance for Muslims to attached themselves with our Prophet Rasool Allah Sallahwasallam.SurahAle-Imran chapter#3,verse 64Allah did confer a great favour on the believers when He sent among them an apostle from among themselves, rehearsing unto them the Signs of Allah, sanctifying them, and instructing them in Scripture and Wisdom, while, before that, they had been in manifest error.
  • Compatibitltyhttp://developer.android.com/guide/practices/compatibility.htmlSupporting Multiple Screens- http://developer.android.com/guide/practices/screens_support.html
  • Compatibitltyhttp://developer.android.com/guide/practices/compatibility.htmlSupporting Multiple Screens- http://developer.android.com/guide/practices/screens_support.html
  • http://developer.android.com/training/articles/perf-tips.html
  • Transcript of "Google Developer Group(GDG) DevFest Event 2012 Android talk"

    1. 1. Android Application Development DevFest event 2012 @Pear Continental, Karachi Presenter: Imam Raza
    2. 2. Speaker.bio.toString()• Senior Software Architect @ Folio3.• Specialties: Enterprise Software Architecture, Mobile Software Architecture, Software Best Practices(TDD,CI ,AOP, IOC).• Master in computer science from KU• B.E (Mechanical) from NED UniversityMonday, September 19, 2011
    3. 3. Me.loveQuestions==trueMonday, September 19, 2011
    4. 4. Monday, September 19, 2011
    5. 5. Agenda• Market Statistics• The Android Work in Pakistan• Android Basics• Hello World• Main Building Blocks• Android Best Practices
    6. 6. Agenda• Market Statistics• The Android Work in Pakistan• Android Basics• Hello World• Main Building Blocks• Android Best Practices
    7. 7. SmartPhone Vs PC sales 2011Category Q4 2011 Growth Full year 2011 Growth shipments Q4’11/Q4’10 shipments 2011/2010 (millions) (millions)Smart Phones 158.5 56.6% 487.7 62.7%Total Client Pcs 120.2 16.3% 414.6 14.8%-pads 26.5 186.2% 63.2 274.2%-netbooks 6.7 -32.4% 29.4 -25.3%-notebooks 57.9 7.3% 209.6 7.5%-Desktops 29.1 -3.6% 112.4 2.3%
    8. 8. Market Share Q2 2012Smart Phone %percentage Unit sold (millions)Android 68.1% 104.8iOS 16.9% 26Black Berry 4.8% 7.4Symbian 4.4% 6.8Windows 3.5% 5.4
    9. 9. AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
    10. 10. Android Apps• Myomo MyProgress• Sony Socom Android App• Bitzer• NSDroid (NetSuite CRM)• Hiplink
    11. 11. Myomo
    12. 12. Sony Socom App
    13. 13. BEAM(Bitzer Enterprise)
    14. 14. NSDroid(NetSuite CRM)
    15. 15. Hiplink
    16. 16. AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
    17. 17. Android Stack
    18. 18. The Stack
    19. 19. Linux Kernel• Android runs on Linux. Linux provides: – Hardware abstraction layer – Memory management – Process management – Networking• Users never see Linux sub system• The adb shell command opens Linux shell
    20. 20. Native Libraries• Pieces borrowed from other open source projects: – Bionic, a super fast and small license-friendly libc library optimized for Android• WebKit library for fast HTML rendering• OpenGL for graphics• Media codecs offer support for major audio/video codecs• SQLite database ..Much more…
    21. 21. Question: Difference betweenJava VM and Dalvik VM?
    22. 22. Dalvik VM• Dalvik VM is Android implementation of Java VM• Dalvik is optimized for mobile devices: –  Battery consumption –  CPU capabilities• Key Dalvik differences: – Register-based versus stack-based VM – Dalvik runs .dex files – More efficient and compact implementation – Different set of Java libraries than JDK
    23. 23. Application Framework• The rich set of system services wrapped in an intuitive Java API.• This ecosystem that developers can easily tap into is what makes writing apps for Android easy.• Location, web, telephony, WiFi, Bluetooth, notifications, media, camera, just to name a few.
    24. 24. Applications
    25. 25. Applications• Dalvik Executable + Resources = APK• Must be signed (but debug key is okayfor development)• Many markets with different policies
    26. 26. Question: What is thedifference between Androidand Java?
    27. 27. Android and JavaAndroid Java=Java SE–AWT/Swing+Android API
    28. 28. Android SDK- what is in box?SDKToolsDocsPlatforms – Data – Skins – Images – SamplesAdd-ons – Google
    29. 29. AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
    30. 30. Hello World-Create NewProjectUse the Eclipse tool to create a new Android project.Here are some key constructs:
    31. 31. Step-1
    32. 32. Step-2
    33. 33. Step-3
    34. 34. Step-4
    35. 35. Hello World-Anatomy of AppJava Code+XML / OtherResources+Manifest File=Android App
    36. 36. HelloWorld-Manifest File<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.folio3" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloworldActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity></application></manifest>
    37. 37. HelloWorld- Layout ResourceFile<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /></LinearLayout>
    38. 38. HelloWorld-JAVA Filepackage com.folio3;import android.app.Activity;import android.os.Bundle;public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}
    39. 39. AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
    40. 40. Main Building Blocks• Activities• Intents• Services• Content Providers• Broadcast Receivers• Fragments
    41. 41. ActivitiesAn activity represents a screenor windows
    42. 42. Activity LifeCycleActivity have well-definedlifecycle. The android OSmanages your activity bychanging its state.You fill in the blanks
    43. 43. Intents• Intents represent events or actions.• They are to Android apps what hyperlinks are to websites. Sort of.• Intents can beimplicit or explicit.
    44. 44. ServicesServices are code that runs in the background. They can be started and stopped. Services doesn’t have UI.
    45. 45. Service LifeCycle• Service also has a lifecycle, but it’s much simpler than activity’s.• An activity typically starts and stops a service to do some work for it in the background, such as play music, check for new tweets, etc.
    46. 46. Content Provider• Content Providers sharecontent with applicationsacross applicationboundaries.• Examples of built-inContent Providers are: – Contacts, – MediaStore, – Settings and more.
    47. 47. Broadcast ReceiversAn Intent-based publish-subscribe mechanism. Great for listening system events such as SMS messages.
    48. 48. FragmentsA Fragment represents a behavior or a portion ofuser interface in an Activity.
    49. 49. Fragments• Fragments were introduced in Android 3.0 (API level 11), primarily to support more dynamic and flexible UI designs on large screens, such as tablets.• Fragments are lot like an activity but it must exists within the activity.• DialogFragment makes it easy to show a Dialog that is managed as part of the Activity lifecycle.• ListFragment makes it easy to show a list of data.Monday, September 19, 2011
    50. 50. Monday, September 19, 2011
    51. 51. AgendaMarket StatisticsThe Android Work in PakistanAndroid BasicsHello WorldMain Building BlocksAndroid Best Practices
    52. 52. Best Practices• Use RoboGuice(DI based framework)• Learn Activity Life Cycle• Avoid getting activities thick• Design views for multiple size/orientation.• Use Fragments to better manage sub-portion of Activity.• Practice Good MVC.• Use Source Code Analyzer Tools (findbugs, checkstyle,PMD and CPD). Integrate these tools with CI Tools like Teamcity.Monday, September 19, 2011
    53. 53. RoboGuice• It’s based on dependency injection pattern just like Spring Framework in enterprise apps• It takes the guesswork out of development. e.g checking null for getIntent().getExtras(). Casting findViewById().• Make your writing unit test case easy• It reduces your lines of code and hence the number of bugs see next slide for code.Monday, September 19, 2011
    54. 54. class AndroidWay extends Activity { TextView name; ImageView thumbnail; LocationManager loc; Drawable icon; String myName; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name = (TextView) findViewById(R.id.name); thumbnail = (ImageView) findViewById(R.id.thumbnail); loc = (LocationManager) getSystemService(Activity.LOCATION_SERVICE); icon = getResources().getDrawable(R.drawable.icon); myName = getString(R.string.app_name); name.setText( "Hello, " + myName ); } }Monday, September 19, 2011
    55. 55. class RoboWay extends RoboActivity { @InjectView(R.id.name) TextView name; @InjectView(R.id.thumbnail) ImageView thumbnail; @InjectResource(R.drawable.icon) Drawable icon; @InjectResource(R.string.app_name) String myName; @Inject LocationManager loc; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name.setText( "Hello, " + myName ); } }Monday, September 19, 2011
    56. 56. Compatibility• Ability to install and run app on device.• Huge variety of devices so developer need to make sure about the Hardware/Software feature his application needed to run.Monday, September 19, 2011
    57. 57. Compatibility• Specify uses-feature node for every API you use• Mark essential features as required.• Mark optional features as not required.<uses-featureAndroid:name=“android.hardware.gps”Android:required=“true”/>Monday, September 19, 2011
    58. 58. Compatibility• Check for API existence in code.PackageManager pm = getPackageManager();Boolean hasCompass= pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS);If(hasCompass){//enable things are needed}Monday, September 19, 2011
    59. 59. CompatibilityUse dp and sp instead of px:<Button android:layout_width=“wrap_content” Android:layout_height=“wrap_content” Android:layout_marginTop=“20dp”/><TextView android:layout_width=“match_parent” Android:layout_height=“wrap_content” Android:textsize=“20sp”/>Monday, September 19, 2011
    60. 60. CompatibilityMonday, September 19, 2011
    61. 61. Compatibility-Test for differentdevice/screen size Monday, September 19, 2011
    62. 62. Compatibility-Test for differentdevice/screen size Monday, September 19, 2011
    63. 63. Advance Task Killer App is among 50 millions or more install apps Why?Monday, September 19, 2011
    64. 64. Performance• Avoid creating objects. (e.g use StringBuffer) .• Prefer static over virtual.• Use static final for constants.• Avoid internal getter/Setter (with Proguard you don’t need it.)• Use Enhanced For Loop Syntax e.g: for (Foo a : mArray) { sum += a.mSplat; }• Use native methods.• Avoid using Float and enums
    65. 65. ResponsivenessMonday, September 19, 2011
    66. 66. Responsiveness• “Application Not Responding” • Respond to user within 5 seconds • Broadcast Receiver must complete within 10 seconds• Use Threads and AsyncTasks within ServicesMonday, September 19, 2011
    67. 67. Source Code Analyzer Tools• FindBugs• PMD• CheckStyle• CPD : Shows code duplication• You can integrate them with CI Server like Teamcity to get consolidated reports of code quality of your team. We have been using it on our company and its really helped us in monitoring quality of code.Monday, September 19, 2011
    68. 68. Monday, September 19, 2011
    69. 69. Questions

    ×