Monday, March 21, 2016

How to get a FREE Hosted Exchange EWS Account

This is what I do to test my free Android app that is integrated with EWS:
Sign-up here:
https://www.microsoft.com/en-gb/smb/products/office-365/
The trial lasts 1 month. Ensure that it is the full business trial -- Do not do a personal trial as it does not have EWS support.
Click "free trial", you'll need to provide a mobile number that can receive a text message token. This is what is used to limit your trials, but you *do not* need to provide any credit card information.
Initially, your outlook/mail options will will be greyed out and there will be a message next to them saying that they are being set-up.
EWS is enabled by default, there is no setup as such required.
Domain: [Leave this blank]
Service URL: https://outlook.office365.com/EWS/Exchange.asmx
[Note: I do have custom domain set-up in my trial account...But this generic service URL works fine...There is a lot of outdated information on what service URL to use.]
[Note: Auto-discover didn't work for me when I tried it, but that could just be limitations of my EWS implementation]
Anyway, I know it is a real pain to develop independent/free software for EWS so I hope this helps someone. I'm pretty sure this is the only way to get a free hosted EWS account [Other than begging your app users to create one!]
Cheers,
Glen

Sunday, January 17, 2016

Hoverboards

I know they don't really hover, but that's what people are calling them! I recently had the opportunity to ride quite a few different models at CES.

They are a lot of fun. I don't think I would trade my skateboard for one at this point, but they have potential.

I do worry about the kids though. The falls are nasty. People tend to stand completely upright with their legs straight often falling off the back. This makes it very difficult to avoid your head making contact with the road.

  1. The board tends to runaway from you unexpectedly
  2. You're not in a crouched/skating position which makes rolling off the impact easier

I suppose they are no worst than skates/blades in this regard. But skates are much easier to control and less likely to unbalance you when you make a subtle mistake.

Here is a compilation of crashes:




Be careful with the cheap Chinese knock-off models. As a benchmark, boards costing less than about $300. There have been quite a few go up in flames:




Saturday, October 11, 2014

WearMail 


What are the advantages?

WearMail is the most comprehensive email notification app for Android Wear smartwatches.

The Basics:

  1. Stacked notifications to avoid excessive scrolling
  2. Smart commands such as: Open, Archive, Voice Reply and Preset reply
  3. Cotains sender, subject and entire email body

Advanced Capabilities:

  1. All emails: IMAP, IMAP IDLE, POP3 and Exchange Via IMAP or EWS
     [Wear Default: Only GMail]
  2. Instant push mail
     [Wear Default: About every minute]
  3. Additional commands: Mark as Read, Delete Message, Mark High Priority, ...
     [Wear default only offers Open, Reply and Archive]
  4. Add, remove and reorder commands:
  5. Reply with full length preset messages instead of only short replies
     [Wear Default: Only offers short SMS-style replies]
  6. Send additional info to watch such as TO and CC lines etc

Works with any Email App:

WearMail works in conjunction with any email app so there is no need to replace your current app. You simply associate your preferred email app with the account setup in WearMail. Your preferred email app will launch whenever it is needed. WearMail is a completely standalone app with no dependencies on K9, GMail APIs or anything else.

Secure:

All communication is done directly with your mail server unlike other apps in this category that store your details in the cloud and cache your private information remotely where it can be compromised.

Screen Shot:





Download from GooglePlay

Thursday, October 9, 2014

WearMail: The most powerful email solution for Android Wear

WearMail for Android Wear
Displays email notifications stacked in a single notification on an Android Wear device

The notifications contain commands such as 'quick reply' and 'delete email' that are designed to facilitate ultra-quick processing of email.

The app works with nearly all email accounts by supporting the following protocols: IMAP, IMAP-IDLE (Push Mail), POP3 & Exchange via EWS or IMAP. [There are no dependencies on K9, Gmail APIs or anything else]

Download:

Features: 
 • Displays sender name and subject
 • Displays the full email body
 • Stacks notifications to avoid clutter and unnecessary scrolling

Commands: 
 • Open: Opens the email app inbox
 • Close: Closes the email popup
 • Reply: Reply from within the email app
 • Delete: Deletes the notification
 • Delete Message: Deletes the email message from the remote server
 • Mark as Read: Marks the message as read on the remote server
 • Mark as High Pri: Marks the message as high priority on the remote server
 • Archive: Moves the message to the designated folder
 • Quick Reply: Reply from within the popup

Quick Reply Options: 
 • Speak into the watch to reply to an email
 • Choose preset message from a list

Help Out! 
 • Please can a system admin please donate an Exchange EWS account for basic testing
 • Please can someone translate the app into Spanish? [Por favor alguien puede traducir la aplicación en espaƱol?]

Gmail cannot login 
Create a WearMail specific password or turn off 2 step verification in your GMail settings:
https://support.google.com/mail/answer/1173270?hl=en

Questions & Improvements please contact: support@maxlabmobile.com


Friday, June 6, 2014

Float Mail: An Innovative Email App for Android

Float Mail: An Innovative Email App for Android



FloatMail enables Android users to access their email from within any application including full screen apps. It is an extension of an app called Floatifications.

Here is a screen shot that illustrates a Floatification:



Here is a video of a similar extension for SMS messages. It is an excellent illustration of the convenience that Floatifications provide:



Description
Receive email from within any app, without pausing the app, including fullscreen apps.

This is an extension for the app Floatifications published by Rob J. The floatifications app *must* be installed prior to installing FloatMail:
https://play.google.com/store/apps/details?id=robj.floating.notifications

The app supports:
. Displays sender name and subject
. Display full email body
. Commands:
  - Open: Opens the email app inbox
  - Delete: Deletes the Floatification
  - Reply: Reply from within the email app
  - Quick Reply: Reply from within the Floatification
  - Delete All: Deletes all recent FloatMail Floatifications
  - Delete Message: Deletes the email message from the remote server
  - Mark as Read: Marks the message as read on the remote server

The app works with nearly all email accounts by supporting the following protocols: IMAP, IMAP-IDLE (Push Mail), POP3 & Exchange via EWS or IMAP.

Using this extension means you can do away with the status bar if you wish, disable your normal email notifications, and still be notified within FN for Email.

Available from GooglePlay:

https://play.google.com/store/apps/details?id=com.maxlabmobile.floatmail

Cheers!
Glen

Saturday, November 16, 2013

Out of Office: Email Auto Responder

New Android App!

Description

Out of office email auto responder. Setup a SINGLE out of office message for ALL of your email accounts. Or create a different out of office message for individual accounts, senders, subjects and other properties. Update your out of office message any time from anywhere for all your accounts from a single app!

OoO does it's work *entirely* on your device, working in the background. Your email is safe and your data never leaves your device. None of your information is ever sent elsewhere. Period.
* Ability to set a global out of office message for all accounts
* Ability to override the default out of office message with specific messages for individual accounts, senders, subjects and more.
* Also functions as a general purpose email auto responder [More development to be done]
* Schedules: Ability to only auto reply between 9pm and 6am for example
* Notifications: Supplies optional basic notification support for new emails
* History: Shows a record of all auto replies made by the application

Supports IMAP, IMAP-Idle, POP3, and Exchange view EWS and IMAP



Free banner ad supported version available here:

Please contact support  At maxlabmobile.com for feature requests and issues. Thanks.

Friday, October 18, 2013

eNotify supports Sony Smartwatch and SW2

About eNotify:

eNotify provides alerts and notifications for E-mail and SMS messages. Highly configurable, eNotify supports rules with custom alert sounds for different accounts, senders, subjects, recipient addresses, phone numbers and more. Easily silence day-to-day background noise and stay aware of priority e-mails and SMS messages.

* Instant Notifications and Alerts via Push Email
* iOS style Popup notifications
* System Tray Notifications
* Pebble smartwatch and Sony smartwatch Notifications
* LED Notifications
* Sound and Ringtone Alerts
* Text to Speech Alerts
* Custom Vibration Alerts and more.
The app works with nearly all mail services by supporting the following protocols: IMAP, IMAP IDLE (Push Email), POP, POP3, and Outlook Exchange via EWS or IMAP [No Exchange Active Sync]

eNotify does it's work *entirely* on your device, working in the background. Your email is safe and your data never leaves your device. None of your information is ever sent elsewhere. Period.

https://play.google.com/store/apps/details?id=com.hermes.enotifylite

About Sony Smartwatch:

This Android™ compatible watch keeps you discreetly updated & your hands free

http://www.sonymobile.com/gb/products/accessories/smartwatch/

How does it work?

eNotify controls which emails are sent to your watch. Example use case:

I can setup an alert for emails from my boss that arrive between 8am and 5pm between Monday and Friday. When an email arrives matching this description, it will be sent to your wrist along with a vibration. You can read the full email message on the watch.

Enjoy!!

Thursday, September 19, 2013

Email to SMS
Released to Google Play

Description
Converts emails to SMS text messages in real time

Scenario:
. A friend sends an email to your Gmail account
. The email is instantly received by the app background service [using push mail technology]
. The email is moved to your SMS text message app
. You can reply to the "email" using a text message

Important:
. To reply, ensure the sender's email and cell number are in the device contact app

Features:
. Preview: specify how many characters from the email to move to the SMS app
. Options to only convert to SMS text message if sender or recipient is in the contact app
. Options to only convert to SMS text message for specific senders or recipients
. Option to show a notification whenever an email is converted

Mail Support:
IMAP, IMAP IDLE, POP and POP3

Good to know :
. Completely private! Your data/email NEVER leaves your device!
. If interested in mail notifications [but not SMS conversion] please try our sister app: "eNotify Lite"





Try it out on Googleplay:

Motivation

Firstly, I just wondered if this was even possible to do :) As it turned out, yes I was able to create SMS entries in real time as push emails arrived.

