what you can do in android that you can't in ios

63
The Business of IT ® www.parivedasolutions.com 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 *

Upload: jnedumgottil

Post on 09-May-2015

3.285 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: What you can do in Android that you can't in iOS

The Business of IT®

www.parivedasolutions.com

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 *

Page 2: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 2

Table of Contents

► Why should you care?

► What you can do in Android

► The Dark Side to Android development

► Conclusion

► Appendix

Page 3: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 3

Page 4: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 4

Smartphones shipments are growing fast…

http://www.morganstanley.com/institutional/techresearch/tenquestions_web2.html

Page 5: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 5

…Even faster than most analysts expected

http://tech.fortune.cnn.com/2011/02/07/idc-smartphone-shipment-

numbers-passed-pc-in-q4-2010/

Page 6: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 6

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=industry

Page 7: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 7

Web markets are ―winner-take-all‖

1. 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

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,2

Page 8: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 8

These market dynamics create an opportunity…

A growing number of

users transitioning

away from

established desktop

environment

Ability to take

commanding market

share in new mobile

markets

Opportunity to

leverage low

economies of scale

into greater profit

… and a threat: mobile competition could destroy your

market position!

Page 9: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 9

How do you take advantage of this opportunity?

1. http://blog.flurry.com/bid/63907/Mobile-Apps-Put-the-

Web-in-Their-Rear-view-Mirror

End users have shown a definite

preference for native apps over web

browsing1

Key advantages of native

applications are:

• Performance

• User Interface

• System integration

Page 10: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 10

What approach to take?

1. http://metrics.admob.com/wp-

content/uploads/2010/06/May-2010-

AdMob-Mobile-Metrics-Highlights.pdf

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)1

Page 11: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Why choose Android?

Android commands the top

market share in the smartphone

industry

11

Android

Tablets

TV

Home Automation

Smart Phones

Robotics

Android is at the center of

a growing ecosystem of

connected devices

Android, 36%

Symbian, 27%

iOS, 17%

RIM, 13%

Microsoft, 4%

Other OS, 3% Q1 2011

Page 12: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Why choose Android?

Android allows you to build applications with

unique capabilities that can differentiate you from

your competition!

12

Page 13: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 13

Table of Contents

► Why should you care?

► What you can do in Android

► The Dark Side to Android development

► Conclusion

► Appendix

Page 14: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 14

What You Can Do in Android

► Notifications

► Widgets

► Navigation

► Voice Input

► Multi-tasking

► Intents

► Event Receivers

► Open API’s

Page 15: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

► 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 screen

15

iPhone

Page 16: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 16

► 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 application

Android

Page 17: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 17

Advantages

► 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 receive

Android Notifications

Page 18: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 18

Examples

► Email, Facebook, Music Player

What 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 downtime

Notifications

Page 19: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 19

Description

► 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 background

Widgets

Page 20: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 20

Advantages

► 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 data

Widgets

Page 21: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 21

Examples

► Facebook, Pandora, Beautiful Widgets

What 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 items

Widgets

Page 22: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 22

Description

► 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‖

Navigation

Page 23: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 23

Advantages

► Users can skip directly to directions

without having to go to a map

► Ideal for drivers, where user interaction

and clicks need to be limited

Navigation

Page 24: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 24

Examples

► Google Places

What 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 3

Navigation

Page 25: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Description

► 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 code

25

Voice Input

Page 26: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Advantages

► 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

fields

26

Voice Input

Page 27: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Examples

► Google Voice Actions, Vlingo

What 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”

27

Voice Input

Page 28: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 28

Description

► 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 authority

Multi-tasking

Page 29: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 29

Advantages

► 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)

Multi-tasking

Page 30: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 30

Examples

► Tasker, Locale, Chrome to Phone

What 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)

Multi-tasking

Page 31: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 31

Description

► 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 type

Intents

Page 32: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 32

Advantages

► 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 time

Intents

Page 33: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 33

Examples

► Google Maps, LastFM, OpenTable

What 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 flight

Intents

Page 34: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 34

Description

► 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 want

Event Receivers

