Upload
jnedumgottil
View
3.285
Download
5
Embed Size (px)
Citation preview
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 *
PARIVEDA SOLUTIONS 2
Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS 3
PARIVEDA SOLUTIONS 4
Smartphones shipments are growing fast…
http://www.morganstanley.com/institutional/techresearch/tenquestions_web2.html
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/
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
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
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!
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
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
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
PARIVEDA SOLUTIONS
Why choose Android?
Android allows you to build applications with
unique capabilities that can differentiate you from
your competition!
12
PARIVEDA SOLUTIONS 13
Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS 14
What You Can Do in Android
► Notifications
► Widgets
► Navigation
► Voice Input
► Multi-tasking
► Intents
► Event Receivers
► Open API’s
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
PARIVEDA SOLUTIONS 40
Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
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
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
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
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
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
PARIVEDA SOLUTIONS 46
Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
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
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
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!
PARIVEDA SOLUTIONS
Just remember…
50
―We don’t need any
more fart apps‖
Build something better!
Steve Jobs, 9/9/2010
PARIVEDA SOLUTIONS
Questions?
51
http://www.linkedin.com/profile/view?id=6643416
https://plus.google.com/u/0/111620262743668206893
PARIVEDA SOLUTIONS 52
Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS 53
Appendix: Code Samples
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);
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>
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);
}
}
}
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);
}
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);
}
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);
}
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
}
}
}
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 );
}
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
}
}
}
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();
}
}