Careful! Filters on Google Play

Recently Foodzy released a major update to their Android app. I had heard about it in the past and figured I would check it out. I went to install it from the Play Store and the only device that was listed as compatible was my HTC incredible. Even more intrigued I installed it and dumped the APK. Upon further inspection the manifest contained an un-needed requirement that explained why is only showed on one of my devices.

<uses-configuration android:reqFiveWayNav="true"/>

I let the developers at Foodzy know that they needed to remove just that line. The app now shows up on all the devices it should.
When running into issues with apps not showing up on the play store store for certain devices, be sure to check the filter list here and remove any un-needed filters.

Is there a new Android Google Maps API around the corner?

Evidence that a new version of the Google Maps API has shown up in a recently released app named Field Trip. This app sits in the background and will alert you when you near interesting landmarks. There are wonderful looking maps throughout the application, that have much of the enhanced functionality that users are used to from the Google Maps app. It would seem that this app is not just for fun, and that Google is using it to test out a new version of the Google Maps API.

Decompiling Field Trip reveals some secrets about the new Maps API.
The application tag in the app manifest references “com.google.android.maps.v2.API_KEY”:

<application android:label="@string/app_name" android:icon="@drawable/launcher_icon" android:name="com.google.android.apps.scout.ScoutApplication" android:description="@string/app_description" android:hardwareAccelerated="true">
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="redacted" />

While most of the project has been obfuscated by proguard the com.google.maps package remains intact. Ever since Google introduced fragments developers have been requesting a MapFragment class. It would appear that there requests have been answered, the package contains a MapFragment.smali file. There is also a SupportMapFragment.smali for use with the compatibility libraries that google uses.

.class public Lcom/google/maps/MapFragment;
.super Landroid/app/Fragment;

# interfaces
.implements Lcom/google/maps/GoogleMap;

All signs point to the fact that the new maps API is almost ready for developers to use. Hopefully Google releases it sooner rather than later.

Android Kinect Projector Interface w/ System Access

Watch this video on YouTube.

This is a continuation of my work to create a way to interact with Android when it is being displayed on a large scale using a projector.

The setup I’m using consists of a Kinect hooked up to a Windows PC running Simple Kinect Touch. This software processes the input from the Kinect and sends TUIO commands to a Galaxy Nexus running TuioForAndroid. These events get injected into the OS as touch events allowing control over any application. The projector is connected to the Galaxy Nexus with a MHL adapter.

In order to give  TuioForAndroid system access I had to download the AOSP source tree and compile a rom for my Galaxy Nexus.  TuioForAndroid must be signed with the System key so that it can get a system pid to inject the touch events into the OS.

Android Kinect Projector Interface

I’ve been playing around with a way to control an Android device that is hooked up to a projector which will make it great for showing off apps in meetings. The setup I’m using consists of a Galaxy Nexus runninng a TUIO client, a Kinect, projector and a MHL adapter. With an AOSP build of Android the TUIO client app can be signed with the system keys to allow TUIO events across all of Android and not just limited to the TUIO client app.

Watch this video on YouTube.

Automatically generating Android images for different dpi levels

When developing Android apps it can be painful making sure that all you have image assets for every dpi level. I’ve been dealing with this by making all my original images in inkscape and saving them as svg files. I then use a script to scale and save the images for each dpi level.

I’ve put the script up on github:gist here

minus for Android


Yesterday I published minus for Android to the Android marketplace. It is in the same vein as the imgur for Android app that I published in 2010, except it is for the competing service min.us. Minus is organized differently in the fact that images have to be in a gallery to exist, this led to minus for Android having album support from the start. This along with no-nonsense photo uploading makes it a great choice for sharing original content with the internet. If you try it out and have any problems, send me an email from the marketplace and I’ll see what I can do to fix it. Enjoy!