Click Here to Request a FREE Quote to Develop an iPhone App or Android App

Talking to your Android and iPhone Mobile Apps

talkingToPhone


Apple iPhone App Developers are all waiting with baited breath for Apple to allow open access to their SIRI engine, Apple’s engine for understanding spoken communication. As of the last time I checked (about 5 minutes ago), Apple does not allow Apps to start SIRI – so users can choose to say fill a text field with SIRI, but the app cannot start SIRI on behalf of the user.

Android has a voice recognition window which an app can open – but it is not really under the control of the app. The Android app can request that the Android phone or tablet present a window which accepts voice, then when the user indicates they have finished speaking, Android passes control back to the app, which can analyse the result of the voice recognition effort.

Neither of these options is “natural” – both the iPhone and Android option are in my opinion clunky, they require the user to take positive action to restore control back to the app.

If your iPhone app or Android app needs hands free voice control, the app needs to be able to initiate voice recognition, detect when someone is speaking, and process the voice to determine what was said, independent of whether the user presses a button.

Thankfully, third party service providers have filled this gap.

My favourite is Dragon Mobile. Dragon Mobile SDK is provided by the same company which publishes Dragon Speech, the legendary desktop PC speech recognition application, Nuance. Nuance has been in the game for over a decade – from somewhat humble beginnings, their product has developed into a sophisticated and reliable speech recognition system, a remarkable achievement in artificial intelligence.

The only downside of Dragon is it relies on an Internet connection. The processing power required to recognise and interpret normal spoken sentences is far greater than an Android App or iPhone app can deploy, so Dragon SDK ships the compressed sound files via the Internet to their servers.

What is the Internet bandwidth is an issue? There are still options. An Android App or iPhone app does not have the processing power to interpret any arbitrary spoken sentence, but it does have the processing power to recognise individual words. So if your iPhone app or Android app only has to recognise a handful of words, such as “yes”, “no”, and “maybe”, then the processing power for this simplified task can be comfortably accommodated without an internet connection to an external server.

If you are interested in Android Apps or iPhone Apps which can recognise speech, or which can read text from images (optical character recognition), please email eworrall1@gmail.com, to discuss your requirements.

Announcing PDF Write

Announcing PDF Write – a new FREE iPhone app which allows users to easily create simple single page PDF documents using photos, text and a library of funny cartoon pics.

PDF Write was designed with ease of use in mind – so while it lacks some of the features of more advanced PDF editors, It makes up for it by being really easy to use. Double tap the screen to add new text of images, or touch one of the buttons. Then when you are ready to share the PDF, simply press the send button, to see a simple list of options.

Give it a try, let me know what you think – either leave a comment, or send me an email.

Can my iPhone app or Android app run Microsoft .NET Components?

The answer, surprisingly, is a qualified “yes”.

iPhone Apps and Android Apps execute in a Unix like environment – both are based on BSD Unix.

BSD is very like its better known cousin Linux, except that the license terms for BSD make it easier to customise – unlike Linux, with BSD you don’t have to make your modified source code public domain.

And .NET components can run on Unix (i.e. iPhone app and Android app environments), by using the Mono framework.

There are a few gotchas. Mono components will run slower than native components, and consume more memory – which can be an issue on memory constrained devices like mobile phones. So I would recommend against writing an entire app in Microsoft C#. In addition, some features won’t be wired up out of the box, so if you want to display a .NET XAML component on your iPhone app screen, you can look forward to a great deal of work.

But if you want to say create a native iPhone App or Android App, but embed a Microsoft .NET communication client component for talking to your backend system, then an embedded Mono system could provide a labour saving solution to your needs.

Mono also works on Linux servers – ASP.NET components can in many cases be run immediately after a Mono environment is installed on an Apache Linux system.

If you would like to know more about running Microsoft components in an iPhone app or Android app, please leave a comment, or contact Eric Worrall.

Why Android is still Second Best for Some

Thinking back to my old Sony Ericcson P990, back in the mid noughties, I would have loved to replace it with an Android phone.