Secondly, it is just a bit of fun for me. I'm not sure that anyone needs this capability. I'm half expecting to get ridiculed for writing an app to solve a problem that does not exist, but we'll see what happens. :) BUT I may get some good ideas for new messaging apps or become aware of different usage patterns.

The effort involved was reasonably minimal as I've built up a lot of email code working on other projects.

Cheers,
Glen

Saturday, September 7, 2013

eNotify & Battery

I've had some queries recently about the battery usage in eNotify Lite. This article answers the following 2 questions:

1. Does eNotify cause battery drain?. The answer is NO, but will take some explanation :) Regularly checking for emails on a server is an inherently expensive task. However, eNotify tries to do this in smart way to reduce battery and data consumption.

2. What can I do to make eNotify use less Battery? Answers below.

Polling vs Push Email:


Polling means to check the server for mail at a specified interval. In eNotify, you have a "Check Interval" with values from "Every Minute" up to "Every Hour". Obviously, polling every minute is more expensive than polling every hour. However, it isn't due to the network traffic or the processing power required to scan the emails. The main problem is that it requires the device to wake up frequently. Mobile devices conserve energy by periodically going into deep sleeps. However, if you disturb the device every minute then it will use more battery.

Push Email in eNotify can be accomplished by using IMAP-idle. IMAP-IDLE as described by About.com:
IMAP IDLE is an optional expansion of the IMAP email accessing protocol that allows the server to send new message updates to the client in real time.
Instead of having your email program check for new mail every few minutes, IMAP IDLE allows the server to notify your email program when new messages have arrived. You can see incoming mail immediately.
IDLE is implemented by maintaining a permanent connection to the mail server. Is this expensive in eNotify? No, by default we do not hold the device awake while idling. However, you can force the device to stay awake by selecting accounts -> [your account] -> Advanced -> Wake Lock -> On
What is a Wake Lock? eNotify periodically uses "partial" Wake Locks to keep the device awake during email scanning. A partial wake-lock lets the screen sleep, but keeps the CPU active. In human terms, it stops the device sleeping on the job! :)

