FlightPanel: aircraft gauges for Android

Troubleshooting

What do all these gauges do?
Check out the Info page for a detailed description of all the instruments.

The screen keeps going black after a couple minutes.
This is your phone's battery-saving idle timeout. You can disable this under Preferences by enabling the "Stay Bright" option.

Hey, where did the auto-enable GPS setting go?
Many Android applications that relied on the GPS functionality have included a convenience option to automatically enable GPS when needed. The GPS is a notorious battery drain on the G1 phone, and the idea was users could leave the GPS disabled except when needed by those particular applications, thus preserving battery life. With the Cupcake release, Google has removed the (unofficial) API used by various applications to enable the GPS automatically for the user. This has caused some controversy and frustration for users and application developers alike, due to misinformation about how that GPS-enable setting actually works. As Google engineers have explained, the setting is really a privacy setting -- something applications should not touch. It is meant to let users to block all GPS requests, mostly for privacy reasons.

Although the setting itself suggests disabling the GPS can prolong battery life, this is somewhat misleading. Enabling the GPS in the phone's location settings does not turn the GPS on. The GPS defaults to "Off" and does not take any additional battery power unless it is in active use by an application. Once applications are done using the GPS, the system shuts off and no additional battery power is consumed. The suggested improvement in battery life is mostly relevant to background applications or services continuously or frequently use the GPS (possibly without the user's knowledge). By disabling the GPS setting, users can avoid hidden drains on the battery - but this unfortunately also disables the GPS for all foreground applications.

A better solution is to leave the GPS setting enabled and require that applications respect battery consumption by only using the GPS when in the foreground, or reducing the frequency of background GPS use. For example, FlightPanel only uses the GPS system when it is in the foreground. GPS is always available to applications, but will only consume power when it is in active use - as originally intended by the automatic-enable GPS function in most applications.

If you do leave the GPS setting enabled and are concerned about battery drain, you should watch how often the GPS signal icon appears in the status bar. Most GPS-based background services and applications, like Locale, only activate the GPS infrequently. If you suspect an application is using the GPS heavily in the background, check the application's settings for GPS usage options (or politely request that feature from the developer). Otherwise you can disable or uninstall the offending application, only use it when the phone is on the charger, or manually manage your GPS-enabled setting. If you aren't sure which application is using the GPS, you can identify currently active background applications and services by using applications like Advanced Task Manager or Spare Parts.

Why do the gauges lag?
The gauges can only update when they have new information to display, which is dependent on how often the phone sends GPS and sensor updates. While the screen updates at more than 20 times per second, the GPS generally will not send data more than one time per second. This means the GPS-dependent gauges cannot update faster than one time per second...which can be perceived as lag.

Very fast GPS updates require very accurate data to prevent wild fluctuations in the gauges. The rate of the GPS updates can be set under Preferences, from "maximum" to "once every ten minutes". Google's API documentation does not recommend setting the GPS updates to more than once a minute to ensure for good battery life, but gauges that only update once a minute wouldn't be very interesting or fun. So even at "maximum updates", there is a tradeoff in terms of battery usage and required accuracy of the GPS updates.

You keep talking about GPS accuracy and update rates...why is this important?
Let's use the speedometer as an example. Unlike a real vehicle's gauges, the phone isn't connected to a drive shaft, pitot tube, or other mechanism for directly measuring speed. The phone calculates your speed by finding how far you have moved since the last update -- distance divided by time. We can be pretty sure the time is accurate, but the GPS data coming into the phone has wildly varying accuracy, usually reported as somewhere between 25 feet and about one mile.

Here's an example: assume you are standing still and that GPS updates are coming in at once per second, which is about the fastest the phone will provide. And assume that GPS-reported accuracy is 200 feet, a pretty common value for many updates. That means that every second, your position could be reported as anywhere within a 200 foot circle -- your position jumping around within that circle on each update. When calculating your speed, the app would see you moving around at anywhere from zero to 200 feet every second (about 136 mph!). So the speedometer gauge will bounce around like crazy even though you aren't moving.

Now lets read that same level of accuracy data every ten seconds. The phone will still read your position as moving around within 200 feet, but only every ten seconds, giving us a speed of zero to 20 feet per second (13mph). The speedometer may still bounce around, but only one tenth as much. And by reading every 100 seconds, that drops to about 2 feet per second. The more time between updates, the less of a problem the GPS inaccuracy is. But less frequent updates mean the gauges can't update as often, so it feels like lag. Updates every 100 seconds would mean the gauges would only move every minute and a half!

