Smartphone choices: iPhone vs. Nexus
October 25, 2011 7:58 PM   Subscribe

I have conflicting needs driving me towards either the new Nexus phone or an iPhone 4S. Which will be better?

There are a few things I would ideally like to do with a smartphone, besides the usual things that all of them can do:
  • real-time audio DSP,
  • scripting,
  • writing my own apps without the intent to distribute.
I'm aware that Android, as of Gingerbread, has latency issues that make the first impossible, and that Apple's application guidelines prohibit the creation of apps that contain interpreters that would allow the latter. Finally, for the last item, my impression is that the ADT plugin for Eclipse allows you to sign applications you write with a debug key so you can put them on the phone, which would be good enough for me. I'm comfortable enough with both ObjectiveC and Java, so that particular issue doesn't really concern me. I'm not really into the idea of babysitting a jailbroken iPhone, unless you can provide a really compelling argument in its favor (is it still possible to install apps from the app store on one?).

So given that my desires conflict with reality, I have a few questions:
  • Is there any confirmation as to whether Ice Cream Sandwich fixes the latency issue? A Google search has revealed nothing but several-month-old promises from Andy Rubin and idle speculation in turn.
  • Are the options for synthesis/music creation on the iPhone worthwhile for non-amateur musicians? That's not a judgment, it's just that most of the ones I've seen look like fun toys rather than compelling tools. Are there any synthesis apps that let you do something that you couldn't with a standard laptop or desktop setup?
  • As far as scripting goes, are there actually any compelling uses for it on a phone? My vaguely rendered dream has me writing scripts that do things like send out text messages automatically based on certain conditions or according to certain script invocations, or delete voicemails according to a specified filter, but I don't know if that type of thing is actually possible.
  • Is it possible to write iOS apps for your own phone without having to pay for a developer license, or is this solely the province of jailbroken iPhones?
  • On a more general level, are there any plausible cases where iOS's "fake" multitasking would be a drawback?
For a number of reasons, I'm biased in favor of an Android solution, but if the benefits to customization are minimal and there are some really good synth possibilities on an iPhone then I might have to turn to the dark side.

That's all. Thanks for reading this.
posted by invitapriore to Computers & Internet (13 answers total) 5 users marked this as a favorite
 
There's a port of Pure Data that's been running on Android for several months. Real time DSP and all.
posted by tip120 at 8:12 PM on October 25, 2011 [1 favorite]


Best answer: I can't speak to all these points, but I have dabbled in Android development, and I can tell you that my impression is that Android is more convenient to develop for. This is especially true if you don't own a Mac, as I understand that iOS development tools are only available for Mac OS.

You can easily put your own apps on an Android device. All Android apps must be signed, but in addition to the debug keys you can self-sign your apps (and almost everyone does). The Android plug-in for Eclipse includes tools to create your own keystore and generate your own keys in just a few clicks. I put together a few "hello world"-level apps on my first day and had them installed on my phone within 5 minutes of first deciding I wanted them there. Super easy.

You said you don't want to distribute. But just FYI: after you create you APK, you can post it anywhere on the internet, and anybody can install it just by clicking a link to it, as long as they have "allow installation of non-market apps" checked in their settings menu. If you want to list your app in Google's Marketplace there is a one-time $25 fee to get your account set up. But it's not necessary for app distribution (just look at how Amazon's market apps is getting side-loaded).

I'm not sure you'll be able to get a definitive answer about the Ice Cream Sandwich latency fix until the Ice Cream Sandwich devices reach retail stores. What we have now are just demo videos and buggy amateur ports.
posted by Vorteks at 8:24 PM on October 25, 2011


Best answer: a jailbroken iOS device works pretty much just like a normal iOS device. it's really pretty much the same as "rooting" on an Android device. you're not locked out of the Apple app store or anything. in addition, being jailbroken also breaks a lot of the restrictions that you would have as an official iOS developer; you can launch 'true' processes, interact with the device over SSH, and other things, so it's theoretically possible your scripting scenarios may be possible with a jailbroken phone. most of the apps or system enhancements would come via an app called Cydia, which is like the app store for jailbroken phones. I don't know if you can actually browse it via a normal computer, though.

