Friday 28 September 2012

Android app ready to play with

Most of my last month or so of BlueFlyVario development has been focused on getting the Android app to be usable and customisable. The BlueFlyVario android app is ready for technologically courageous testers to have a play with. You can install it as a non-market app from [EDIT - Get it from Google Play now]. There are a few features left in from testing...

App Design

I have tried hard to design an app that allows for significant user customisation in the front end, and in the back end code allows developers to add new features. I would like to think that the app as you see it today is just the beginning.


The screenshots below shows what the current default layout looks like.

The first page shows some basic information and displays three of the component types. The icons in the top right change color based on the status. From right to left; BFV hardware connection, GPS location upated, vario audio, and flight started. All blue is all good. 

The component in the top right is the 'location' component. There are heaps of settings for it. It essentially shows a trace of your track over the last 120 seconds. The color of the track is the same as the color of the vario trace. Green bits of the track are where lift was. 

The 'vario trace' component shows the sensitive vario on the left and a trace of the averaged vario trailing out to the right. The grey underneath is the alititude over the same period.

Swipe the screen right to left to fling to the next page.

This page shows all fields currently available. A few of them were on the previous page. Like all other components these fields can be customised in position, size and colors for text, labels and lines. Additionally most fields can have different units and number of decimal places (in fact, full DecimalFormat pattern support). 

Also at the top of the page is a 'label' component. 

On the next page you can see another example of the location component. Pages can be added or removed, and you can add any components you want to any page, make them any size, background color, etc. Here we see the location component with the 'lineColor' set to be transparent. Tap in the middle of the component for its settings. If you are not sure where to tap there is a preference that can show you where the tap point are. This location component has 'rotate' set to false which means it always has North up. 
On this last page you see a location component again and some fields, but also the wind trace component. I really developed this for testing the algorithm I outlined in the last post. The data you see drawn above is from a development feature that simulates a flight track. You need to run it for at least three minutes to see the data picture above. Note that the location track points are 'drifted' based on the wind speed and direction that was associated with that point. Combined with vario data, and selectively only showing those points on the location trace that are in lift, this essentially maps out pockets of lift in the sky. 

What you don't see

There are many features you don't see in the screenshots above:
  • The very many preferences for making the app do what you want.
  • How you can press and drag on components to move them around or resize them.
  • The way you can customise almost everything about what you see, then export and share layouts with others.
  • The flight functionality, which is only simple at this stage, but works. A flight is recorded as a simple csv file in the Android/com.bfv/files directory. 
Further App Development

I have hundreds of ideas. Here are a few:
  • More component types (a map component is next I think).
  • Comp features like waypoints, tasks, etc. 
  • IGC and KML flight saving. 
  • Live tracking options. 
  • Auto flight start (I meant to put this in, I just realized I forgot)
  • Airspace 
  • Flight events which automatically switch screens
  • Fix bugs...
Next Steps

As soon as the app is in the hands of testers (with some hardware) I hope to get it working on GitHub and use that for bug tracking and development discussion.