• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
What you can do in Android that you can't in iOS
 

What you can do in Android that you can't in iOS

on

  • 3,282 views

 

Statistics

Views

Total Views
3,282
Views on SlideShare
3,103
Embed Views
179

Actions

Likes
2
Downloads
29
Comments
0

2 Embeds 179

http://ishouldhaveknownthisbefore.wordpress.com 177
http://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    What you can do in Android that you can't in iOS What you can do in Android that you can't in iOS Presentation Transcript

    • What you can do in Android that you can’t in iOS:How to build unique and compelling apps that users want!July 2011 * For Internal Use Only * The Business of IT® www.parivedasolutions.com
    • Table of Contents► Why should you care?► What you can do in Android► The Dark Side to Android development► Conclusion► AppendixPARIVEDA SOLUTIONS 2
    • PARIVEDA SOLUTIONS 3
    • Smartphones shipments are growing fast… http://www.morganstanley.com/institutional/techresearch/tenquestions_web2.htmlPARIVEDA SOLUTIONS 4
    • …Even faster than most analysts expected http://tech.fortune.cnn.com/2011/02/07/idc-smartphone-shipment- numbers-passed-pc-in-q4-2010/PARIVEDA SOLUTIONS 5
    • Consumers already prefer mobile devices for their most frequent activities http://tag.microsoft.com/community/tag-blog-item/11-03- 21/The_Growth_of_Mobile_Marketing_and_Tagging.aspx?category=industryPARIVEDA SOLUTIONS 6
    • Web markets are ―winner-take-all‖ A number of studies have shown that most web companies are “winner-take- all” or “winner-take-most” – the top companies in a market grow to dominate share in that market1,21. A. O˘gus, M. de la Maza and D. Yuret, ”The economics of Internet companies”, Proceedings of Computing in Economics and Finance 1999.2. S.M. Maurer and B.A. Huberman, “Competitive Dynamics of Web Sites,” Journal of Economic Dynamics and Control, Volume 27, Issues 11-12, 2003 PARIVEDA SOLUTIONS 7
    • These market dynamics create an opportunity… A growing number of Ability to take Opportunity to users transitioning commanding market leverage low away from share in new mobile economies of scale established desktop markets into greater profit environment … and a threat: mobile competition could destroy your market position!PARIVEDA SOLUTIONS 8
    • How do you take advantage of this opportunity?End users have shown a definitepreference for native apps over webbrowsing1Key advantages of nativeapplications are: • Performance • User Interface • System integration 1. http://blog.flurry.com/bid/63907/Mobile-Apps-Put-the- Web-in-Their-Rear-view-MirrorPARIVEDA SOLUTIONS 9
    • What approach to take? Product owners need to determine what the compelling factors for success are ► Is reach or user experience the most important factors? ► Reach can be overestimated – the vast majority of mobile internet traffic is driven by the top two mobile platforms (this effect is even more pronounced in the US)11. http://metrics.admob.com/wp- content/uploads/2010/06/May-2010- AdMob-Mobile-Metrics-Highlights.pdf PARIVEDA SOLUTIONS 10
    • Why choose Android? Other Microsoft, Q1 2011 OS, 3% Android commands the top 4% market share in the smartphone RIM, industry 13% Android, 36% iOS, 17% Tablets Symbian, 27% Robotics TV Android Android is at the center of a growing ecosystem of Smart Home connected devices Phones AutomationPARIVEDA SOLUTIONS 11
    • Why choose Android? Android allows you to build applications with unique capabilities that can differentiate you from your competition!PARIVEDA SOLUTIONS 12
    • Table of Contents► Why should you care?► What you can do in Android► The Dark Side to Android development► Conclusion► AppendixPARIVEDA SOLUTIONS 13
    • What You Can Do in Android ► Notifications ► Widgets ► Navigation ► Voice Input ► Multi-tasking ► Intents ► Event Receivers ► Open API’sPARIVEDA SOLUTIONS 14
    • iPhone► Pop-up notifications are intrusive and bland • The user is blocked from doing anything until closing the notification • If there are multiple notifications, the user must close each one • All notifications have the same color and structure► Badges are limited • Badges can show one updated count per application • Badges are not visible unless the application icon is on the screenPARIVEDA SOLUTIONS 15
    • Android ► The notification bar is unobtrusive • Users can see notification icons from any screen without acting on them • Users can pull down from the notification bar to see details ► Notifications are branded icons ► Developers can create multiple notifications per applicationPARIVEDA SOLUTIONS 16
    • Android NotificationsAdvantages► Android applications can take more advantage of notifications than their iOS applications • Many iPhone users are careful about allowing notifications because they can be irritating • Android developers can more freely create notifications► Notifications can take the place of other notification mechanisms: • Text Messages: text messages from vendors are annoying and can incur a cost to the end-user • Email: users are overwhelmed with emails; users may not distinguish between your email and any others they receivePARIVEDA SOLUTIONS 17
    • NotificationsExamples► Email, Facebook, Music PlayerWhat you could create► Social marketing • Notify user when their Twitter contacts use a keyword • Notify user when market sentiment metrics drop or rise► IT Operations • Notify user with system alerts • Brand alerts by level: warning, error, or critical downtimePARIVEDA SOLUTIONS 18
    • WidgetsDescription► Widgets are small applications that can be placed directly on the home page► Widgets can be separate applications, or packaged with another application► Information conveyed in the widget can be updated in the backgroundPARIVEDA SOLUTIONS 19
    • WidgetsAdvantages► Developers can conveniently present information to users • Users are not required to open the application to access information • Widget creators can poll for updates in the background► Widgets are interactive, too! • Users can cycle through data • Users can update as well as consume dataPARIVEDA SOLUTIONS 20
    • WidgetsExamples► Facebook, Pandora, Beautiful WidgetsWhat you could create► Operational dashboard (on a phone or tablet) • Customer service: current waiting time • Web site: sales per day► Marketing: Real-time Twitter stream related to a specific topic► Process Actions: Allow a manager to approve or reject items in their work queue► Auction Site: real-time bids on your itemsPARIVEDA SOLUTIONS 21
    • NavigationDescription► Apple users can interact with the built- in map application, but require a separate application for turn-by-turn navigation► Android offers a more convenient alternative • Users can get turn-by-turn directions from any location on the map • Application developers can trigger directions to any geo-location► The navigation application offers speech output — ―Turn left in one mile‖PARIVEDA SOLUTIONS 22
    • NavigationAdvantages► Users can skip directly to directions without having to go to a map► Ideal for drivers, where user interaction and clicks need to be limitedPARIVEDA SOLUTIONS 23
    • NavigationExamples► Google PlacesWhat you could create► Add the next level of convenience to any map-related or store locator application► Navigation tied to inventory • Directions to the nearest Best Buy with Portal 2 • Directions to the nearest Redbox with Toy Story 3PARIVEDA SOLUTIONS 24
    • Voice InputDescription► Apple offers pluggable Text-to-Speech (TTS)► Android offers pluggable TTS, but offers Speech-to-Text natively► Voice input can be implemented in two ways: • With the default keyboard, users can use speech input with any text box • Developers can implement voice input via codePARIVEDA SOLUTIONS 25
    • Voice InputAdvantages► Voice input is ideal for situations where users cannot concentrate on the screen (i.e. driving or walking)► Increased safety – users can keep their eyes up while walking or driving► Shortcut applications with multiple input fieldsPARIVEDA SOLUTIONS 26
    • Voice InputExamples► Google Voice Actions, VlingoWhat you could create► Add voice to directions-based applications: “Take me to the nearest Redbox with Toy Story 3”► Travel Reservations: “Find me a hotel in Chicago from June first to June fifth”PARIVEDA SOLUTIONS 27
    • Multi-taskingDescription► Apple offers background processes, but those are limited to location services, audio, or VoIP► iOS also offers push notification, which are also limited: • The notification has to be registered with Apple, with all the headaches that entails► Android offers true multi-tasking services without requiring registration with a central authorityPARIVEDA SOLUTIONS 28
    • Multi-taskingAdvantages► Android’s multitasking allows the application to run true background processes► Android allows services to get third party updates without registering with a central server► This capability also allows the application to run long-lived activities after you leave the app (such as uploading a picture)PARIVEDA SOLUTIONS 29
    • Multi-taskingExamples► Tasker, Locale, Chrome to PhoneWhat you could create► Operational widget: update operational widget in the background► Context-sensitive applications: perform actions in the background based on time of day, location, etc► Send an SMS or email from your application (and return back)PARIVEDA SOLUTIONS 30
    • IntentsDescription► iOS has document interactions, which are meant for viewing or editing documents► Android offers intents, which allow developers to define an event to which another application will respond► Intents can respond to a specified action, and filter based on URL scheme and mime typePARIVEDA SOLUTIONS 31
    • IntentsAdvantages► Developers can easily leverage device functionality like SMS, email, camera and telephony► A developer can create applications to be callable► Developers can call other applications on the phone with less effort and without using server-side code► Application designers can leverage that code without packing API libraries, reducing application size and download timePARIVEDA SOLUTIONS 32
    • IntentsExamples► Google Maps, LastFM, OpenTableWhat you could create► Create an callable API as part of the overall application strategy► Create an Orbitz application with intents to allow other applications to book a flightPARIVEDA SOLUTIONS 33
    • Event ReceiversDescription► The Android OS broadcasts events on system conditions such as receiving an SMS or initiating a call► Developers can create event receivers – classes which are instantiated for specific intents► Event receivers can perform filtering beyond intent type and only intercept the events they wantPARIVEDA SOLUTIONS 34
    • Event ReceiversAdvantages► Developers can integrate with phone system events► There is no need to create polling operations – the OS will forward events to any appropriate receivers► Events are broadcast; multiple receivers can act on the same event based on priorityPARIVEDA SOLUTIONS 35
    • Event ReceiversExamples► Handcent SMS, ConferenceCallerWhat you could create► Calling applications: intercept international calls and route to a calling card number► SMS applications: intercept and auto- reply to messages from select usersPARIVEDA SOLUTIONS 36
    • Rich APIDescription► Android offer the ability to change almost all aspects of the phone, like: • Bluetooth: turn Bluetooth on/off, scan for devices, establish connection • Wifi: turn wifi on/off, scan for networks, establish connection • USB: establish connections to a device as a host or accessory (available as an additional library in Gingerbread) • NFC: act as an NFC initiator or reader; trigger an activity on read receiptPARIVEDA SOLUTIONS 37
    • Rich APIAdvantages► Developers have the capability to integrate with almost anything they can imagine!► Core applications and API’s are public - developers can easily extend existing functionalityPARIVEDA SOLUTIONS 38
    • Rich APIExamples► Wifi Analyzer, Bluetooth WidgetWhat you could create► Dictionary updates: update dictionary with medical, legal, or government terminology► Build proximity communication apps in Bluetooth or NFC► Build a better home screen, notifications toolbar, or phone dialerPARIVEDA SOLUTIONS 39
    • Table of Contents► Why should you care?► What you can do in Android► The Dark Side to Android development► Conclusion► AppendixPARIVEDA SOLUTIONS 40
    • The Dark Side – UI Design ► Android has a relatively poor framework and toolset - Android lacks a good WYSIWYG designer ► Android’s default look-and-feel is sparse and lacks pizzazz ► UI designers have to consider a wide variety of screen sizes ► Android’s tablet introduced new UI elements to the mix http://fuglyandroid.tumblr.com/PARIVEDA SOLUTIONS 41
    • The Dark Side – Fragmentation ► Version fragmentation: designers need to consider a multitude of OS versions ► Hardware fragmentation: Android phones come in a wide variety of screen resolutions, CPU, and other capabilities http://moconews.net/image/google-android-fragmentation-may-2011/PARIVEDA SOLUTIONS 42
    • The Dark Side – Performance ► Bad Battery Life: Android’s background service support means that users can create programs that continually drain the battery ► Occasional Poor Performance: Android’s Dalvik machines only closes apps when memory is needed; this can occasionally cause excess processes to slow the phonePARIVEDA SOLUTIONS 43
    • The Dark Side – Monetization► Apple has a base more willing to buy► Apple’s market has superior marketing, searching, trending and application highlighting► Multiple stores (GetJar, Amazon, etc) confuse the issue for publishers and buyersPARIVEDA SOLUTIONS 44
    • The Dark Side – Security ► Applications on the App Store are not monitored – any application could be considered malicious ► Android’s open API’s allow malicious developers to do more danger than they could on an iOS device ► Android warns but allows users to download dangerous applications ► Most users typically ignore those warnings as wellPARIVEDA SOLUTIONS 45
    • Table of Contents► Why should you care?► What you can do in Android► The Dark Side to Android development► Conclusion► AppendixPARIVEDA SOLUTIONS 46
    • Android expands possibilities in app development Multi- iOS applications have great tasking user interfaces….Rich system Cross-app However, Android applications integration calls are more feature-rich in many Android other areas- • Background processing • Cross-app communications Notifications Widgets • Rich interaction from the home screen with widgets • Phone integrationPARIVEDA SOLUTIONS 47
    • Just because you can doesn’t mean you should Don’t create needless background processes that kill battery life or eat bandwidth! Don’t hijack events and break normal system usage! Don’t modify standardized tools or inherit system API’s without a good reason!PARIVEDA SOLUTIONS 48
    • You can build richer, more useful apps than ever before!Coined by a leading VC firm KPCB,SoLoMo drives current investments inapplication developmentAndroid’s open API’s and richbackground service support allowsusers to develop apps around a muchmore powerful paradigm –contextBuild apps around location, time of day, So Co Mo Social Context Mobiledocking state, appointment schedule,nearby friends, and more!Integrate this context with other apps to build unique,compelling applications that aren’t available anywhere else!PARIVEDA SOLUTIONS 49
    • Just remember… ―We don’t need any more fart apps‖ Steve Jobs, 9/9/2010 Build something better!PARIVEDA SOLUTIONS 50
    • Questions? joe.nedumgottil@parivedasolutions.com http://www.linkedin.com/profile/view?id=6643416 https://plus.google.com/u/0/111620262743668206893PARIVEDA SOLUTIONS 51
    • Table of Contents► Why should you care?► What you can do in Android► The Dark Side to Android development► Conclusion► AppendixPARIVEDA SOLUTIONS 52
    • Appendix: Code SamplesPARIVEDA SOLUTIONS 53
    • Notifications Creating the expanded notification: int icon = R.drawable.my_notification_icon; // icon from resources CharSequence tickerText = “My ticker text"; // ticker-text long when = System.currentTimeMillis(); // notification time Context context = getApplicationContext(); CharSequence contentTitle = "My notification"; // expanded message title CharSequence contentText = “My text!"; // expanded message text Intent notificationIntent = new Intent(this, MyClass.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); // the next two lines initialize the Notification, using the configurations above Notification notification = new Notification(icon, tickerText, when); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); Reference: http://developer.android.com/guide/topics/ui/notifiers/notifications.htmlPARIVEDA SOLUTIONS 54
    • Widgets Define the widget in Manifest.xml: <receiver android:name="ExampleAppWidgetProvider" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" /> </receiver> Define App Widget Provider Info: <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical"> </appwidget-provider> Reference: http://developer.android.com/guide/topics/appwidgets/index.htmlPARIVEDA SOLUTIONS 55
    • Widgets Widget Class: public class MyAppWidgetProvider extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; // Perform this loop procedure for each App Widget that belongs to this provider for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; // Create an Intent to launch ExampleActivity Intent intent = new Intent(context, ExampleActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); // Get the layout for the App Widget and attach an on-click listener // to the button RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout); views.setOnClickPendingIntent(R.id.button, pendingIntent); // Tell the AppWidgetManager to perform an update on the current app widget appWidgetManager.updateAppWidget(appWidgetId, views); } } } Reference: http://developer.android.com/guide/topics/appwidgets/index.htmlPARIVEDA SOLUTIONS 56
    • Navigation Call Navigation: public void callNav() { String latLong = "41.88,-87.64"; Intent i = new Intent(); i.setAction(Intent.ACTION_VIEW); i.setData(Uri.parse("google.navigation:q=" + latLong)); startActivity(i); } Reference: http://stackoverflow.com/questions/5801684/intent-to-start-a-navigation-activityPARIVEDA SOLUTIONS 57
    • Voice Input Call Voice Recognition: private void startVoiceRecognitionActivity() { Intent intent = new Intent( RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo"); startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE); } Reference: http://developer.android.com/resources/samples/ApiDemos/src/com/example/ android/apis/app/VoiceRecognition.htmlPARIVEDA SOLUTIONS 58
    • Voice Input Retrieve Voice Recognition results: protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Fill the list view with the strings the recognizer thought it // could have heard ArrayList<String> matches = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); mList.setAdapter( new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches)); } super.onActivityResult(requestCode, resultCode, data); } Reference: http://developer.android.com/resources/samples/ApiDemos/src/com/example/ android/apis/app/VoiceRecognition.htmlPARIVEDA SOLUTIONS 59
    • Multi-tasking Initiate a service to handle Intents in the background: public class MyIntentService extends IntentService { public MyIntentService() { super("MyIntentService"); } /** * The IntentService calls this method from the default worker * thread with the intent that started the service. When this * method returns, IntentService stops the service, as * appropriate. */ protected void onHandleIntent(Intent intent) { if(intent.getAction().equalsIgnoreCase(My_Intent)){ // do something } } } Reference: http://developer.android.com/guide/topics/fundamentals/services.htmlPARIVEDA SOLUTIONS 60
    • Intent Call the Twidroyd ―Twitter‖ intent: public void fireTweet() { Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, “My tweet”); sendIntent.setType("application/twitter"); startActivity(Intent.createChooser(sendIntent, null)); } Use Last.FM to retrieve artist info: public void getArtistInfo() { intent = new Intent(Intent.ACTION_VIEW); intent.setComponent(new ComponentName( "fm.last.android","fm.last.android.activity.Metadata")); intent.putExtra("artist", “U2"); startActivity( intent ); } Reference: http://twidroyd.com/plugins/ https://github.com/c99koder/lastfm-android/wiki/ActivitiesPARIVEDA SOLUTIONS 61
    • Event Receivers Intercept a call: public class CallReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent){ if(intent.getAction().equalsIgnoreCase( Intent.ACTION_NEW_OUTGOING_CALL)){ // do something } } } Reference: http://developer.android.com/reference/android/content/Intent.htmlPARIVEDA SOLUTIONS 62
    • Open API’s Turn on Bluetooth: public void turnOnBluetooth() { BluetoothAdapter bt = BluetoothAdapter.getDefaultAdapter(); if (!bt.isEnabled()) { bt.enable(); } } References: http://ishouldhaveknownthisbefore.wordpress.com/2011/01/ http://developer.android.com/guide/topics/wireless/bluetooth.html http://android.git.kernel.org/ http://developer.android.com/PARIVEDA SOLUTIONS 63