Fast updates are only as good as their data quality, and less frequent good data is better than frequent garbage data. FlightPanel tries to find a balance between frequent updates to keep the gauges up to date, while managing the noise and inherent inaccuracy of the GPS data. We want to update the screen as fast as possible, but we can't control or predict the accuracy of the GPS data. To avoid wildly spinning gauges, the program will discard updates that don't meet a minimum accuracy based on the time elapsed since the last accepted update. An update that happens very soon after another will need to be very accurate to be accepted. As more time without an update passes, the accuracy requirement becomes more lax. You can force an "extra accuracy" setting under preferences which will tighten these requirements even more. This should be used only when the GPS signal is strong (outdoors), as there is a tradeoff risk of fewer updates being accepted and increased lag.

The phone's GPS updates come in batches. Setting the phone to report the GPS every 30 seconds will result in a batch of updates, one per second, with 30 seconds between batches. GPS updates tend to start with low accuracy and increase as more readings are made. So the first couple updates in a batch will be inaccurate and likely discarded, but they get better and usually at least one will be accepted. You can see this pattern if you watch the GPS indicator on the screen of FlightPanel: you may see it flash yellow a couple times, then solid green, possibly pulsing as more updates in that batch come in, then fade out slowly until the next batch arrives.

The bearing indicator spins or speed jumps around when I'm not moving.
This is tracking your location via GPS updates. If the GPS updates are not very accurate and the reported position is "jumping around", this can cause the bearing to spin. Usually this settles down after a few seconds as the GPS gets a position lock. If you're outdoors and seeing this after a minute or two, try enabling the Extra Accuracy setting under Preferences. Otherwise, try to get a better GPS signal by moving the phone close to a window, away from walls, etc.

Why does my altitude show as zero, or below sea level?
The GPS data is unfortunately less accurate when it comes to altitude. Sometimes it reports zero for a few readings when it's still acquiring satellites. Usually the accuracy will improve as more readings are made, so wait a few minutes and make sure you have clear visibility of the sky. As the GPS altitude data hones in, you may see the vertical speed indicator show rapid rates of climb or descent. Then again, you may be in Death Valley.

I get frequent GPS yellow flash updates and not many green glowing updates.
Try to improve your GPS signal strength by moving or re-orienting the phone. If that fails to improve the quality of the GPS updates, try increasing the GPS polling time under Preferences. This will relax the accuracy tolerance at the expense of less frequent updates. If you have just turned on the GPS, wait a minute or two, as the accuracy of the GPS updates improves as it acquires more satellites and stronger signal data.

I get no GPS updates – the indicator is dark.
This can happen if there is no GPS signal at all, for example, indoors or in a tunnel. If you have just turned on the GPS, this can happen for the first minute or two as the GPS system gets a signal lock. If you have a clear view of the sky and still don’t get updates, check the Preferences to make sure the GPS polling time is not accidentally set to a very large value.

The magnetic compass does not appear to be working.
Make sure you are not near any sources of magnetic fields, such as electric motors, CRT monitors, speakers, etc. Make sure the "Upright or Flat" setting (under Preferences) is correct for the phone’s current orientation. When Upright, FlightPanel measures the compass heading through the phone – if you hold the phone up in front of your face, the magnetic compass will read the way you are facing. When set to Flat, FlightPanel measures the compass heading in the direction the top of the phone is pointing (“up” relative to the screen image).

upright orientation flat orientation
Phone Upright (left) versus Flat orientation (right)


The artifical horizon seems to be way off or flips around or spins the wrong way.

Make sure you have the proper orientation set in the Upright or Flat option. This can also happen if you've used the zero horizon option to correct for more than 45 degrees. Reset the horizon "zero" by switching the Upright/Flat option back and forth.

When I have my phone's keyboard out, the magnetic compass is wrong or the artificial horizon seems to have "roll" and "pitch" switched.
Android seems to be inconsistent about adjusting the sensor values when switching the keyboard out. Try pushing the keyboard back in and then out again.

Why doesn't the display automatically rotate when I pivot the phone? I have to pop the keyboard out to get landscape mode.
This is deliberate. Using the sensors to automatically detecting rotation into landscape mode would prevent full use of the artificial horizon.

Other Questions

Can I use FlightPanel on a plane?
As tempting as it may be, using a GPS in a commercial airliner is problematic. It is hard to get a GPS signal and it may alarm the flight crew and other passengers. Some airlines may not allow the use of GPS devices. Please use common sense and comply with all flight crew instructions at all times.

