Dec 04

The Boy Genius reports that Verizon just announced they are planning on using Android:

Resistance is futile, or so it seems, as everyone looks to be jumping on Google’s new Android mobile handset operating platform. The newest convert to the ways of Google is Verizon. The company has just announced that they will plan on using Android in one form or another…

It all stems from a BusinessWeek article titled Verizon Embraces Google’s Android:

In yet another sudden shift, Verizon Wireless plans to support Google’s (GOOG) new software platform for cell phones and other mobile devices. Verizon Wireless had been one of several large cellular carriers withholding support from the Android initiative Google launched in early November.

But given the stunning U-turn Verizon Wireless made Nov. 27, announcing plans to allow a broader range of devices and services on its network, Chief Executive Officer Lowell McAdam says it now makes sense to get behind Android. “We’re planning on using Android,” McAdam tells BusinessWeek. “Android is an enabler of what we do.”

Welcome to the Party…

Dec 03

Brendan Burns has created a GUI designer for Android called DroidDraw. The tool runs via an Applet, and allows you to select components and put them onto the canvas.

A tutorial gives you a full walk through of the tool and how it works:

This tutorial will give you a brief introduction to developing a GUI application on Android using the DroidDraw user interface designer. This tutorial assumes that you have downloaded and installed the Android SDK. This tutorial also assumes that you are reasonably familiar with concepts in GUI programming and the Java programming language.

DroidDraw

Dec 03

Techworld posted a mildly interesting article on Google’s Android getting positive early reviews from mobile developers.

After downloading and examining Google’s Android software development kit, some software developers gave the platform favourable initial reviews and praised it as a breath of fresh air for an industry that has long been characterised by closed devices and software.

The article goes on quoting various developers and designers praising Android for its openness, potential, DIY approach, etc.

Just like most superficial tech article, it concludes with a few paragraphs outlining some of the potential problems Android may face, according to their experts. From carrier and enterprise acceptance to Google’s ability to monetise the platform.

Nov 29

Richard Monson-Haefel, ex EJB author, current mobile analyst, thinks that Microsoft should love Android.

His reasoning is basically: Android will fragment the Java world.

I disagree. Java on the phone is already fragmented. J2ME isn’t ONE thing, it is broken. As he himself says, Sun is moving on to Java SE on the phone, which makes sense as we have the computing power now. The current batch of top phones are computers, so let’s utilize that power.

Android is hopefully going to open up the entire mobile market. I don’t know if this will help Windows Mobile. In some ways it should (open networks etc). I don’t think that Android is going to cause Java developers to jump over to Microsoft though. They now have a great platform that is going to push Mobile Java forward.

I wouldn’t be too happy Microsoft. Ed Burnette feels the same way too, and put out a rebuttal:

If Mr. Monson-Haefel had done a little research first before making blanket statements like this, he would know that Microsoft .NET Compact Framework is not the same as regular .NET. Compared to the desktop version, the Compact Framework has some things trimmed out and some other things added in that are specific to mobile devices. Sound familiar? Android takes the exact same approach.

There is still one overall “Java platform”, regardless of what the language on top is (Java, JRuby, Groovy, etc.) or the particular flavors of the API (ME, SE, EE, GWT, Android), how the code is compiled and run (JIT, AOT), or even what the bytecodes look like. The Java platform is much bigger than any one hardware platform or vendor.

Android represents an incredibly positive new injection of resources and excitement into the Java, Linux, and open source communities. It’s unfortunate that a respected analyst like Mr. Monson-Haefel fails to recognize this fact.

Nov 27

We have promised to open source all of Android. It just takes time to do it all, and do it right.

Some people get a little impatient and Michael Pavone is one of those people:

I’ve started another little reverse engineering project. Google hasn’t released any documentation on their new VM so I decided to get some the hard way. Well, hard is relative here. A decompiled Java class is a bit easier to read than a disassembled 68K binary. Anyway, I’ve managed to write some documentation on the dex file format used by the VM. I hope to have some documentation on the actual instruction set used by the VM in a few days, but for now I can whet your appetite with this: The instructions are variable length from 1 to 5 16-bit words. The VM appears to support 256 registers, but most instructions can only access the first 16. Instructions can take anywhere from 0 to 4 operands (though most take 2 or less). The actual opcode is stored in the first (least significant) byte.

He then goes on to give his view of the Dex file format.

Nov 26

As soon as Android was released people got to work delving into the native side of things and now Macrobug has posted about how you can use Scratchpad to build ARM binaries for Android:

Benno explains how to build simple native programs for Android. But any significant pre-existing Linux software package uses a complex array of libraries and a correspondingly complicated build process, typically based around GNU Autoconf. That build process usually involves a “configure” script whose purpose is to run tiny programs to experiment with the system, to find out its capabilities and set up the code appropriately.

Terrific, except it doesn’t work if, say, you’re building on an Intel x86 box, but trying to build for Android, which is based around Linux and an entirely different CPU. Fortunately, the Scratchbox project exists to solve this problem. It provides you with a special Linux universe, which uses the QEMU emulator to run ARM binaries. Hence: autoconf can run its experiments and all will be well.

It worked surprisingly well and surprisingly simply. Good work by the Scratchbox team.

Maybe this is how Benno produced his strace binary which he used to dig up some interesting stuff from Android. I’m not sure. Either way, I’m going to be building strace here as an example of how to get this stuff to work.

Nov 23

Marius Milner and Ben Collins-Sussman have released Twisty, a z-machine interpreter for Android:

The ‘z-machine’ is a virtual machine designed in 1979 by Infocom for playing text adventures, and has been re-implemented on nearly every computer and PDA since then.

This application allows Android users to play Infocom classics just as ‘Zork’, as well hundreds of newer text adventures written in the last ten years or so. The package comes bundled with a few built-in games, but also allows you to load games from your sdcard.

It is fantastic to see all of the porting work going on to get stuff running on Android, which means on your phone at some point! I have been amazed at how fast people are churning solid code out there.

Nov 23

Poliplus Software took the ME4SE project, which makes Java 2 Micro Edition APIs such as the LCDUI classes and the Generic Connection Framework available for the Java 2 Standard Edition, and created ME4Android:

Since the Android SDK came out last week, I’ve been toying with the idea of porting ME4SE into Android as to make it as easy as possible to port over current JavaME code. With ME4Android, I wanted the porting to be done automatically so no lines of JavaME code would need to be modified but only the build scripts, so targeting Android would only require a rebuild of current JavaME code.

On my first pass at ME4Android, I used our rather large JavaME app called FlyerApp as the test app. This code is done completely on top of
Canvas so it only uses JavaME’s low level user interface libraries. The code uses a few threads, supports animations and does networking.
I figured if ME4Android can run FlyerApp, it will be able to run a lot of Java games too.

In the process of getting FlyerApp to run on Android, I came up with a lot of roadblocks, some architectural and some bugs that
I intend on submitting to Google once there is a formal way of submitting bugs on Android.

To see the exact same (i.e. identical) app run on Blackberry and JavaME phones (Samsung A920/A900, SonyEricsson K790, Motorola V3xx, and others) click here. On this page you can see screen shots and also download the .jar and .cod files.

Nov 22

Ever since I learned about the QR codes initiated in Asia, I have wanted them to take off over here. I was hoping that QR code support would be in Android, and maybe that could bootstrap the system. I am all ready to print a QR code on my business card that points to my website etc. Great stuff.

Then, ZXing was released on Google Code which gives me exactly what I want:

ZXing (pronounced “zebra crossing”) is an open-source, multi-format 1D/2D barcode reader library implemented in Java. Our goal is to support decoding of QR Codes, Data Matrix, and the UPC family of 1D barcodes. It will provide clients for J2ME, J2SE, and Android.

Why? There are several great readers out there, and there are bits of open-source code already for decoding, but not both at the same time. We want everyone to have access to some great source code to play with, so we decided we’d try an experiment, and open up our in-progress effort. Maybe some of it will be useful to you — maybe you can help improve it.

Will this be the best reader ever? Well we hope it gets quite good. Things are far from perfect, and it’s hard to top some of the great (native-code) readers out there. No, we primarily hope to provide a solid base of code from which people can derive other implementations, and to which people can submit new, better code. If this helps raise the quality of readers everywhere we’ve all done our job.

You know it is serious when you see a trial over in the adwords side of the house!

Nov 22

Ray Cromwell and the Timepedia team have released Chronoscope, a charting and visualization platform for Google Web Toolkit, as open source.

When Android came out, they quickly realized that the same charting library that is written in the Java programming language, compiled to JavaScript, could also work on other platforms. So, they tried to get it working on Android:

It required about 8 hours to get this working. Most of the time was spent finding the Android equivalents of Java2D calls, and writing 6 Java classes (the Chronoscope Canvas abstraction layered over Android Graphics API).