The app has suddenly stopped working, why can't it get a GPS fix?

posted 18 Jul 2019, 00:54 by Planet Coops   [ updated 18 Jul 2019, 01:16 ]

There are two possible reasons why the app may all of a sudden stop working.  The first is a hardware issue which may be resolved by steps in, "Why is Taximeter "Waiting for a valid GPS fix..." when I have a GPS position fix in Google Maps?".  Read on for the second reason...

Due to a bug in the way Android handles permissions, users updating to a later version of Taximeter on devices which have been OTA upgraded may be unable to obtain a valid GPS fix.  Users experiencing this particular issue will see "Fix: 0" on the main display.

Skip to the solution if you are not interested in the technical blurb.

Each year, Google forces developers to target a more recent version of Android if they are to continue providing app updates in the Play Store.  The way in which an app obtains permissions, e.g. to access GPS location, changed between Android versions.  In older versions an app received implicit permissions at the point of installation but with more recent versions an app must prompt the user at runtime to obtain certain permissions.  An updated app should be unaffected by this change but, due to a logic flaw in Android, an app running on a device which has previously been upgraded to an Android version greater than or equal to the target version fails to obtain access to the GPS location.

Solution

The solution is to uninstall and reinstall the app accepting the runtime permissions.
  1. If your app has been locked by a regulator or via the Preset Update Service, unlock the app before proceeding.  Re-installing the app will regenerate the app's serial number.
  2. Within Taximeter, use Menu > Backup to save your settings.
  3. Uninstall the app.
  4. Reinstall the app from the Play Store.
  5. Launch the app and accept the runtime permissions.  Restart the app.
  6. Use Menu > Restore to restore the previously saved settings (any passwords will need to be re-entered as these are not saved for privacy reasons).

Does Taximeter need an internet connection?

posted 5 Jul 2019, 03:08 by Planet Coops   [ updated 5 Jul 2019, 03:11 ]

To prevent piracy, Taximeter uses Google Play Licensing to query the Play Store to obtain the licensing status for the current user.  The result of a licensing query is cached so network access is rarely required.

If you intend to run the app for most of the time without an internet connection, we recommend that you exit and launch the app once per week in the presence of an internet connection, either Wi-Fi or mobile data, so that the cached license status can be refreshed.  Refreshing the cached license status once a week will avoid "License check failed" errors.

How do I setup a flat rate or fixed rate tariff?

posted 27 Apr 2019, 02:39 by Planet Coops   [ updated 27 Apr 2019, 02:43 ]

For flat rates, using the Custom Preset Wizard (Menu > Settings > Custom preset settings > Custom preset wizard) create a tariff with a flag drop of $0.00, $0.00 per mile and $0.00 per hour.  When the tariff is in use, use the extras to enter the variable flat rate charge.  At the end of the hire, total the fare by pressing the fare in time off/stopped mode and the extras (the flat rate) will be added.

If you have a tariff with a fixed rate, e.g. airport $40.00, create a tariff with a flag drop for the fixed rate ($40.00), $0.00 per mile and $0.00 per hour.

Can I connect to a Wi-Fi OBD2 adapter on iOS and still use mobile data?

posted 5 Oct 2018, 04:19 by Planet Coops   [ updated 5 Oct 2018, 06:53 ]

Yes, follow these steps:
  1. Connect your iPhone to the Wi-Fi network for your OBD2 adapter.
  2. Open the Settings app, select Wi-Fi then select the blue info icon to the right of your OBD2 Wi-Fi network.
  3. Make a note of both the IP Address and the Subnet Mask addresses.
  4. Set Configure IPv4 to Manual and enter only the IP Address and Subnet Mask addresses from Step 3.  Leave Router blank.



Can you recommend a particular device to use with Taximeter?

posted 19 Aug 2018, 04:55 by Planet Coops   [ updated 19 Aug 2018, 05:07 ]

