Android Permissions and Honeycomb Tablets

Cyanogen Gets Android Permissions Right

Android permissions are good but could be improved. To quote from myself a year ago-

I’d like to see optional permissions. When I installed Barcode Scanner I was a bit perplexed as to why it asked to access my contact list. Turns out it’s because it can create barcodes from contacts. Nonetheless, that should be an optional permission that I could set to yes (checked), no (red x), or ask on demand (cleared), defaulting to ask on demand. It would make me far less nervous about apps that seem to unnecessarily ask for the kitchen sink.

I revisited this theme several months back.

Cyanogen made it happen. Take a cue, Google, because this would be a great base bit of functionality for the paranoid and cynical. Then again, Google is a prime culprit in contributing to “permission fatigue”, with many Google Android apps now demanding pretty much universal access to everything, so maybe they’re just going the Microsoft .NET angle and just FullTrust-ing everything.

Getting A New Tablet

I’ve been working on a game with the kids via a ViewSonic gTablet, given that it was (by several months) the first Tegra 2 equipped device available in Canada. As I indicated in my original mini-review, it’s a decent enough device for development after replacing the ROM, though the screen on it is absolutely miserable. Deadly miserable. I do not recommend it at all.

Anyways, better options are finally appearing so I got my hands on an Acer Iconia A500. I actually wanted an Asus Transformer but those things are sold out everywhere. The Asus was my choice given the great quality IPS display, versus the TN in the A500. After trialing the A500, however, I’m quite satisfied with the very good quality, gorilla-glass shrouded display. It has magnificent viewing angles and no visible dithering, which are the typical pitfalls of non-IPS displays.

It is a fantastic device. The Honeycomb interface is astonishingly responsive, and the breadth of functionality is enormous. As a web device it is without doubt class leading: It isn’t a laptop, but if you’re in the tablet space nothing does it better.

Per the desperate “app gap” rhetoric, in a rational world most users find themselves focusing on a small selection of apps: the media player, the web browser, the Kindle app, email and calendaring, and a couple of games. The tablet does all of these with incredible gusto, and will only improve now that Google is starting to rapidly iterate.

The Honeycomb tablet space is a field of no-regrets now. During much of my time with Android smartphones I hesitated recommending them to non-developers, only really crossing the threshold with Gingerbread. On the tablet front I would not hestiate for a moment in recommending a device like the A500 or the Transformer. The OS is spectacular, is ridiculously usable (designed for tablets from the outset), and it does not sit in any competing device’s shadow.

RenderScript — Preparing the World for x86 Tablets

One of the draws of getting a bonafide Honeycomb tablet was a desire to investigate RenderScript, a new graphical programming facility of Honeycomb and beyond.

Android originally started life in a very platform-agnostic fashion. This was a forward-looking decision that made for all pain with little gain. It’s the reason the iPhone variants seemed to be so much faster running the same underlying hardware, with a platform and software built for and tightly optimized against very specific devices, going up against a wishy-washy lowest-common denominator managed platform where even hardware GPU acceleration wasn’t used because some super low-end devices couldn’t handle it.

Yet it was a world where anyone could come out with device running on just about anything. Every device worth considering really featured ARM11 and full OpenGL ES 2.0 support, but hyothetically they could be based on something different.

Google reacted to the glaring performance shortfall and started pushing the NDK, and lots of native code started getting generated, especially to service graphics needs. Increasingly the application market has veered away from that original hardware decoupling.

I suspect that RenderScript is a way to pull it back in a bit. This seems relevant now that speculation grows that Acer is about to come out with an Intel Oak Trail (x86) equipped Honeycomb tablet within a month.

RenderScript is a graphical subsystem where your application essentially leaves it to the target to compile the high performance code to the native graphical code appropriate for the target. It does to high performance graphics what the Dalvik engine does for general application logic, decoupling it, to a large degree, from the underlying hardware.

An application built using RenderScript and eschewing the NDK would run without change on a Tegra 2 tablet, or a Exynos tablet, or even an x86 tablet or desktop. It changes the coupling dramatically, moving the platform more to the hardware freedom it originally sought, without undermining the richness.