Why doesn't the speedometer show knots? Airplanes use knots!
Go under Preferences and select the Units option. You can choose between knots, miles or metric system there.

Can't you use the accelerometers to determine speed or altitude changes?
Unfortunately, that would be less accurate than the GPS data. Also, this requires tracking the data continuously, which can only be done when the app is running. The altitude data would become even more inaccurate any time you switched to another application.

The Mach indicator doesn't work.
The Mach indicator gauge reads from 0.1 to 1.1 Mach, and therefore requires a minimum speed of 0.1 Mach. At sea level, you need to be going at least 76mph before the needle will move at all. So unless you're in an airplane or a bullet train, you're unlikely to see this gauge do much. Please don't do illegal, reckless or stupid things in your car trying to test this. You can choose different ranges for the speedometer under Preferences.

Does the Mach indicator adjust for altitude?
Yes, up to about 80,000ft.

Does the Mach indicator adjust for temperature or barometric pressure?
No -- the G1 phone does not have an external air temperature sensor or pressure sensor. The calculation for changes in pressure and temperature due to altitude are factored in, but not weather-related changes.

Why do you not have a turn-slip or turn-coordinator indicator?
These really require a gyroscope to function properly and there was no sensible way to simulate it with the G1's sensors. Using the accelerometers would be the same as the artifical horizon, and therefore redundant. Also, unlike the other instruments, a turn-slip is not very useful unless you are actually flying a plane.

Why aren't the instruments arranged in the standardized "basic-T"?
There wasn't enough room for this in the screen's portrait orientation. In landscape mode, they are arranged in the "basic-T" with the exception of the missing turn-slip indicator which was replaced with the magnetic compass. The climb-rate indicator has been switched with the clock, in order to make it bigger (as it's more useful).

Why do I keep getting force close errors when I exit the preferences or return from a web page help?
We've looked closely at the problem and the crashes are related to a known bug in Android OS prior to the 2.0 release. According to Google's developers, it is now fixed (we have not been able to confirm this on out test device). Other crashes are possible, but this is by far the most common one. We have added a black box to FlightPanel to capture data about any crash, which will be sent to us next time you run the app.

What's this about the crash logs being sent from my phone? Are you spying on me?
No. There is no private or personal information being sent. It's completely anonymous -- no name or return email address. Only the make and model of your phone, version of Android OS you're running and the nature / location of the crash is sent. We need a minimal amount of information to diagnose the issue. To show there's nothing personal in there, this is an example of what's sent in a 'exit preferences force close' crash, from my personal phone:

ANDROID OS=1.6

DEVICE=HTC T-Mobile G1 (tmobile/kila/dream/trout:1.6/DRC83/14721:user/ota-rel-keys,release-keys)

-----

java.lang.IllegalArgumentException: parameter must be a descendant of this view at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:2513) at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:2450) at android.view.ViewRoot.scrollToRectOrFocus(ViewRoot.java:1432) at android.view.ViewRoot.draw(ViewRoot.java:1174) at android.view.ViewRoot.performTraversals(ViewRoot.java:1097) at android.view.ViewRoot.handleMessage(ViewRoot.java:1613) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4203) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) at dalvik.system.NativeStart.main(Native Method)

Can I ask you for help? Or should I just complain in the Marketplace comments?
Yes, feel free to send us an email to flightpanel@octopusmotor.com. There's a convenient menu option in the help menu for sending an email directly from your phone, which will include a system report for us to understand what's going on. You can review the information sent in the email before sending it, but please don't edit it. And again, no personal information is being sent. Even the GPS data sent records only the quality of the data, not the coordinates.

Please don't complain in the Marketplace without contacting us. If you don't contact us via email, we have no information about your problem and hardware, and no way to contact you.

Why can't I buy your app or find it in country XXXX?
Google has not yet enabled paid apps in all countries. The latest list of supported countries is available here. If you (and your carrier) are in one of the supported countries, check your device meets the required OS and screen size requirements.

What Android devices and operating system is supported?
FlightPanel requires
  • Android OS 1.5 or higher.
  • satellite GPS
  • accelerometer hardware
  • magnetic field (compass) hardware
  • clock
  • battery
  • an HVGA 320x480 screen or larger (Larger screens will work, but the graphics will not stretch or scale).
  • Some devices may work, but with less functionality. We have tested FlightPanel works properly on
  • T-Mobile HTC G1 (dream)
  • Rogers (Canada) HTC phone.
  • Are you going to make this for the iPhone, too?
    Probably not, as there already are similar apps available for the iPhone.


    © 2009 Octopus Motor Games