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 Fragment layout

I recently ran into a problem when using a FragmentTranscation to replace a LinearLayout with a Fragment. The Fragment that I was putting into the layout was not filling the view port properly. Luckily it was a fairly easy problem to fix.

FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.main_fragment, mFragment);
trans.commit();

The code above was creating a layout that had an intermediary FrameLayout that did not have the proper layout parameters. NoSaveStateFrameLayout was set to “wrap_content” so the children were not filling the viewport.

Luckily the fix was just to change the code in onCreateView of the Fragment:

Incorrect:

View layout = inflater.inflate(R.layout.fragment_page_edit, null);

Correct:

View layout = inflater.inflate(R.layout.fragment_page_edit, container, false);

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

Xoom dock modified to allow passthrough USB

Last week Motorola finally started allowing Xoom tablets to be sent in for their 4g LTE upgrade. Mine came back today and I was surprised to discover that they had sent it back with a little something extra, a dock. I had been looking at getting one of these since I go the Xoom back in February. The only reason I hadn’t was that there was no passthrough USB so I wouldn’t be able to use it while developing Android applications. Having received one for free I decided to go ahead and see if I could modify it to have USB and make it a little more useful.

Disassembling the dock was actually easier than expected, Motorola opted to use screws instead of the typical snap together casing.

From there it was as simple as desoldering the USB connector in the dock and splicing it to a USB cable that I had laying around. I opted to remove the audio jack from the board inside the dock so that I could route the USB cable out through the existing hole.

I hooked the Xoom up to the dock and my computer to make sure that all the connections had been made correctly and then promptly sealed the dock back up.

Finally a useful dock for the Xoom!

 

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!

Additional TTS Voices in Android

Text-To-Speech is one of the many great features built into the Android OS. Many users may only use it for the turn by turn navigation, but that still adds up to lots of time listening to a “tinny” robotic voice. Luckily Android 2.2 introduced the ability to install new TTS libraries to change the voice from the default voice. So far there are only two additional voice libraries in the market, one provided by SVOX and the the other by Loquendo. Continue reading “Additional TTS Voices in Android”