Programming

Getting Started with Data Binding in Android

Tom Opgenorth
(Note: This is an updated version of a post from June, 2015) In May, 2015 at Google announced a data binding library for Android. The data binding library is currently in beta, so things might change and make what I am saying here irrelevant/obsolete. When in doubt, consult the official documentation. It’s long overdue – developers no longer have to come up with their own schemes for displaying or retrieving data from their views.

Nexus 5 Retrieving Shots from Shooting Chrony Beta Master

Tom Opgenorth
I spent a little bit of time since Christmas working on an Android application that will download velocities from my Shooting Chrony Beta Master. First I pair my Android phone to my Shooting Chrony via bluetooth. A couple of taps on the screen, and lo, shot data is retrieved: The app itself isn’t ready for public consumption, but as a proof of concept it is encouraging to see. I uploaded a video of this to YouTube so you can see the application in action.

Adding Bluetooth to your Shooting Chrony

Tom Opgenorth

If you’re into reloading, you know about chronographs. Odds are you might have a Shooting Chrony. I myself happen to own a Shooting Chrony Beta Master. These are pretty well made devices, and Shooting Chrony has a no nonsense replacement policy.

The only way to interact with the device is via a proprietary 9-pin-female RS-232 cable, like an old modem. Now, this techique was all the rage circa 1994 when dial-up internet was king and everybody had PC’s with two or more serial ports. This is really sub-par when you want to try and connect your smartphone to a Shooting Chrony (yes, this is possible, but more on this later).

Using Estimotes with Xamarin.Android

Tom Opgenorth

I recently bought some Estimote beacons (a 3rd party iBeacon-like device) - largely because they seem like a cool and nerdy kind of thing. It has an Android SDK which will allow Android devices to interaction with devices. With a little big of effort, I managed to create Xamarin.Android binding and port the sample Android project provided by the Estimote SDK.

You can see an example of the app in these screenshots:

image

Measuring Distance with Arduino

Tom Opgenorth

The Ping))) is ultrasonic range finder that is pretty easy to use in an Arduino project. In my case, I’m using it to monitor the water level in a sump pump. I have an Arduino Uno R3 (with Ethernet Shield) connected to a Ping))) and a TMP36 temperature sensor that is perched above my sump pump. Every 2 minutes the Uno will send out a ping, and figure out the distance to the water below. The TMP36 is used to account for the air temperature in the speed of sound calculations.

Animate a ListView deletion in Xamarin.Android

Tom Opgenorth

A visually pleasant effect when deleting items from a ListView is to animate the row being deleted by gradually change the .Alpha value of the view from 1.0 to 0.0. If you’ve tried to animate the deletion of a row from a ListView in a Xamarin.Android application, you may observe some curious behaviour when rapidly scrolling through a ListView with many rows: the animation may appear on rows other than then one that is being deleted.

Sublime Text 2 and Arduino

Tom Opgenorth

If you’re looking to get into Arduino, and you’re a programmer, the first thing that will jump out at you is the Arduino IDE. It’s best described as “spartan” (to say the least). As I’m used to full featured IDE’s I started looking for a replacement to the default Arduino IDE.

There are extensions to use Visual Studio, but that means me starting up a VM to run Windows which I don’t really want to do for Arduino development. There is a another IDE which looks promising called Maria Mole - but it’s Windows only so not really a contender for me. I need something for OS X. I looked at setting up Eclipse as my default IDE, but ran into some issues with that. Nothing to major, but as I don’t like Eclipse in the first place I wasn’t to motivated to sort things out, so I abandoned Eclipse as an IDE choice.

The next thing I tried was Sublime Text. There is an Ardunio plugin called Stino that turns Sublime into a not bad IDE. In terms of writing your programs, Stino can pretty much do everything the Arduino IDE can do: compile programs, upload them to your Arduino board, import libraries, etc.

Writing GPS information to a JPEG

Tom Opgenorth

One of the handy things about the JPEG format is the ability to store meta-data inside the image using EXIF. There are a few libraries out there for the various programming languages that can help you out with this, and Android actually has something built in to the SDK - the class ExifInterface.

Google’s documentation on writing latitude and longitude to a JPEG are a bit light on details - they loosely hint at the format that latitude or longitude should have. (See the documentation for ExifInterface.TAG_GPS_LATITUDE). The API itself is pretty straight forward, but what Google doesn’t tell you is HOW the GPS coordinates should encoded.

rake your Xamarin.Android Application

Tom Opgenorth

Deploy early, deploy often is a popular goal in Agile methodologies. One easy way to support this to automate your build process. Last year at this time I would just use FinalBuilder to automate the builds of my Xamarin.Android pet projects. It doesn’t take much to set FinalBuilder, and it does provide support for a lot of tasks such as versioning .NET assemblies, manipulating XML, dealing with the file system, and so on.

The problem is that FinalBuilder is Windows only. OS X and Linux types are left out in the cold. As I find myself working almost exclusive in OS X when developing my Xamarin.Android applications, I was looking for a Windows free way to automate my builds.

Enter rake and albacore. rake is, of course the build system for Ruby.

PreferenceFragment.getPreferencesFromIntent

Tom Opgenorth

One of the new classes that Honeycomb introduced was the PreferenceFragment. This class is meant to simplify the creatation of a setting / preferences screen in Android applications. It handles a lot of the displaying, saving, and changing of an application’s settings. There are a couple of ways to create a PreferenceFragment. The simplest way is to subclass, override onCreate() and then use either getPreferencesFromResource or getPreferencesFromIntent.

There are many examples on how to use getPreferencesFromResource, but I noticed that there aren’t that many on how to use getPreferencesFromIntent. Here is one such quick example.