Wednesday, September 29, 2010

Published - AppInventor Extender

As somewhat hinted at last time, I've been working on extending AppInventor. Now that everything is up and working, its pretty impressive how much functionality being able to access the web adds.

I've posted more details including the samples, and market QR code here: https://sites.google.com/site/appinventorextender/.

For what its worth, it is pretty neat to have an app on the market!

Monday, September 20, 2010

AppInventor Weather


Here's a sample of what I've been working on:

Its a weather app made with App Inventor.

And no, it doesn't use TinyWebDb.

More details coming.

Friday, September 10, 2010

Emulator for AppInventor

It's no secret that you can run AppInventor against the emulator (link). While its clear that "the emulator provided with App Inventor is the standard Android emulator", its not clear whether or not you can use a customized Eclipse-launched AVD and use it with AI.

You can!

Just spark up the AVD normally and click "connect to phone" from the blocks editor, and there it is. Note that you will want an AVD with an SD card or it won't download any media (sounds, pictures, etc) to the emulator. You can also package for the virtual (still necessary for some blocks to work).

Using an AVD is especially helpful if developing AI apps that interact with other activities.

Wednesday, September 8, 2010

Google AppInventor Beta - still premature

In its current form, working with Google AppInventor is a exciting but frustrating beast. It's very fast and easy to put together very simple forms and calculators, but either tedious, difficult, or impossible to build something advanced or useful.

It's satisfying to see how easy it is to create using AI. Once all the parts of the pipeline are installed and configured (there are a few - java, extensions, and drivers) using a pretty straightforward process, you can immediately start slapping controls on the screen and modify them as you would expect if you had any experience with similar GUI editors. The blocks editor is fairly intuitive, and the tutorials are incredibly easy to get through and leave you feeling accomplished. Pushing changes to the phone is fast and straightforward, and packaging and deploying a permanent apk was just as easy.

Going off the tutorial path, it's pretty quick to find shortcomings. The control selection is pretty basic, missing what I would claim is the most useful of the controls you can access through java - the Webview control. Without that, you can't display web content on a form in an easy way. Related to that, there's no calling of web services, loading of web pages, or reading of rss feeds natively in the AI framework. You could theoretically use an additional java-based android app that makes those calls and returns the text, but then you'd have to process that on your own.

There's also no dynamic component creation. I was attempting to make a quick physics game, but in order to create many image sprites that react the same way, you'd have to define every one before loading the app and tediously code each one to react to stimuli the same way.

Plenty of other things would make AppInventor a more successful platform for development. Little things like the ability to rotate imagesprites, to the option of preventing the screen from reloading when the orientation changes or even flat out disabling orientation changes, or allowing the images drawn on a canvas to be saved to a file or sent via email or sms would help. Bigger things like being able to read/write sd card contents, the aforementioned web-interactivity, and better drawing and animation tools (opengl?) would be great assets for advanced development.

The Blocks Editor could use some polish too. Currently its very tedious to create even simple logic cases, since everything is based on blocks. "if var == 1" requires 4 blocks, one block alteration, and proper linking. To solve this, It would be so much more efficient if you could have the ability to change from block view to code view, where you can just type out the blocks' text and generate the same syntax.

There are also some issues with features not working until the app is packaged for the device, such as the accelerationSensor and some of the more important imagesprite features, like the collidedwith event's component parameter. And orientationSensor wasn't particularly stable no matter what I did to it.

All told, I'd say its still a pretty entertaining tool that I'm sure people with longer attention spans that mine could do some really amazing stuff with. I'm just not sure how many of those people won't just do those things in java. I'm looking forward to what comes next as the beta continues!