FACTS:


The following data comes from one of our users Eric Moore. He initially contacted me about a separate issue, but our correspondence ended up leading to a detailed investigate of the battery characteristics of eNoitfy. I've quoted Eric here with his permission:

Eric writes:

I am not having any problem with battery drain. I use BetterBatteryStats to measure battery drain.
Before installing eNotify, my battery drain night was typically between 1.1% and 1.5 % per hour (then my email app, the stock Samsung email app was polling once an hour at night). I’ve also used [app name removed] (which is imap push) and also got battery drain in the same range.
Last night, with enNotify running, my drain was 1.1% per hour. It has been around there every night since have I’ve had it installed (about a week now). My battery drain, with use, during the day seems to be what is was before. I am pretty happy with that... 
According to BetterBatteryStats, over the last 4 and a half hours, eNotify has taken 742 partial wake locks for a total of 21 seconds. It is not even in the 10 of all my processes for time in partial wakelocks.
Fyi, Before trying eNotify, I tried an app called [name removed]. With that app my battery drain at night was about 3.5% per hour.
So I’m getting my email notifications instantly, with no perceptible impact on the battery!
  
2 Accounts: IMAP IDLE and 1 minute interval:

Yes. One imap-idle account and one gmail account.

 My device is going into deep sleep 60% to 90%  of the time according to both BetterBatteryStats and CPU Spy.

Compared against email App:

when I used [named removed] mail (with IMAP push), I got deep sleep percentages of 60% - 90%, 

also, same as with eNotify.

2 Accounts: Both using 1 minute interval:

As you requested. Here is a output from BetterBatteryStats, with one minute polling, after 1 hour and 6 minutes.  I had both my imap account and gmail accounts set for one minute polling.  (Maybe the AlarmManager entry corresponds to one poll per minute for 66 minutes (?).)


The battery drained about 2% over an hour. 
big THANK YOU to Eric for running these tests.
In conclusion, eNotify handles the battery especially well for an app with a challenging mission.

eNotify Lite: What's the difference?


There must be some problems, right? YES. I cannot hide form what I've done! :) It came to my attention recently that eNotify-Lite does have an issue with battery drain. The two versions (Lite and Full) are nearly identical however eNotify-Lite serves ads with the mopub advertising library. Why is this an issue? Well these wee little beasties apart from being annoying are also implemented using javascript or in some cases flash. To render these ads require additional browser threads and screen updates. This is compounded by the fact that some Android devices are not very clever about shutting down browser threads.