Page 35: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 35

Advantages

► 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 priority

Event Receivers

Page 36: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 36

Examples

► Handcent SMS, ConferenceCaller

What 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 users

Event Receivers

Page 37: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 37

Description

► 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 receipt

Rich API

Page 38: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 38

Advantages

► Developers have the capability to integrate

with almost anything they can imagine!

► Core applications and API’s are public -

developers can easily extend existing

functionality

Rich API

Page 39: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 39

Examples

► Wifi Analyzer, Bluetooth Widget

What 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 dialer

Rich API

Page 40: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 40

Table of Contents

► Why should you care?

► What you can do in Android

► The Dark Side to Android development

► Conclusion

► Appendix

Page 41: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

► 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

41

http://fuglyandroid.tumblr.com/

The Dark Side – UI Design

Page 42: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

► 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

42

http://moconews.net/image/google-android-fragmentation-may-2011/

The Dark Side – Fragmentation

Page 43: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

► 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 phone

43

The Dark Side – Performance

Page 44: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

► 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 buyers

44

The Dark Side – Monetization

Page 45: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

► 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 well

45

The Dark Side – Security

Page 46: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 46

Table of Contents

► Why should you care?

► What you can do in Android

► The Dark Side to Android development

► Conclusion

► Appendix

Page 47: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 47

iOS applications have great

user interfaces….

However, Android applications

are more feature-rich in many

other areas-

• Background processing

• Cross-app communications

• Rich interaction from the home

screen with widgets

• Phone integration

Android expands possibilities in app development

Android

Multi-tasking

Cross-app calls

Widgets Notifications

Rich system integration

Page 48: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 48

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!

Just because you can doesn’t mean you should

Page 49: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 49

Coined by a leading VC firm KPCB,

SoLoMo drives current investments in

application development

So Social

Co Context

Mo Mobile

Android’s open API’s and rich

background service support allows

users to develop apps around a much

more powerful paradigm –

context

Build apps around location, time of day,

docking state, appointment schedule,

nearby friends, and more!

You can build richer, more useful apps than ever before!

Integrate this context with other apps to build unique,

compelling applications that aren’t available anywhere else!

Page 50: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Just remember…

50

―We don’t need any

more fart apps‖

Build something better!

Steve Jobs, 9/9/2010

Page 51: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS

Questions?

51

[email protected]

http://www.linkedin.com/profile/view?id=6643416

https://plus.google.com/u/0/111620262743668206893

Page 52: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 52

Table of Contents

► Why should you care?

► What you can do in Android

► The Dark Side to Android development

► Conclusion

► Appendix

Page 53: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 53

Appendix: Code Samples

Page 54: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 54

Notifications

Reference:

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

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);

Page 55: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 55

Widgets

Reference:

http://developer.android.com/guide/topics/appwidgets/index.html

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>

Page 56: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 56

Widgets

Reference:

http://developer.android.com/guide/topics/appwidgets/index.html

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);

}

}

}

Page 57: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 57

Navigation

Reference:

http://stackoverflow.com/questions/5801684/intent-to-start-a-navigation-activity

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);

}

Page 58: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 58

Voice Input

Reference:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/

android/apis/app/VoiceRecognition.html

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);

}

Page 59: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 59

Voice Input

Reference:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/

android/apis/app/VoiceRecognition.html

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);

}

Page 60: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 60

Multi-tasking

Reference:

http://developer.android.com/guide/topics/fundamentals/services.html

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

}

}

}

Page 61: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 61

Intent

Reference:

http://twidroyd.com/plugins/

https://github.com/c99koder/lastfm-android/wiki/Activities

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 );

}

Page 62: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 62

Event Receivers

Reference:

http://developer.android.com/reference/android/content/Intent.html

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

}

}

}

Page 63: What you can do in Android that you can't in iOS

PARIVEDA SOLUTIONS 63

Open API’s

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/

Turn on Bluetooth:

public void turnOnBluetooth() {

BluetoothAdapter bt = BluetoothAdapter.getDefaultAdapter();

if (!bt.isEnabled()) {

bt.enable();

}

}