that said, if you really want a more hacker-friendly phone, an Android handset is the better option. you have more choice of devices available to you and you can get pretty deep into the system - there are even alternative Android builds available for a lot of phones. (note that neither the Galaxy Nexus nor ICS are part of this yet; that said, neither of 'em are really out yet either.) jailbreaking an iOS device is not necessarily hard but is a bit of a pain. for instance, my iPhone 4 with iOS 5 is jailbroken, and I can't reboot it (right now) without having it connected to the jailbreak tool. that said, the Apple app store tends to have a larger number of higher quality apps, though I can't really speak to what they have for pro musicians, but it is something to consider.
posted by mrg at 9:08 PM on October 25, 2011


Best answer: Seconding mrg on the jailbroken iPhone — you can still buy App Store apps, etc. You can unofficially search Cydia's default repositories from this website; Cydia specializes in providing extensions and "tweaks" to customize the interface and add features, and there are some text messaging and voicemail tools available, but I don't know of one that does specifically what you're thinking with conditional actions. Making your own jailbroken tweaks is possible, and there are a number of open-source ones you can check out and modify, but all of it requires research and a bit of reverse-engineering skill to figure out the right places to "hook" into what Apple is doing (using Mobile Substrate). You can also just make your own self-signed standard apps and install them on your phone.

But one thing to consider with a jailbroken iPhone is that the iPhone 4S does not yet have an available jailbreak. It's likely that there will be one eventually, but nobody knows when it'll be released — so if jailbreaking/rooting is important to you, and you want the phone now, it's probably best to either get an iPhone 4 (which is permanently jailbreakable) or an Android device with an unlocked bootloader.
posted by dreamyshade at 9:30 PM on October 25, 2011


According to this Stack Overflow question, 2.3 has NDK access to audio APIs, so the Galaxy Nexus will too.
posted by fnerg at 9:54 PM on October 25, 2011


I'm not really into the idea of babysitting a jailbroken iPhone

On this front, the only "babysitting" to be done is to not ever upgrade it without thinking about and planning very carefully. Once a year or so iTunes will ask if you want to upgrade it, and you say "No". Babysitting complete.
posted by chazlarson at 10:10 PM on October 25, 2011


Best answer: As mentioned above, currently you cannot jailbreak the 4S.

Also, there is currently only a "tethered" jailbreak of iOS 5. This is a pain in the ass and most people avoid it. Basically, you have to boot the phone while connected to your computer for it to turn on. So if you use a tethered jailbreak, and your phone totally dies or reboots while you don't have access to a computer, you can't use your phone.

For the above reason, I'm still using iOS 4 which has an untethered jailbreak, which is NOT a problem, and does not need "babysitting". Works totally fine. Only issue is I have to wait for an iOS 5 untethered jailbreak, or lose the jailbreak and upgrade early (or do the above "tethered" jailbreak which I dont want to do).

The important point here is that if you want a jailbroken iPhone RIGHT NOW, you have to find an old iphone 4 running 4.3.3 or under. There will be plenty on Craigslist. And eventually, both iOS 5 and the iphone 4s will be jailbroken.
posted by User7 at 10:37 PM on October 25, 2011


Also, I'm not a musician so I could be wrong, but I get the impression from following tech stuff that the synth/music tools for iOS are pretty awesome, and not just toys. I'd bet better than Android.
posted by User7 at 10:40 PM on October 25, 2011


Best answer: Finally, for the last item, my impression is that the ADT plugin for Eclipse allows you to sign applications you write with a debug key so you can put them on the phone, which would be good enough for me.

You can simply enable non-market loading of apps; I tinker with little games and soundboards for my daughter, pop them in dropbox, open the .apk on my Android phone, et voila!

For scripting, the Android scripting environment exposes a bunch of functionality for your pleasure, in a variety of languages. You can indeed to things like event-driven behaviour (the sample given lets you flick your phone into silent mode based on the orientation, for example).

If you want a rootable device, and you don't want to essentially rely on Apple developers leaving exploits around for the iOS jailbreaking community to find, you'll need to look at one of the Android manufacturers who cater to your desire for root. The Nexus, obviously, is one choice there, but Sony-Ericsson are also remaking themselves from Giant Jerks (in the X10 era) to Shining Knights by providing unlocking/rooting mechanisms out of the box, too.
posted by rodgerd at 1:58 AM on October 26, 2011


Best answer: As an introduction, I've been developing for Android for about two years and for IOS for about a month. The experience of developing for both platforms has been eye-opening; there are very clear pros and cons for each platform from a purely technical perspective, let alone from other perspectives.

Please let me answer your question point-by-point (where I can), then end off with a set of general comments.
Is there any confirmation as to whether Ice Cream Sandwich fixes the latency issue? A Google search has revealed nothing but several-month-old promises from Andy Rubin and idle speculation in turn.
Could you please provide a reference for the particular issue you've identified, and references to the comments by Andy Rubin? Have you asked this question on Android Stackexchange? I'll admit I've never done any low-level audio / DSP work.

There's a reference to some sort of new audio API becoming available in the NDK for ICS in the Android 4.0 Platform Highlights:
To support this low-level streaming, the platform introduces a new native API based on Khronos OpenMAX AL 1.0.1. The API is implemented on the same underlying services as the platform’s existing OpenSL ES API, so developers can make use of both APIs together if needed. Tools support for low-level streaming multimedia will be available in an upcoming release of the Android NDK.
As someone pointed out above, libpd is available for both IOS and Android.
As far as scripting goes, are there actually any compelling uses for it on a phone? My vaguely rendered dream has me writing scripts that do things like send out text messages automatically based on certain conditions or according to certain script invocations, or delete voicemails according to a specified filter, but I don't know if that type of thing is actually possible.
By scripting I assume you're implying the use of e.g. Python, Ruby, etc., i.e. some language higher-level than either Objective-C or Java that is typically interpreted, but not necessarily so? Apple don't have a blanket ban on scripting languages. Simple proof is the fact that Angry Birds makes heavy use of Lua. It's famously difficult to determine Apple's policies, but I think they're fine with the limited use of interpreted languages when no code is downloaded.

It's fair to say that Android have a far more friendly relationship with scripting languages, and hence presents a more compelling case for its use. It's not quite a first-class Android component, i.e. you cannot completely forgo the use of Java. You can find out more details on the Scripting Layer for Android (SL4A) website.
Is it possible to write iOS apps for your own phone without having to pay for a developer license, or is this solely the province of jailbroken iPhones?
No. To understand why, you can refer to Apple's Provisioning a Device for Development reference; in essence you need a "Development Certificate" in order to get a "Provisioning Profile". The former allows you to build the code (and hence you can use a self-signed certificate to get around this) but the latter allows you to run the app on a particular device for debugging purposes (I think).
On a more general level, are there any plausible cases where iOS's "fake" multitasking would be a drawback?
This depends entirely on what type of applications you intend to develop. In general, Android "feels" much more different to IOS. In Android a fundamental building block is something called "Intents". You're meant to write applications in building blocks that communicate in a declarative fashion, i.e. saying what you want rather than how to get it. For example, I would write a "LocationService" in Android that happily keeps track of the current location once, and then write a whole host of other applications that talk to the LocationService using intents. Even better I can use someone else's LocationService in my own applications. In order to do so, by definition such a service must be run in a real multitasking environment.

IOS doesn't "feel" like this. Apps are little walled gardens, nothing talks to each other, everyone keeps their kids in plain sight. Of course the use of such (magnificent) frameworks as Grand Central Dispatch allow multitasking within the context of a given application, but fundamentally there is no concept of Android Intents in IOS.

Now for general comments. I can piss and moan about Android all day, but in my opinion Google did a pretty good job. Sure the NDK is much more difficult than IOS's very native and friendly integration of C/C++ code. But after two years I get Android. And before Honeycomb I actually really enjoyed diving through the Android sourcecode, trying to figure out what the hell was going on under the covers (Honeycomb isn't open source).