For users that keep their screens on frequently, the 'movement'  in the ads [Browser threads] can cause battery drain...In 1.97, I added  code to remove any dynamic ads after a period of time this greatly reduces the battery usage.. I've also replaced mopub with Google admob. The presentation and resource utilization is much better in AdMob which isn't surprising given their tight integration with Google.

eNotify Lite Tests, Conditions:
  • HTC ONE V (Ice cream sandwich)
  • One gmail account idling
  • Screen set to ALWAYS ON
  • Pop-up dialog permanently open
  • 2 Hours
eNotify not installed: 2 Hours: 23% drain
eNotify Full Version (pre 1.97): 24% drain
eNotify-Lite (pre 1.97): 31% drain
eNotify 1.97: 24% drain

I'm not sure the small percentages mean anything...It could just be rounding errors in my trial.

WHAT SETTINGS CAN HELP?


As Eric's data hows, eNotify uses the battery well in spite of being given a challenging task ->  Contacting the mail server frequently to check for new messages.

But the following options can help you squeeze more battery out:

WIFI Sleep Policy:

Keeping the WIFI radio on [sleep policy: Never] is not an issue in isolation. The problem arises when you're walking around with your device. The OS will constantly be scanning for new WIFI hot spots trying to make a connection. This will wear down the battery eventually. So you're better off selecting a less aggressive policy such as "After 15 minutes".

Check Interval:

If eNotfiy checks the server frequently it will use more battery (and data). Checking every "30 minutes" or "Every Hour" will use negligible battery [Meaning you won't even be able to measure what eNotify is using compared to other apps].. But as Eric's tests showed above, he scanned 2 accounts every minute for 1 hour and it only used about 2% of the battery.

Screen:

The biggest impact on battery life is your screen sleep time. eNotify never sets anything to keep your screen alive. It is solely determine by your device settings. 

Keep in mind that eNotify Lite [and other free apps] do serve ads. Those ads will cause screen refreshes which consumes some battery. However, as mentioned above eNotify-Lite now aggressively removes ads and uses in addition to using an efficient network It would expect battery usage form ads to be lower in eNotify Lite as compared to other apps.

Wake Locks:

Wake Locks keep the device  CPU alive long enough to scan the mail accounts. You can turn wake-locks off in the Advanced menu on the account edit screen. However, if you do this there is no guarantee that eNotify will wake up and notify you of messages. So you'll be sacrificing reliability to gain some battery savings.


THE FUTURE?


I may add a few more settings to let power users control the battery usage:
  1. Ability to switch polling intervals when battery is low [1 minute to 30 minutes for example]
  2. Ability to turn polling off when battery is low
  3. Advanced menu control over some of the settings like the retrying failed connections
  4. Advanced control over a component called the AlarmManager that wakes up the application when it is time to scan the accounts

None of these are particular difficult to do, but it isn't clear that they are necessary. Introducing a battery plan suggests that eNotify is battery intensive and may cause panic, but the only test results I've seen seem to suggest it isn't an issue.

I do like the idea of features 1 and 2, but I need to do additional testing to see if they will make any meaningful difference.

eNotfiy:
https://play.google.com/store/apps/details?id=com.hermes.enotifylite

eNotify Queries:
android_support @ verietassoftware.com

Glen Cook:
http://ewhizmobile.com/

Tuesday, August 6, 2013

eNotify Supports Pebble

eNotify:

eNotify is the swiss army knife of messaging notifications. eNotify provides private and secure direct local notification for incoming email and SMS messages.. Highly configurable, eNotify supports complex rules with custom alert sounds for different accounts, senders, subjects, recipient addresses, battery events, and cellular data events. Easily silence day-to-day background noise and stay aware of those important emails! Available on both Android and iOS


Pebble:

Pebble is the first watch built for the 21st century. It's infinitely customizable, with beautiful downloadable watchfaces and useful internet-connected apps. Pebble connects to iPhone and Android smartphones using Bluetooth, alerting you with a silent vibration to incoming calls, emails and messages. While designing Pebble, we strove to create a minimalist yet fashionable product that seamlessly blends into everyday life.

How does it work?

The notifications are sent from your Android device to the pebble wrist watch using the bluetooth protocol. eNotify contacts the pebble software running on your Android device to inform it that a notification needs to be sent. This is done via the standard Android intent mechanism as follows:

public static void showPebble(Context context, String sender, String subject) {
try {
final Intent i = new Intent("com.getpebble.action.SEND_NOTIFICATION");

final Map<String, String> data = new HashMap<String, String>();
data.put("title", sender);
data.put("body", subject);

final JSONObject jsonData = new JSONObject(data);
final String notificationData = new JSONArray().put(jsonData).toString();

i.putExtra("messageType", "PEBBLE_ALERT");
i.putExtra("sender", "eNotify");
i.putExtra("notificationData", notificationData);

context.sendBroadcast(i);
} catch (Exception e) {
EventLog.e(TAG, "Error Cannot send pebble alert: " + e.getMessage());
}
}

eNotfiy:
https://play.google.com/store/apps/details?id=com.hermes.enotifylite

eNotify Queries:
android_support @ verietassoftware.com

Glen Cook:
http://ewhizmobile.com/


Saturday, July 20, 2013

eNotify is Quality!


eNotify Quality Report

eNotify provides private and secure direct local notification for incoming email and SMS messages.. Highly configurable, eNotify supports complex rules with custom alert sounds for different accounts, senders, subjects, recipient addresses, battery events, and cellular data events. Easily silence day-to-day background noise and stay aware of those important emails!

It is available for both Android and iOS. This article looks at the Android version.

eNotify Crash Report:

Crashes:
As far as the crashes, I'm very pleased with only having 2. It is really good considering the app has been under active development throughout its entire lifetime [~3 months]. It has had over 40 upgrades including 2 rounds of major new feature sets. It has processed tens of thousands of emails some with bespoke drivers. To achieve this without sacrificing quality has been a remarkable result for us.

ANRs
What's an ANR? It stands for "Application Not Responding". This can happen for example when the app does something that takes too long to complete. In this scenario, it can prevent the UI from  responding to the user. You will generally see this after the device has been stuck for 5 seconds or more. When this happens, the user is shown a dialog with options "Force close" or "Wait".

eNotify has not had any ANRs thus far in either the full or lite versions. This is really unusual considering the amount of processing and network activity that this app does. The app is essentially a full email client in terms of the processing. To have no ANRs shows that our design and internal structure is solid and functioning reliably.

In general, the app avoids ANRs by doing most of its work in a service running background "threads". This prevents the main UI  "thread" from getting stuck.


eNotify Lite Crash Report:


eNotifyLite has has a total of 16 crashes. It processes far more email than the paid version. The paid version can do between couple thousand and ~10K per week at the moment. On the other hand, the lite version process tens of thousands of emails each week..

Of the crashes, 4 occurred in the MOPUB advertising library and 1 in the TAPJOY library. So 31% have occurred in third party advertising libraries...Luckily MOPUB is open source, so I was able to download their source code and fix it.

A further 3 crashes occurred as a result of corrupt build after I upgraded the Android development tools. This was totally my fault. I should have been more careful before deployment. So I've upgraded our procedures to always include a "smoke test" for any new version of the app no matter how trivial the changes.

The remaining 9 crashes (56%) are real human programming errors by me. These are the ones that were perhaps less avoidable if you allow for humans making mistakes! Grudgingly, I do make them :) But overall, the quality of eNoitfy Lite is very good thus far.