We won't recommend a particular tablet or phone because each customer's environment is different and new hardware is being released all the time.  We would advise customers to thoroughly evaluate potential devices to ensure compatibility and stability of payment card readers, OBD2 adapters, roof light switches, GPS signal, etc. in their target environment before making a commitment.

What we can share, is a list of devices where customers have reported problems to us in the past:

Bluetooth interference/dropouts:
  LG G Pad X 8.0 LG-V521

System crashing and rebooting:
  Samsung Galaxy Tab 4 (7.0") SM-T230/SM-T231

GPS signal loss:
  Samsung Galaxy Tab A (2016, 7.0") SM-T280/SM-T285

What is data logging?

posted 10 Apr 2017, 08:56 by Planet Coops   [ updated 27 Apr 2019, 02:58 ]

The data logging/tracking feature is described on pages 29-31 of the user guide, http://www.planetcoops.com/apps/taximeter/taximeter.pdf and is currently only available on Android devices. 
The data logging feature costs a $1 per registered device per month with a minimum monthly charge of $10.  This is to help with our ongoing hosting and mapping costs.  We will invoice for this monthly in advance by PayPal.

Once registered, we will issue you with:
  • a log key which you enter into each device under Menu > Settings > Data log settings > Log key.  Set the AVL interval (GPS position updates) and Upload interval to appropriate values (the shortest update interval is 30 seconds) and then check Enable data logging to turn it on.
  • a username and password which you can use to sign into the tracking website.

The tracking and logging history are available by signing into https://datalog.planetcoops.com/tracking with the username and password we provide.  Note that the server will automatically delete any data more than a week old and while we can't provide a service level guarantee, our service provider claims 99.9% uptime.

Please remember to set values under Menu > Settings > Operator settings > Driver's badge number and Vehicle identification number (e.g. plate) so that you can distinguish each vehicle in the tracking and history logs.

Are there any settings needed to comply with the BC, Canada soft meter rule?

posted 19 Mar 2017, 05:54 by Planet Coops   [ updated 30 Mar 2017, 11:52 ]

In order to comply with the British Columbia Passenger Transportation Board's BC Taxi Soft Meter Rule, please set your Operator name (taxi company name) and Vehicle identification number (unique taxi ID) under Menu > Settings > Operator settings.  As of Taximeter version 1.1.59, this information will appear on receipts and in the fare announcements at the start and end of the hire when the fare is totalled.

Unable to send a test email: Bad email username or password

posted 7 Apr 2016, 12:16 by Planet Coops   [ updated 11 Apr 2017, 00:20 ]

If you receive the following error while testing your Gmail settings in Taximeter:

Unable to send a test email: Bad email username or password

and you are confident that you are using the correct <user>@gmail.com username and password, then head over to Account Security Settings (https://www.google.com/settings/security/lesssecureapps) for the Gmail account in question and enable "Access for less secure apps".  This allows you to use the Google SMTP mail server for clients other than the official ones and would appear to resolve this issue.  Note that Taximeter securely connects to the Gmail SMTP server on port 465 using a TLS encrypted link.  You might have to wait up to an hour for the setting to take effect as it's rolled out across Google's infrastructure.

Taximeter API - Final Fare

posted 17 Mar 2016, 12:23 by Planet Coops   [ updated 19 Mar 2017, 05:59 ]

Where integrators have made mistakes in the past is in the way in which they've tried to capture the final fare information at the end of the ride.  Developers made assumptions that STOPPED mode indicates the end of the ride.  A transition to STOPPED does not indicate the end of the hire.  When STOPPED the meter will continue to calculate the fare based on distance only.  STOPPED mode doesn't imply END, it simply turns the time meter off.  The meter can be placed back into HIRED mode resuming the time meter.  It is only the transition from STOPPED to FOR HIRE that confirms the end of the hire.  To make it easy to detect this transition, Taximeter broadcasts an intent with extras containing the final fare information.  The correct way to pick up the values at the end of the ride (at the transition from STOPPED to FOR HIRE mode) is to register a broadcast receiver for an intent with the "com.planetcoops.intent.action.TAXIMETER_CHARGE" action which is broadcast when the ride ends, see DemoActivity.java in the Taximeter API Sample Project, e.g.

private static final String TAXIMETER_CHARGE_BROADCAST = 
                                                "com.planetcoops.intent.action.TAXIMETER_CHARGE";
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
// currency, see ITaximeterService.getCurrency()
String currency = intent.getStringExtra("currency"); //NON-NLS

/*
* !! USE THIS TECHNIQUE TO CAPTURE THE FINAL VALUES CHARGED AT THE END OF THE HIRE !!
*
* The TAXIMETER_CHARGE Intent is broadcast when a charge is made (on transition
* from STOPPED to FOR HIRE modes) and will carry the final values for the hire.
*/
if (TAXIMETER_CHARGE_BROADCAST.equals(intent.getAction())) {
// TAXIMETER_CHARGE intent
Log.i(TAG, String.format(
                    "Taximeter Charge:
\nExtras: %s%.2f\nFare: %s%.2f\nTax: %s%.2f\n" +
                    "Total: %s%.2f
\nDiscount: %s%.2f\nTip: %s%.2f\n",
currency,
intent.getDoubleExtra("chargeable_extras", 0d),
currency,
intent.getDoubleExtra("chargeable_fare", 0d),
currency,
intent.getDoubleExtra("tax", 0d),
currency,
intent.getDoubleExtra("total_fare", 0d),
currency,
intent.getDoubleExtra("discount", 0d),
currency,
intent.getDoubleExtra("tip", 0d)
));
}
<snip/>
// Receive Taximeter updates
IntentFilter filter = new IntentFilter();
filter.addAction(TAXIMETER_CHARGE_BROADCAST); // Chargeable values
registerReceiver(mReceiver, filter);

How does the meter work?

posted 7 Mar 2016, 08:02 by Planet Coops   [ updated 24 Apr 2018, 09:04 ]

Let's explain how the soft meter works out the fare using the following tariff as an example.

    TARIFF 1
    BY DISTANCE for the first 220yds or part thereof ......$3.25
    For any succeeding 220yds or part thereof ................25c ($2.00 per mile)
    WAITING TIME - for every 29s or part thereof .............25c (52c per minute)


The meter charges for each section of the taxi ride in advance.  This is why the meter shows $3.25, the flag fall, even if you've not moved off yet.

In the conventional mode of operation when the meter is first put into HIRED mode, it charges $3.25, which buys either 220 yards of distance or 29 seconds of waiting time.

If you cover 220yds in less than 29s the meter will increment due to distance, if 29s pass before covering 220yds the meter will increment due to time.

Each subsequent 25c charge will buy either 220 yards or 29 seconds of waiting time.  Once again, if you cover 220yds in less than 29s the meter will increment due to distance, if 29s pass before covering 220yds the meter will increment due to time.

There is a speed at which your 25c is used up at exactly the same rate regardless of whether you calculate it by distance (220 yards) or time (29 seconds).  This is called the changeover speed and the meter uses up the 25c at the rate of 25c per 29 seconds below it, and 25c per 220 yards above it.

The changeover speed is worked out as:
   
    unit distance / unit time = 220yds / 29s = 7.59 yds/s to convert to mph we multiply by 2.04545 = 15.5 mph
   
What this means is that, above 15.5 mph, it doesn't make any difference what speed the taxi moves at, it costs 25c for each 220 yards.  However, below 15.5 mph, it costs 25c for each 29 seconds.

This is why the same journey can cost a slightly different amount, depending on any waiting time.

If you enable Menu > Settings > Custom preset settings > Charge distance and time concurrently, then every 220yds AND 29s the meter will increment.  In this mode of operation, the meter is charging for both distance AND time.  This setting is often used with the Use speed determined waiting time setting so that the time meter only ticks when travelling below a specified GPS/OBD speed threshold.

1-10 of 17