A month of IOS experience, though, has been eye-opening. It took me a while to get used to the fact that there are no layout managers; my first thought was "whaaa...how do you lay out stuff?!", but the limited number of IOS devices, and hence a limited set of dimensions and pixel depths to support, means layout managers are overkill...although to be honest I miss the way Android does layouts, it makes much more sense. Perhaps that's just experience talking though.

Incidentally, ASIHTTPRequest is a work of beauty, and I quietly weep knowing that such magnificence exists in the world.

That's all I've got, hope that helps!
posted by asymptotic at 4:46 AM on October 26, 2011 [3 favorites]


Response by poster: To be fair, my reference for audio latency in Gingerbread is just a collection of several pages like this, this and this.

asymptotic, as for scripting, I was thinking less of the ability to embed scripts in applications so much as the ability for the user to write and run scripts on the fly that hook into various system APIs, like the Android Scripting Environment apparently allows you to do.

Thanks for all the answers so far!
posted by invitapriore at 8:13 AM on October 26, 2011


Response by poster: Here's a pessimistic forecast from (what I presume to be) one of the developers of NanoStudio, an iOS DAW.
posted by invitapriore at 9:43 AM on October 26, 2011


Response by poster: (Scroll down to the bottom.)
posted by invitapriore at 9:44 AM on October 26, 2011


« Older Help me buy this French anti-perspirant.   |   Has anyone had experience with putting a lime wash... Newer »
This thread is closed to new comments.