Staged rollouts:


This is a helpful new feature added to the Android market. You can release your app to 5% of users instead of the entire user base. This is a God send for controlling quality. Once your're happy with the release, you can increase the percentage. The only negative aspect is that development console statistics are only updated once per day. So it can take a full day before you get enough feedback to increase the percentage.

When making significant changes now, I only release to 5% of the users until I'm sure the new version is sound. This isn't a replacement for testing of course, but it saves my bacon in the event that anything gets through.

Conclusion:

I'm really happy with the quality of eNotify. Quality is our only option. If we release builds that crash and do not work our user base would come down on us like a ton of bricks. This is an app that's informing people of important messages. Many of the users are first responders and people whose jobs entail significant responsibility. It is our responsibility to deliver a good quality app that works reliably.

Update: August 7th

Now that we are done with the major feature sets the quality is excellent. Our growth rate, continues to increase month on month, but we've only had 2 crashes and 1 ANR over the past 4 weeks. I know! Our first and only ANR. I was really proud of the zero record. It was painful to lose it!! :)
  • One crash in mopub advertising library while displaying a flash ad
  • One crash in the app which has been fixed
  • This particular ANR is a Android platform defect that has an existing ticket raised against it
We continue to be careful with our roll-outs. It takes up to week now to get simple features to the users which is a shame. but quality control is essential. The bottleneck is the Google console. It only updates once per 24 hours so it take a lot longer than it otherwise would to do incremental roll-outs. It would be nice if it updated more frequently during staged roll-outs.

eNotfiy:
https://play.google.com/store/apps/details?id=com.hermes.enotifylite

eNotify Queries:
android_support @ verietassoftware.com

Glen Cook:
http://ewhizmobile.com/



Saturday, July 6, 2013

App Marketing in the Android Forums: Case Study: eNotify

App Marking: Android Forums

Case Study: ENotify

Is marking your app on the Android forums effective? There are numerous forums to which people turn to for technical help and keep abreast of announcements relating to their devices and apps. The majority of these forums have a dedicated thread for announcing new apps. However, you need to be aware of the rules for each individual forum:

Rules in General:
  • The announcement must conform to a certain format:
    • Example] "[APP][2.2+] ENotify"
  • Only make 1 post about the app. Any future announcements must be made in the same thread
  • Some have restrictions on how many screen shots and links that can be included
  • Many forums forbid marketing paid apps

ENotify:
  • First Month: The app averaged 2 downloads per day
  • Second Month: The app averaged 6 downloads per day
  • The 5 days following posting to the forums: The app averaged 14 downloads per day
Is that significant? Yes! It is to me :) My goal with the app is to build a small base of users so that I stimulate word of mouth growth while I continue to refine the app and its feature set.


Other benefits:
  • Posts are indexed by search engines so be sure to include key words that represent your apps features
  • Got some feedback on defects that were subsequently fixed as a result
  • A number of people discussed new potential features they'd like to see in the app

View Counts:  [July 2nd 2013 through July 6th 2013]
Total Views: 949

In conclusion, the most import forums for generating awareness are XDA, Droid Forums and Android Central.

More ideas for marketing your apps by Muhammad Ali

Check out my app for Android Wear:
WearMail

Best Regards,
Glen

Thursday, February 2, 2012

Android Market: What sells?

Today I'm taking a statistical look at the Android Market to find out what is selling.

I'm sure we all have some ideas for market applications, but what are people actually buying?

The market interface does not let you sort by arbitrary criteria such as the number of installs. To compile these statistics, I've used the following procedure:

I've analysed the first 125 applications under 'Top Paid Applications':
Apps -> Applications -> Top Paid

Again the criteria is somewhat obscure because the formula that Google uses for presenting top paid applications is not known. But it will undoubtedly be some combination total installs, install trend, user rating and other factors.

The Market does not give an exact number for installs. It instead gives ranges such as:

  • 500K to 1 million
  • 100K to 500K
  • 50K to 100K
  • ...

For purpose of this analysis, I'm only looking at applications that meet the following criteria:

  • They are listed in the first 125 entries under "Top Paid Applications"
  • Over 500K installs
  • 100K to 500K installs
  • Applications with less installs are ignored
  • Games are ignored
Finally it is important to note that the statistics completely ignore games. Games are far and away the top selling applications on the market. However, I'm more interested to see what non-gaming applications people are purchasing.

The over 500K Install club: 

Beautiful Widgets:
https://market.android.com/details?id=com.levelup.beautifulwidgets&feature=top-paid#?t=W251bGwsMSwxLDIwNiwiY29tLmxldmVsdXAuYmVhdXRpZnVsd2lkZ2V0cyJd

SwiftKey:
https://market.android.com/details?id=com.touchtype.swiftkey&feature=top-paid#?t=W251bGwsMSwyLDIwNiwiY29tLnRvdWNodHlwZS5zd2lmdGtleSJd

PowerAmp:
https://market.android.com/details?id=com.maxmpz.audioplayer.unlock&feature=top-paid#?t=W251bGwsMSwyLDIwNiwiY29tLm1heG1wei5hdWRpb3BsYXllci51bmxvY2siXQ..

Camera Zoom FX:
https://market.android.com/details?id=slide.cameraZoom&feature=top-paid#?t=W251bGwsMSwyLDIwNiwic2xpZGUuY2FtZXJhWm9vbSJd

Paper Camera:
https://market.android.com/details?id=com.dama.papercamera&feature=top-paid#?t=W251bGwsMSwyLDIwNiwiY29tLmRhbWEucGFwZXJjYW1lcmEiXQ..

SoundHoud:
https://market.android.com/details?id=com.melodis.midomiMusicIdentifier&feature=top-paid#?t=W251bGwsMSwyLDIwNiwiY29tLm1lbG9kaXMubWlkb21pTXVzaWNJZGVudGlmaWVyIl0.

ADWLauncher EX:
https://market.android.com/details?id=org.adwfreak.launcher&feature=top-paid#?t=W251bGwsMSwyLDIwNiwib3JnLmFkd2ZyZWFrLmxhdW5jaGVyIl0.

Shazam Encore:
https://market.android.com/details?id=com.shazam.encore.android&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImNvbS5zaGF6YW0uZW5jb3JlLmFuZHJvaWQiXQ..

Documents ToGo:
https://market.android.com/details?id=com.dataviz.docstogoapp&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImNvbS5kYXRhdml6LmRvY3N0b2dvYXBwIl0.

Talking Tom Cat:
https://market.android.com/details?id=com.outfit7.talkingtompro&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImNvbS5vdXRmaXQ3LnRhbGtpbmd0b21wcm8iXQ..


Some Trends:

Talking Heads:

Talking Tom Cat:
https://market.android.com/details?id=com.outfit7.talkingtompro&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImNvbS5vdXRmaXQ3LnRhbGtpbmd0b21wcm8iXQ..

