Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
What you can do in Android that you can't in iOS
1. 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
2. Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS
2
4. Smartphones shipments are growing fast…
http://www.morganstanley.com/institutional/techresearch/tenquestions_web2.html
PARIVEDA SOLUTIONS
4
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
5
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
6
7. 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,2
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
PARIVEDA SOLUTIONS
7
8. 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
9. How do you take advantage of this opportunity?
End users have shown a definite
preference for native apps over web
browsing1
Key advantages of native
applications are:
• Performance
• User Interface
• System integration 1. http://blog.flurry.com/bid/63907/Mobile-Apps-Put-the-
Web-in-Their-Rear-view-Mirror
PARIVEDA SOLUTIONS
9
10. 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)1
1. http://metrics.admob.com/wp-
content/uploads/2010/06/May-2010-
AdMob-Mobile-Metrics-Highlights.pdf
PARIVEDA SOLUTIONS
10
11. 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 Automation
PARIVEDA SOLUTIONS
11
12. Why choose Android?
Android allows you to build applications with
unique capabilities that can differentiate you from
your competition!
PARIVEDA SOLUTIONS
12
13. Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS
13
14. What You Can Do in Android
► Notifications
► Widgets
► Navigation
► Voice Input
► Multi-tasking
► Intents
► Event Receivers
► Open API’s
PARIVEDA SOLUTIONS
14
15. 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 screen
PARIVEDA SOLUTIONS
15
16. 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 application
PARIVEDA SOLUTIONS
16
17. Android Notifications
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
PARIVEDA SOLUTIONS
17
18. Notifications
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
PARIVEDA SOLUTIONS
18
19. Widgets
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
PARIVEDA SOLUTIONS
19
20. Widgets
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
PARIVEDA SOLUTIONS
20
21. Widgets
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
PARIVEDA SOLUTIONS
21
22. Navigation
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‖
PARIVEDA SOLUTIONS
22
23. Navigation
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
PARIVEDA SOLUTIONS
23
24. Navigation
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
PARIVEDA SOLUTIONS
24
25. Voice Input
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
PARIVEDA SOLUTIONS
25
26. Voice Input
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
PARIVEDA SOLUTIONS
26
27. Voice Input
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”
PARIVEDA SOLUTIONS
27
28. Multi-tasking
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
PARIVEDA SOLUTIONS
28
29. Multi-tasking
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)
PARIVEDA SOLUTIONS
29
30. Multi-tasking
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)
PARIVEDA SOLUTIONS
30
31. Intents
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
PARIVEDA SOLUTIONS
31
32. Intents
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
PARIVEDA SOLUTIONS
32
33. Intents
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
PARIVEDA SOLUTIONS
33
34. Event Receivers
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
PARIVEDA SOLUTIONS
34
35. Event Receivers
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
PARIVEDA SOLUTIONS
35
36. Event Receivers
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
PARIVEDA SOLUTIONS
36
37. Rich API
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
PARIVEDA SOLUTIONS
37
38. Rich API
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
PARIVEDA SOLUTIONS
38
39. Rich API
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
PARIVEDA SOLUTIONS
39
40. Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS
40
41. 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
42. 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
43. 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 phone
PARIVEDA SOLUTIONS
43
44. 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 buyers
PARIVEDA SOLUTIONS
44
45. 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 well
PARIVEDA SOLUTIONS
45
46. Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS
46
47. 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 integration
PARIVEDA SOLUTIONS
47
48. 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
49. You can build richer, more useful apps than ever before!
Coined by a leading VC firm KPCB,
SoLoMo drives current investments in
application development
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,
So Co Mo
Social Context Mobile
docking 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
50. Just remember…
―We don’t need any
more fart apps‖
Steve Jobs, 9/9/2010
Build something better!
PARIVEDA SOLUTIONS
50
52. Table of Contents
► Why should you care?
► What you can do in Android
► The Dark Side to Android development
► Conclusion
► Appendix
PARIVEDA SOLUTIONS
52
56. 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.html
PARIVEDA SOLUTIONS
56
57. 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-activity
PARIVEDA SOLUTIONS
57
59. 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.html
PARIVEDA SOLUTIONS
59
60. 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.html
PARIVEDA SOLUTIONS
60
61. 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/Activities
PARIVEDA SOLUTIONS
61
62. 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.html
PARIVEDA SOLUTIONS
62
63. 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