The P990 was a geek phone. It had no battery life, but it had an amazing array of features. I once reconfigured it to use an international dial up internet connection, to post an email from a beach in Thailand, where no mobile internet was available (at the time). You can’t do that with a modern phone. But the P990 was in my opinion utterly unusable, unless you knew an awful lot about IT.

Compared to that, Android is a dream for ordinary users – most of the functions can be accessed without arcane messing with the settings, the app paradigm is simple and intuitive – what could be better?

The answer of course is iPhone. I tried switching my wife to an Android phone a few years ago, when she needed a new phone (I needed a new test device, budget was tight) – she hated it.

I had to buy my wife a new iPhone when she threatened to throw the Android phone out the window of the car. It kept stalling her, tripping her up with sudden eruptions of complexity, which she needed me to fix – something she never had to fear when using an iPhone.

Granted her phone ran Gingerbread, and new versions of Android are far better.

Android is good, many people use it and love it. Android Apps can do things iPhone Apps are forbidden from doing. An Android app can send email or SMS on your behalf (once you grant fairly scary permissions before installation), which opens a vast range of desirable functionality, such as apps which create personalised SMS messages.

Android apps can run background processes (iPhone is very limited in this regard, though less so with iOS 7), and Android apps have far fewer limitations when it comes to app store approval – so it is possible to configure Android apps and Android phones to do really useful tasks, which simply cannot be done on an iPhone, unless you jailbreak it.

But iPhone has one, towering advantage of Android – it doesn’t scare people. It doesn’t deter people who are uncomfortable with geek devices.

This in my opinion is the source of iPhone’s loyalty – people who don’t like tech, feel comfortable using an iPhone. This simple, powerful advantage is what makes iPhone special.

It remains to be seen whether Apple iPhone can maintain this advantage. Android is catching up – each generation of the Android operating system is a little easier to use, a little less threatening to people who can’t stand geek tech.

The next version of Android may be the breakthrough which levels the playing field.

Could Android Apps replace Microsoft Windows?

Today The Register, a major tech website, published news that China has discontinued its efforts to develop a Red Chinese rival to Microsoft Windows, Red Flag Linux. China loves Microsoft Windows XP so much, even Chinese government departments refused to give up their Microsoft Desktops, despite widely publicised suspicions that the USA uses hidden back doors in Microsoft Windows to spy on rivals.

The Chinese alternative to Microsoft was to be based on Linux. Linux is a terrific operating system. Linux is the dominant operating system in much of the server market. I use Linux extensively – when I am creating web technology server components for iPhone Apps and Android Apps.

However Linux never really made it as a desktop operating system. Outside of a few geeks, most people use Microsoft Windows or Mac computers. Linux never attracted a critical mass of desktop applications.

Or did it? There is a branch of Linux which did make it to the mass market – Android OS. All Android phones run Linux under the hood.

But Android is a phone operating system – what has this got to do with desktop computers?

It turns out that efforts are already underway to create a desktop version of Android. Android apps are very adaptable – they are designed to work on a wide variety of devices, with a huge variation in screen size. So making an app work on a desktop is not a big stretch – a small desktop monitor has a similar screen size to the largest Android pad devices.

Whether Android makes it on the desktop is still an open question – but unlike all previous attempts to displace Microsoft Windows, Android already has a very large, loyal following. Many people use Microsoft on their desktop, but have an Android phone, and love their Android Apps. The battle between Android and Microsoft for ownership of the desktop promises to be a popcorn event, rather than yet another Microsoft slam dunk.

So my advice to China – if you want independence from Windows, and the confidence of being able to examine and inspect every line of the code you are using, the solution may be right under your nose. Take a look at Android.

Should All School Children be Taught to Code?

Governments across the world are slowly waking up to the fact there aren’t going to be many jobs in the future which don’t involve a computer, or, given the pace of Robotics research, there might not be many jobs at all.

In response to this looming crisis, the UK government has decided to introduce mandatory software development lessons for all school children.

The problem is twofold:-

  1. Most people find software development intensely boring. The reason we are geeks, is normal people just don’t find fiddling with bits of code interesting. If you aren’t the kind of kid who enjoys spending hours building sophisticated model train sets or model airplanes, doing complex puzzles, or creating your own board game, you just haven’t got the mindset to code – it is not about whether you are smart, it is just that you will fall asleep from boredom before you learn anything useful.
     
  2. Governments and their advisors have no real idea what software development is, and have no idea how to teach it to others.