Talking Ben the Dog:
https://market.android.com/details?id=com.outfit7.talkingbenpro&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImNvbS5vdXRmaXQ3LnRhbGtpbmdiZW5wcm8iXQ..

Talking Rex the Dinosaur:
https://market.android.com/details?id=com.outfit7.talkingrex&feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwiY29tLm91dGZpdDcudGFsa2luZ3JleCJd

Typically, these are applications that repeat things via an animated character or have some limited capacity to converse with the user.



Augmented Reality:

These are application that apply effects and filters to your photos. For example,  a photo may be augmented to appear like a comic strip or things may be added to the photo such as fictional characters.

Camera Zoom FX:
https://market.android.com/details?id=slide.cameraZoom&feature=top-paid#?t=W251bGwsMSwyLDIwNiwic2xpZGUuY2FtZXJhWm9vbSJd



Live Wallpaper:

Wallpapers are selling quite well albeit they are generally only priced around the $1 mark.

https://market.android.com/details?id=fishnoodle.aquarium&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImZpc2hub29kbGUuYXF1YXJpdW0iXQ..



System Utilities:

Thankfully people are still interested in useful applications as well :) These are applications like:  ROM, battery and CPU management, File Explorers and Anti-Virus amongst others.

Root Explorer:

https://market.android.com/details?id=com.speedsoftware.rootexplorer&feature=apps_topselling_paid#?t=W251bGwsMSwxLG51bGwsImNvbS5zcGVlZHNvZnR3YXJlLnJvb3RleHBsb3JlciJd



Finally, these graphs only looking at what sells in volume. Obviously, the price point of an application is important. But I was merely curious about what is popular regardless of the purchase price.

Glen Cook
Consultant @ eWhiz Mobile

Tuesday, January 31, 2012

Android: Getting Started with PhoneGap

Android: Getting Started with PhoneGap

PhoneGap is a platform for creating native mobile phone applications using HTML 5.

HTML 5 is a powerful new specification that goes well beyond the capabilities of traditional HTML. APIs that are new in HTML 5.
  • Canvas: 2d drawing
  • Offline Web Applications
  • Document Editing
  • Drag and Drop
  • Cross Document Messaging
  • Browser History Management
  • Web Storage (Stores large amounts of data better than Cookies)
  • Geolocation
  • Indexed DB
  • ...
However, HTML 5 alone is not enough for delivering portable mobile phone applications. For instance, it does not contain many of the APIs needed to access the sensors on your phone: Compass, Barometer, Proximity and others. It does not provide access to the event data that you may need: battery level, connection status and other events. It certainly doesn't provide you with access to platform specific features such as Android notifications.

Enter PhoneGap, it is the middle layer that sits between the native platform and HTML 5. There is nothing magic about PhoneGap. You can certainly implement HTML 5 applications on Android without it. But it makes HTML 5 development more convenient for you:
  1. It sets up a managed WebView so there is no need to do this manually. When implementing a PhoneGap application you start thinking about HTML immediately rather than having to deal with setting up the native portion of the application -> Delclaring a WebView layout, Setting it as the content view, etc.
  2. It handles accessing native APIs for you. Without phoneGap, you would need to write code like: WebView.addJavaScriptInterface(new BarometerReader(), "barometer");
The second point is by far the most important. By providing Javascript APIs for accessing native data, PhoneGap can insure that your Javascript is the same on every platform. It eliminates the small percentage of Javascript code that would need to be rewritten for each platform. The PhoneGap APIs are located here:
http://docs.phonegap.com/en/1.4.0/phonegap_notification_notification.md.html#Notification

They include support for:
  • Accelerometer
  • Camera
  • Capture
  • Compass
  • Connection
  • Contacts
  • Device
  • Events
  • Geolocation
  • Media
  • Notification
  • Storage
Let's look at very simple example:

index.html:


<!DOCTYPE html>
<html>
<head>
    <title>Device Properties Example</title>


    <script type="text/javascript" charset="utf-8">


    // Wait for PhoneGap to load
    document.addEventListener("deviceready", onDeviceReady, false);


     // PhoneGap is ready
     function onDeviceReady() {
        var element = document.getElementById('deviceProperties');


        element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
                            'Device PhoneGap: ' + device.phonegap + '<br />' + 
                            'Device Platform: ' + device.platform + '<br />' + 
                            'Device UUID: '     + device.uuid     + '<br />' + 
                            'Device Version: '  + device.version  + '<br />';
    }
    </script>
</head>
<body>

    <h1>Let's print some device info</h1>

    <p id="deviceProperties">Loading device properties...</p>

    <h2>Done</h2>

</body>
</html>


HelloPhoneGapActivity.java:


import com.phonegap.*;
import android.os.Bundle;
public class HelloPhoneGapActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        super.loadUrl("file:///android_asset/www/index.html");
    }
}

The output on my HTC Desire looks as follows:


In a nutshell, instead of overriding Activity we now override 'DroidGap' which is provided by the PhoneGap jar library. In onCreate, instead of calling setContentView, we call super.LoadUrl with our index.html file. The full installation and start-up details are located here:

Don't worry, PhoneGap is very easy to set up. The one gotcha is to make sure the following line is correct:
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>

In the most recent distributions of the PhoneGap, the script name is slightly different than "phonegap.js". It may be something like: phonegap-1.3.0.js. Ensure this file name correctly refers to the javascript file in your project or onDeviceReady() will not be called.

Is PhoneGap ready for large scale projects? I have my concerns...The code above is the simplest of examples yet it has not managed to correctly print my device name. The device is a HTC desire not a 'htc_bravo' which can be verified on the 'Phone Identity' screen. I suspect it doesn't parse correctly due to the unorthodox string returned by the native API "htc_htc_desire". 


I've had feedback from other consultants that have abandoned PhoneGap due to portability issues. I've been told in generally works fine for iPhone and was getting better on Android, but didn't work as well on the smaller platforms like winPhone, BlackBerry, Symbian and others.


In conclusion, you should consider using a platform like PhoneGap to access phone specific features through a standardized API. There are other platforms that can be used to accomplish the same goal: Titanium, JQTouch and Sensha Touch for example. However due to the immaturity of these platforms, you should make sure they are capable of reliably delivering the APIs you need for the mobile platforms that you are targeting.


Glen Cook
eWhiz Mobile

Sources:
http://en.wikipedia.org/wiki/HTML5
http://phonegap.com/
Chris Woods
Martin Lewin

Tuesday, January 17, 2012

Android: Native or HTML 5 Applications


The biggest mistake made by companies in today's mobile environment is writing native applications when using HTML 5 would be more appropriate.

What is HTML 5? Broadly speaking, it includes the technologies for: HTML mark-up, Javascript and Cascading Style Sheets. It includes support for amongst other technologies: geo-location, audio & video, web storage, multi-touch, device orientation, speech recognition,  and the Javascript equivalent of threads: web workers. As you can see, HTML 5 goes well beyond the capabilities of earlier web technologies.

Using HTML 5 reduces the cost of development and expands the reach of the application. By doing an Android application in HTML 5, it only requires minor tweaks to bring it to iPhone, WinPhone and other platforms.

What is the case for doing native applications? Given that we can reach many more devices by using HTML 5, we should consider the justifications:
  • Broader access to the underlying hardware and sensors
    • Camera
    • Barometer
  • Tighter integration with system features: 
    • Notifications
    • Home Screen Widgets
  • Ability to integrate with other applications 
    • Launch the native Facebook application
    • Use the Android software bus (Intents) to pass it data
  • Faster, smoother and can be more attractive
  • More explicit management of resources
    • Battery
    • Memory
  • First access to new features not yet accessible through HTML 5
  • Achieving a native look and feel
  • Access to advanced UI components
    • Renderscript: 3D views utilizing hardware acceleration
      • The You Tube application's wall of videos
      • The playlist carousel used in the standard Honeycomb media player
    • Other views that have no HTML 5 equivalent: StackView for example 
An attractive alternative is to create a hybrid application. This is accomplished by embedding a web view inside a native application. Android provides excellent facilities for passing data between the native and HTML 5 portions of the application. For example, you can use WebView.loadUrl from the SDK to evaluate Javascript within a web page and return the results for parsing and further processing. In the opposite direction, Javascript can talk to native components using the WebView's  Javascript interface. For example:
WebView.addJavaScriptInterface(new BarometerReader(), "barometer");
Hybrid applications are more discoverable than pure web applications. Web applications can made available through the Chrome Web Store which is analogous to the Android Store. See the following screenshot of a Chrome browser with Angry Birds installed from the Chrome Web Store:


While this is great, it suffers from several issues:
  • Chrome has not yet been ported to Android
  • There is no section in the Android Market for web applications -> No equivalent of the Chrome Application Store
  • Creating a pure web application does not allow for a home screen launch icon on your mobile device
I imagine the Chrome Web Store will eventually be integrated into the Android Market in such a way that the user will not need to initially know if an application is native or pure HTML 5. But at the moment, it makes sense to create hybrid applications if for no other reason than they are more discoverable. By hybrid, we mean at a minimum embedding a web view inside of a native Dalvik application.

In conclusion, companies should be looking at writing Hybrid applications using HTML 5 to broaden their reach and to utilize the existing skills that exist within their organisations. This is especially true if the application in question is primarily a content application such as a newspaper or magazine. HTML 5 is the future and will increasing replace native applications written for specific platforms.

Glen Cook
Consultant at eWhizMobile


Sources:
Android: Native vs. HTML 5 Applications
Introduction to HTML 5
SDK Documentation: WebView