The tragedy is this desire to teach kids coding skills is motivated by a genuine concern for the future welfare and job prospects of the nation’s school children.

I have a few suggestions for politicians who want to help kids develop coding skills

  1. For pity’s sake, do not make the software lessons mandatory. By all means *expose* kids to a few coding classes, but allow the 99% of kids who find software coding intensely boring to drop out. Don’t poison their desire to be educated by adding what for most of them will be an unendurably monotonous subject to the list of courses they have to pass.
     
  2. Teach the handful of kids who are interested coding skills which are likely to be relevant – teach them to build Android Apps and iPhone apps.

    I am not suggesting iPhone apps or Android apps and phone handsets in 20 years time will be the same as they are today – they will be radically different. But at least start kids on the right path.
     

  3. Make it interesting – get kids to code and own apps which might actually make money. If a 14 yr old kid can create a world beating iPhone app, then anyone can – the very next app your kid codes could make millions of dollars.
     

My suggestions might not solve the looming future jobs crisis – but forcing kids to study something they can’t stand is not a solution either. In any case, there is reason to be optimistic about the future – many issues which in the past were seen as an urgent crisis rapidly solved themselves. Human ingenuity will solve this problem, just as it solved all the other problems we have ever encountered.

I refer interested readers to Scott Adam’s law of slow moving disasters.

If you would like to know more about how to develop Android apps and iPhone apps, or would like to discuss an app idea, please contact Eric Worrall.

If your app idea is not quite ready to go to a developer, please visit Apps Nursery, for expert assistance with exploring and developing your app idea.

Should Apple sell Android Phones?

Steve Wozniak, one of the original founders of Apple, recently stunned Apple fans by suggesting Apple should build Android phones.

“There’s nothing that would keep Apple out of the Android market as a secondary phone market,” said Wozniak. “We could compete very well. People like the precious looks of stylings and manufacturing that we do in our product compared to the other Android offerings. We could play in two arenas at the same time.”


My question – instead of building a separate handset, why don’t Apple allow iPhones to run Android apps?

From a developer perspective, it is technically easier to write Apple iPhone apps than Android apps. The Android App development system (the software used to create Android Apps) is much more difficult to work with than the iPhone App development system – the Android app system is more temperamental, crashes frequently, is fiddly (it often takes hours to figure out why your code is not compiling) and is really, really slow, especially when you are trying to test your work in progress Android app in the Android Emulator. So I am happy to write Android apps – but I prefer to write the Apple iPhone version of the App first.

However, there is no reason why Apple couldn’t fix all this.

Under the late Steve Jobs, Apple was unremittingly hostile towards cross platform development tools – tools which would allow say a Flash application to run on an Apple phone. But I have always wondered whether this prejudice against alternatives was because Jobs was emotionally attached to the NeXT tools he developed when he left Apple in the 80s – and brought with him, when a desperate Apple Corporation reinstated Steve Jobs as CEO. Jobs may have worried other cross platform technologies might displace his iPhone development environment, if he allowed other technologies on his iPhone.

However, aside from the software, Apple iPhone hardware is technologically very similar to Android phones – both Android phones and Apple iPhones use ARM processors, and have similar specifications. Apple iPhones have all the hardware they need to run Android Apps.

If Apple relaxes its software policy a little, Apple has a golden opportunity to be the best of both worlds – to utterly dominate both the Apple and Android app market, with one handset. To bring their design genius to the task of creating a market leading iPhone which can run most of the world’s apps.

Apple could even bring much needed improvements to the Android development environment. If the technically superb Apple XCode iPhone App development environment came pre-configured with the ability to create Android apps, nobody would ever bother using anything else.

Time will tell whether Apple seizes this golden opportunity, or whether the ghost of Steve Jobs keeps Apple loyal to the prejudices of their old master.

If you would like to know more about the difference between Android apps and iPhone apps, or would like to discuss an app idea, please contact Eric Worrall.

If your app idea is not quite ready to go to a developer, please visit Apps Nursery, for expert assistance with exploring and developing your app idea.