-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathchangelog-and-todo-list.txt
More file actions
1291 lines (1291 loc) · 76.7 KB
/
Copy pathchangelog-and-todo-list.txt
File metadata and controls
1291 lines (1291 loc) · 76.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
**Version 2.44.236
* New Features
* Shrink Route long button labels. (Doesn't work on early versions of Android.)
* Added 'Help' button and menu item on the Connection Screen. (Hidden if no internet access.)
* Handle multi line responses from DCC-EX.
* Added preferences to hide the additional DCC-EX mDNS services.
* Bug Fixes
* Enabling of the PROG type buttons would not work unless PROG was the last track.
* Long Press ESTOP option would stop all throttles.
* Speed Step buttons did not work fully with the 'Limit Speed' button in the non-shunting/switching layouts.
* Setting the Auto connect to IP preference would cause the app to crash.
* Rewrite of the gesture handling on the Turnouts and Routes pages, to resolve a 'bouncing' problem on some devices.
* 28 step (and likely 8 and 14 step) would not always set zero speed when using the seekbar.
* Download Roster would crash the app. Modified the code to be more select about how it loads.
* Other
* Disable the DCC-EX 'Set' button if no valid DC address entered. (for DC/DCX tracks)
* Added Hint for the DC Address on the DCC-EX Track Manager page.
* Disable the background warning when using setting the system permission.
* Disable the background warning when using the image picker to choose a background image.
* Disable the DCC-EX custom Turnout/Point label preferences if the prefTurnoutsShowThrowCloseButtons preference is enabled.
* Upgrade gradle to 9.7.0.
Had to suppress an evironment variable ANDROID_PREFS_ROOT
(fatal conflict between ANDROID_PREFS_ROOT and ANDROID_USER_HOME.)
* Some linting.
* Google Translations.
* Continuation of renaming the files for consistency.
* Force use of the DCC-EX Native Protocol if the server selected by the UDP mDNS server entry.
* Support '<' and '>' inside object names for DCC-EX. Accidentally already worked for TCP. More reliable solution added for TCP and UDP.
* No longer show the protocol option on the connection screen if DCC-EX is selected in the wizard.
* Always set the protocol option to 'Auto' even if DCC-EX is not selected in the wizard.
* Displays the protocol capabilities of the servers in the connections list.
* Enhancements to the DCC-EX PoM Page.
**Version 2.44.234
* New Features
* mDNS is now far more agressive in trying to find servers.
* Disable the DCC-EX Id-n-Go and service mode programming if no PROG track.
* Bug Fixes
* AI fix for the mDNS not working on 'some' older version of Android. Now tries four different ways to start the service. Including NSD in parallel on older versions, or if mDNS fails.
* Fix for the warning message multi-window or the new Android 17 Bubbles crashing the app on older versions of Android.
* Two of the buttons in the preferences could cause older version of Android to crash. Still no understanding of why, but have worked around it.
* Bug Fix for the 'COMPLEX' Consist Function Follow feature on DCC-EX systems.
* Other
* Moved most of the longer toast messages to the custom Toast.
* AI rework of the customToast to avoid memory leaks.
* Persist toast messages, where appropriate, if you close a window.
* Added toast message on returning from background to explain the issue with running in background.
* Linting - Mostly in throttle.java
* Gradle update from 9.2.1 to 9.3.1
**Version 2.43.228
* New Features
* Added a toast warning if the system Font Size is too large.
* New theme 'Bronze'.
* Support for UDP connection to DCC-EX EX-CommandStations. (Allows greater than the 10 connections for TCP)
* Added 'tile' option for background image options.
* When you start logging, it also creates a ..._filtered.txt file that only contains ED log messages.
* Bug Fixes
* Tick mark text not showing on semi-realistic throttle layout.
* Styling problem with the speed buttons.
* Other
* Linting.
* Some code cleanup / refactoring.
* Fixed the colour of the alert/warning glyph for some themes.
* Rearranged the global variables in t_a into logical groups.
* Changed the arrays of sound files names to arrays of resource IDs.
* Upgrade to Gradle 9.5.1 + some dependencies.
* Tweak muted theme.
* Count in the disconnected the loop. Intent is eventually to put in a max tries.
* Removal of local copy of the jMDNS library so later versions will be used.
* Google translations.
* AI suggested changes to the mDNS startup so that it immediately checks for services on app restart.
* Cosmetic changes to the tick mark text for the semi-realistic throttle.
* All the Log.x() messages have been changed to call a method in t_a that also saves to the filtered.txt file if logging has started.
* Starting and Stopping the logging now calls getAboutInfo() to force the os,app,etc. info into the logs.
* The warning message about going into background should now be suppressed if using multi-window or the new Android 17 Bubbles.
**Version 2.43.226
* New Features
* New Throttle layout - "Tablet Vertical Left - two function columns (1-6)".
* Support for the new DCC-EX WiFi commands in the drop list.
* Set web port to 80 for DCC-EX. (version and processor dependant)
* Added preferences to customise the Thrown/Closed button labels for DCC-EX.
* Removed need for READ_MEDIA_VISUAL_USER_SELECTED and READ_MEDIA_IMAGES Permissions.
* Bug Fixes
* Clock not displaying initially, and not updating consistently.
* Layout swap button was not refreshing the screen.
* EStop Action Bar button not always sending EStop.
* Don't query the DCC-EX EStop Pause/Resume state unless the preference is set and the CS version is correct.
* Recent Locos and Recent consists being duplicated.
* Locos acquired by Address and Roster not being recorded separately in the Recents.
* Keyboard commands for Forward/Reverse acted as a toggle rather than the specified direction.
* Other
* Reworking of the custom toast popup.
* Reworking of most of the images in the intro/wizard
* Disabled left/right swipes in the intro/wizard.
* Change the preference checkboxes to switches.
* Cleanup of the format of the different preference types.
* More cleanup of some of the preferences.
* Additional glyphs in the preferences.
* Separate the CV19 button control for the DCC-EX In Command Station Consist button control.
* Additional Google translations.
* Disable the 'stop on phone call' preference if no sim card or don't have READ_PHONE_STATE permission.
* Gradle upgrade to 9.2.0
* Continued renaming of some files for consistency.
* Linting.
* Rethink of the way ED requests the Consist (CV19) value after requesting the decoder address for DCC-EX.
* Moved the prefBackgroundImage group to the device section of the preferences as it now impacts more than the throttle screen.
**Version 2.43.224
* New Features
* Added notching on the throttle sliders when using other than 126 or percent options.
* Option to hide the additional button text on the Select Screen for tiny screens (e.g. the ESU MC Pro)
* Bug fixes
* Reconnect page was never closing. (Mistake made in the switch to Bundles.)
* Throttle Web Page not loading if initial web page preference changed.
* DCC-EX Fix for the Join button being permanently disabled.
* Catch NPE and Index Out of Bounds crashes reported to the Play Store.
* Radio buttons not showing if option to use the old style select loco method was chosen.
* Other
* Cleanup of the Edit Consist and Edit Light pages.
* New button to "Return" to the Select Loco page from the Consist Edit page.
* Theme tweaks.
* Tweaking the toast messages on connect. Makes more extensive use of the customToast.
* Continued the process of renaming elements for consistency.
* Toast message on the IPLS page if the 'Ring' volume is set too low.
* Cleanup of some of the preferences.
* Additional glyphs in the preferences.
* Changes to the preferences to, hopefully, make them easier to navigate.
**Version 2.43.222
* New Features
* New 'Neon Green' and 'Muted' themes ('Muted' appears as 'Paper' in the menu.)
* Added 'Drop loco before Acquire' toggle button on the Select Loco screen.
* Added support to DCC-EX MAIN_INV track type.
* Bug fixes
* Bug fix for muted IPLS sounds restarting when going to another screen
* Bug fix for the 'simple' layout not showing the correct space for the optional function button area.
* Bug fix for the 'original' and 'horizontal switching' layouts leaving a blank space at the bottom of the screen when three locos selected.
* Add missing Stop button UI change when pressed.
* Bug fix for the function button latching when using consists/MUs with DCC-EX.
* Bug fix for retrieving the roster entry information from the JMRI web server.
* Bug fix for recent consist loco directions.
* Other
* Major changes in the way that inter-activity communication works (now uses Bundles)
Removed a number of unnecessary and/or repetitive calls to comm_handler.
Removed a number of unnecessary broadcasts to all activities.
Mostly isolated the incoming DCC-EX processing from the WiThrottle processing.
DCC-EX and WiThrottle send and receive methods moved to separate classes.
* Created a generic 'reusable' theme to make it easy to add new themes.
* Altered the 'neon blue', 'colourful' and 'ultra' (Dark) themes so they use the generic 'reusable' theme, so can't be moved.
* Partial move of the 'original', 'Outline' and 'Black' theme to use the generic 'reusable' theme. mainly toolbars, thumbs and preferences. The main buttons have a different style to the 'reusable' ones.
* Removed some textViews in all the throttles (behind the fwd/rev buttons) that could never be seen.
* Simplified part of all the throttles in all the views (related to the fwd/rev buttons).
* Removed a number of unused drawables.
* Renamed most of the drawables to make the names consistent.
* Upgrade to Gradle 9.1.0
**Version 2.42.220
* Bug fixes
* Bug fix for the Consist Edit and Consist Light Edit screens on early versions of Android
* Don't send blank rosterName to WiThrottle (caused reconnect loop)
* Other
* Improve comms to the reconnect screen. Previously, many messages would not have been considered a successful reconnect
**Version 2.42.218
* New Features
* Added localisation files for English (Singapore) and English (India). Same as UK/Australia/NZ.
* Added preference to 'Swap' the throw/close labels for all DCC-EX turnouts.
* Rudimentary support for the new DCC-EX EStop Pause/Resume.
* Support the new DCC-EX In-Command-Station Consists/MUs. The CV19 dialog is now dual use.
* Added the missing menu items for gamepads 4-6.
* Added support for turnouts/points from an attached keyboard U=Toggle I=Throw O=Close. Must be followed by three digits.
* Added option to just show the Command Line only on the DCC-EX page (For small screens) and removed the command line from the other panels.
* Background image now also applied to the commonly used activities.
* Bug fixes
* Bug fix for the auto-connect to address and port for DCC-EX.
* Bug fix for the DCC-EX handoff dialog. Would not trigger unless you had previously moved a loco.
* Bug fix for the showing and hiding of the number of throttles preference in some situations. Caused by the renaming of the preferences.
* Bug fix for the 'additional' gamepad and volume indicators. This can't have worked properly for a long time.
* Bug fix for multiple gamepads/keyboards.
* Other
* Linting.
* Removed references to the ESU MobileControl II. No longer supported.
* More Google Translations.
* Full removal of the deprecated use of startActivityForResult(). Moved to the new Activity Result APIs.
* Rename of some of the original variables to remove the confusing abbreviations.
* Correction of typos in field and method names.
* Significant cleanup of the display of the Overflow Menu and Action Bar items.
* Added some additional checking for the DCC-EX commands that are likely to be truncated.
* Altered the gamepad test page so that it only responds to the chosen gamepad.
* Switched to using the more reliable deviceDescriptor instead of deviceId for the gamepads and keyboards.
* Removed more redundant API checks.
* Removed redundant v21/v35 styles/themes files.
* Moved to a custom toast (popupWindow) message for the connection warnings. The normal toasts are too short and don't stay on screen long enough.
**Version 2.42.216
* Code improvement or required changes
* Full move to Android X libraries. Lowest supported version is now 5.0 (API 21)
* Move to targetSdk 36
* Immersive mode fixes for targetSdk 36 - enforced edge-to-edge mode
* Significant changes to the way the UI elements are referenced (now in resources in arrays)
* Move the IPLS code to a separate class. Not a complete move as the variables are still largely in threaded_application.
* Removed the swipe up/down option to temperately turn off immersive mode as it is not really necessary anymore and did not work properly anymore anyway
* Remove redundant API checks
* Change API level to numbers instead of the names which I difficult follow with the latest APIs
* Moved the duplicated gamepad loading code to its own class
* Moved most of the gamepad and keyboard checking code to separate classes that are only loaded if you attach a gamepad or keyboard
* Reduced a fair amount of the duplicate code for gamepads and keyboards in throttles.java
* Move the ESU MCII/Pro helper classes to separate files
* Moved to the new way to deal with the Back Button
* Partial replacement of the deprecated startActivityForResult() with startActivity() - where the result was not used.
* Added the concept of 'Extended Logging'. Some Log.d()s will only be logged if a new preference is enabled.
* Linting
* Automatically rename the old preferences to the new format "pref.."
* If the Extended Logging is enabled, the full preference list is printed in the log at start-up.
* Bug fixes
* Bug fix for non-immersive mode on earlier versions of Android <15
* Bug fix for gamepad calibration when using joystick like settings
* Bug fix for gamepads with the IPLS. The tone generator for the beeps is not compatible with the IPLS.
* Bug fix for F11 in the keyboard 'type' of gamepad
* Some minor fixes for the TTS
* Bug fix for the toolbar size when coming out of the Preferences sub folders
* Bug fix for going into background from the connection screen
* Bug fix for a children's timer problem, introduced by the menu item glyphs.
* Bug fix for a timing issue for retrieving the preferences on a server
* Bug fix for multiple gamepads/keyboards
* New Features
* Added back in the VRBoxB gamepad type and fixed it
* Added XBox gamepad support
* Add 'None' option for the gamepad buttons
* Add options for action bar buttons to navigate between Throttle, Turnouts/Points, Routes and Web screens
* Added toolbar buttons for preferences and the wizard on the connection screen. Can be turned off with the existing preference to hide instructional hints
* Added option for medium size toolbar/action bar buttons. The 'auto' option will make screens >=139.7cm (5.5") will use the medium size buttons
* Reinstated the log and file sharing capability
* For DCC-EX automations, you are asked which loco to send on the automation. (Defaults to the currently selected loco.) There is a preference to disable if preferred.
* Added preference to automatically connect to a specified IP and port, even if it is not discovered.
* Added preference to start logging immediately after app startup. Resets itself after use.
* Added preference to hide the Advanced Consist (CV19) action bar button on the select loco screen.
* Preferences screen shows the current value of a list or text preference without opening it.
* Other Changes
* Improvements to the style of the buttons in the dialogs in the Preferences
* More Google translations
* Additional time options for the children's timer
* Glyphs added to most menu items
**Version 2.41.214
* Bug fix for everything that checks for DCC-EX version numbers. Calculation was wrong.
**Version 2.41.212
* Added Preference to not beep on WiThrottle Alerts and Messages
* Added Sort button for Recent Turnouts/Points
**Version 2.41.210
* Last (production) version of Engine Driver to support Android 4.x
* Bug Fix - If you try to close the Web screen if using anything other than the default throttle layout, ED will crash.
* CV Bit Calculator added to the DCC-EX page + plus special support for CV29
* Bug Fix - for not closing the connection in the correct sequence
* Experimental CV19 Consist tool
* Better handle CV19 consists when reading a loco address - DCC-EX - requires EX-CS V5.5.46 or later
* Additional Google translations
* New preference to automatically connect to a named server if discovered
* New preference for, on connection, automatically load the locos you had acquired in the previous session
* New preference to use the WiThrottle 'd'ispatch command instead of the 'r'elease command when releasing a loco
* New preference to add a 'd'ispatch button to the select loco screen
* Moved the 'immersive mode' preference to the top level
* Search feature added to Preferences. (Unable to customise the icon. Will leave that till later.)
* Chinese translations by jsky8785
**Version 2.41.208
* Additional French translations by Alain Carasso
* Additional Google translations
* bug fix - log screen - save log button not visible
* bug fix - notification going into background would not always show, particularly if ED had been restarted.
* bug fix - unable to click on notification to reopen on later versions of android
* remove no-longer-supported references to jcenter() repository
* Upgrade to Gradle 8.13.0
**Version 2.41.206
* Removed ability to share files to ED's scoped storage. Incompatible with version Android 4.x
* Additional buttons on the Reconnection Screen
* Partial rewrite of the activity switch handling in WebActivity to make it consistent with the other activities. The rest will wait till Android 5
* Fix for missing function labels when selecting from recent locos or recent consists
* bug fix - extra entry added to recent locos list for long addresses
* bug bix - clearing recent locos and consists with a swipe left invalid entries
* bug fix - selecting the same loco again would prepend the loco to the next selection
**Version 2.41.204
* Fix for Switching Throttle layouts going back to the connection screen
* Move to the AndroidX version of the Intro library. (Needed for edge-to-edge in sdk 36)
* Upgrade to Gradle 8.12.1
* Added close button to the 'number of throttles' dialog
* Rework the background notifications and restart process if the app is killed in background
* Added preference for - EStop all loco(s) on all throttles(s) when Engine Driver is pushed to background
* Improve the position of the glyphs on most of the buttons
* Bug fix for the Power Screen when an EX-CS has one of the tracks set for AUTO
**Version 2.40.202
* Corrected theming of the main power button on the power screen
* More glyphs and cosmetic changes
* Improve the updating of the toolbar power button on some screen when the app is first opened
* Added button and dialog to share log file(s).
* Added preference immediate action to share any file from ED scoped storage
* Added ability to share files to ED's scoped storage
**Version 2.40.200
* added a new separate check for when the app is in background
* reduce the amount of static text related to log messages
* wholesale cleanup of the code to 'finish' an activity
* Additional log messages in select_loco
* Move to AndroidX libraries
* Added support for ESU MC Pro. Additional + removed + default options for the MC Pro
* Bug fix for PoM programming of DCC addresses 1 and 2
* Preference to using large toolbar buttons. Defaults to large on screens larger than 6.7"/17cm.
* Preference screen numeric input dialogs show the keypad not the full keyboard
* ESU MC2/Pro fixes to support the SRT
* Gradle upgrade
* targetSDK raised to 35 - Had to go back to TargetSdk 35 from 36 to get around the edge-to-edge enforcement on Android 16
* Children's timer changes. Passwords changed to PINs (numeric). Some bug fixes. Added Kiosk mode option. Added Demo mode option.
* Bug fix for the brake slider on the ESU MC Pro
* Bug fix for NPE when changing to a throttle screen layout with more possible throttles than the previous one
* Added Option for single throttle EStop on long press of 'stop' button
* Cleaned up some commented out code (toast commands that have been replaced with safeToast())
**Version 2.40.198
* Tidy up of the AppIntro permissions
* Change the location permission warnings to a toast message
* Add option to the ED icon on the Action Bar, to return to the Throttle screen. This will be enabled by default on new installs
* Prevent LOG_ENTRY_RECEIVED messages from being sent to all activities. Only needs to be sent to the logViewer.
* New 'G' command for keyboard gamepad type to force a function even if it is momentary
* Linting
* Rearrange the Select Loco page for better fit of non-English text. (primarily German)
* Rework of the Select Loco and DCC-EX screens to be more glyph based. Preference to go back to the old Select Loco format if desired.
* Tweaking of the Original, Colourful and Dark themes to make the buttons more three dimensional
* Bug fixes for the Semi-Realistic Throttle
**Version 2.40.196
* Only redraw Route list if actually changed
* Avoid a few crashes reported to Play Store
* Bug fix for non-English 'Auto' protocol option
* Improve non-English layout of the DCC-EX screen
* Replace the deprecated functions in ImageDownloader, Throttle, ImportExportConnectionsList and LogViewerActivity
* Replace the deprecated AsyncTask in LogViewer
* Linting. Primarily in all the util classes and intro screens
* Make the PHONE permission more clearly optional. Phone call preference is automatically disabled if rejected a few times
* Separate warning when the 'Use Location' service is disabled (as different to no WiFi)
* Rewrite of the App Intro permissions request screen to better re-ask for permissions that were not initally granted under Android 14+
* Don't forcibly ask for the location permissions in the Connection screen
**Version 2.39.194
* Toast message when the Roster, Turnouts/Points & Routes each have finished loading for DCC-EX (can be disabled with the Informational Toast preference)
* When you change throttle layouts, and the new layout supports a range of throttles, ask for the number.
* Linting. Primarily the Horizontal Throttle layouts
* Cleanup of the Horizontal Throttle layouts. Fixing some height issues
* Preference to change the Layout Toggle button to cycle through all layouts
* send additional resync requests after DCC-EX reconnect
* Identify serverType IoTT and send <U DISCONNECT>
* Bug fix for Immersive mode. Particularly the button to show/hide the throttle web view.
* Some linting in comm_thread, disabled set_labels start logging
* Removed leading zero from FKey id when sending
* Added option to sequence the loading of items on DCC-EX
**Version 2.38.192
* Update to Gradle 8.8.0
* Additional preference to override the bug fix for roster entries with no functions
* Avoid a few crashes reported to Play Store
* avoid crash when DCC-EX roster entry is invalid
* avoid NPEs when selecting from recent locos and recent consists
* Additional French Translations by Alain Carasso
* fix bug where the bottom of the last function was chopped off in the scroll region
* play a tone and vibrate when a system alert/message is received.
* fix bug where DCC-EX Routes and Turnouts may not load if ED is not removed from memory by Android
* attempt to address anomaly where JMRI sends the DCC-EX turnouts/points before they are actually requested
**Version 2.38.190
* Bug fix for IPLS when linked to the F1 F2 DCC functions
* Added paranoid check for permissions that should be automatically granted
* Significant changes the to the Semi-Realistic Throttle, and in particular the integration with decoders with assistance from John Geddes
* Significant re-write of the air brake system in the Semi-Realistic Throttle
* Bug fix for roster entries with no functions. Was previously not possible to have no functions show for a roster entry
* Increase DCC-EX Track Manager layout size
**Version 2.38.188
* Additional French Translations by Alain Carasso
* Japanese translations by Futoshi Yanagi
* French Canadian translations by Yvéric Patry
* Support DCC-EX remote drop of a loco (FORGET)
* Fix for the change to the DCC-EX response/broadcast for AUTO Track Manager outputs
* Fix for the DCC-EX AUTO track change command. MAIN is sent first
* Bug fixes for the Consist Follow Functions feature
* Send heartbeat restart on reconnect
* Bug fix for 'No' option for the DCC-EX protocol option
* Linting
* New Semi-Realistic Throttle layout
* Additional Google translations
* Added ability to override the WiThrottle default Latching
* Support for new gamepad type - Auvisio Android-B
* Connect Screen - Disable the connect button if no IP/host name AND port
* Bug fix for the Close button on the Function Defaults screen
* Bug Fix for the Default theme on the Function Settings page
* Minor improvements on screen layouts when using German Language
* Update to Gradle 8.4.2
* Cleanup of the Power screen
* Cleanup of the translation files
* Return missing label on the Select Button. It was there but in background.
* Add missing sort-by-position (order received) for the roster
* Roster sort order remembered between selects
* Moved all the function button button scroll regions to include files
* Change to SDK 34 to support new READ_MEDIA_VISUAL_USER_SELECTED permission
* Google Japanese Translations
* New 'Neon Blue' theme
* Improvements to the Original and Colorful themes
* On Horizontal slider layouts, preference to auto show/hide the function buttons of the non-active (volume) throttle
* Added up/down swipe options to change the selected loco (volume) to the next available
* Added shake action option for Emergency Stop
**Version 2.38.187
* Preference to always show the Throw and Close buttons for Turnouts/Points
* Improvement for non-roster locos saved to recents
* additional Google Translations
**Version 2.37.186
* change targetSDK from 33 to 34 per Google requirement by 8/30/2024
* deal with longInt being sent by the devel versions of DCC-EX
* Automatically reduce the font size of buttons if the first word is long or the total text length is long
**Version 2.37.184
* option to have the Throttle WebView on the top of the page
* fix bug where the keyboard would not show in throttle WebView
* Button to sort Turnouts/Points by Name, ID or server order
* Button to sort Routes by Name, ID or server order
* Added Loco Select lists sort buttons
* Preferences for the default sort order for Roster, Turnouts/Points and Routes
* Bug fix for the Automation button labels in DCC-EX
* Improvements to the log screen
* Cleanup of the connection screen
* New button to download the roster list to the Recents list
* Selecting a loco from Recent Loco that was originally selected from a roster will now attempt to reload the original function buttons, regardless to the server. Note with WiThrottle it cannot know the latching characteristics
* UI and performance improvements to the Consist Functions Edit screen
* General cleanup and linting of the select_loco code
* Added the DCC-EX toolbar button the the Routes and Turnouts/Points screens
* General cleanup and linting of the dcc_ex code
* Visual improvements to the 'about' message on the About screen and log
- split the TTS code and types into their own classes
- Added the DCC-EX toolbar button the the Routes and Turnouts/Points screens
- General cleanup and linting of the dcc_ex code
- Improve maintaining of unique IDs for devices (needed for WitThrottle) as a byproduct of not being allowed to access the real Device IDs anymore
- Automatically reduce the font size of buttons if the first word is long or the total text length is long
**Version 2.37.182
* Add intro/setup wizard page for DCC-EX
* New WiThrottle CV PoM page
* Bug fix for <p 0|1> (space after p) - only seen in the JMRI DCC++ simulator
* Include any server with port 2560 as a DCC-EX server when connection preference set to 'Auto'
* Discovery for JMRI DCCppOverTCP Server, checks for the mDNS service "_dccppovertcpserver._tcp.local."
**Version 2.37.180
* fastclock fix
* reinstate mipmap icon
* change the owner filter preference default to false
**Version 2.37.178
* Support for 32 Function Roster entries
* bug fixes for the 'keyboard' gamepad type
* bug fix for the close button in function_defaults
* bug fix for Consist Light Editing
* Bug fix for DCC-EX default latching for non-roster locos
* UI improvements for the DCC-EX and function defaults pages
* New preference to allow for double back button presses to exit the app
* bug fix for initial Auto-Web preference change
* Toolbar/Action Bar UI improvements
* Change all toolbar/Action Bar icons to vectors for better scaling and reduce maintenance effort
* Change the original button styling to vectors - not identical to the original but close
* removal of duplicate icons
* Fix: @mipmap/icon not found (needs revisiting)
* lint removal
**Version 2.36.177
**Version 2.36.176
* Remove use of Settings.Secure.ANDROID_ID
**Version 2.36.174
* remove check for legacy files
* Permission changes to support API level 33
* For Android 10+ - option to retain all data on uninstall
* Added close buttons to the Consist Edit and Consist Light Edit screens
* Added preference to hide Instructional/Help toast popups
* Added support for DCC-EX EXRAIL commands: ROUTE_INACTIVE(id), ROUTE_ACTIVE(id), ROUTE_HIDDEN(id), ROUTE_CAPTION(id,"label")
* Added support for DCC-EX individual track/district power control
* Redesign of the connection screen list items
* Restructure of the source file locations into sub folders
* Significant reduction in the amount of lint.
* Removal of some of the deprecated code
* Added support for Auto selection of DCC-EX Native Protocol. (Server name must contain "DCCEX" or "DCC-EX".)
* remember the dropdown selection in the DCC-EX screen
* update to jmdns-3.5.8.jar
* Added support for additional DCC-EX Track Types: AUTO, EXT, BOOST
* new preference to have the pause button near the stop button
* cleanup of the function defaults screen
* add close button to function defaults screen
* hide 'save log' button after pressing. Show file name on the log screen.
* Additional French Translations by Alain Carasso
**Version 2.35.172
* Fix: allow 16 char for default function labels
* Fix: avoid crash on DCC-EX roster entry
* Additional option for the Consist Follow Function feature
* Fix: bug fix in the Consist Follow Function feature
* include uppercase MAC addresses in DCC-EX match
* Fix for DCC-EX locos being reversed in a consist
* Fix for DCC-EX consist light editing not working
* Fix for DCC-EX functions not being activated correctly when in a consist
* CV29 read in DCC-EX. Additional information provided
**Version 2.35.170
* allow external web view on CSs without web servers
* Better checks for limiting function numbers
* option to always use function labels from server
* For DCC-EX, allow overriding of the default latching behaviour of all/any functions
* Fix: Refresh Roster list after populating from DCC-EX
* Fix: Avoid several NPEs reported to Play Console
* Fix: improve throttle name uniqueness
* added DCC-EX Protocol indication to About page
**Version 2.35.168
* fixed regression with LnWi states
**Version 2.35.164
* New 'Tablet Vertical Left (1-6)' throttle screen layout
* Fix for when deleting servers from the recent list
* Improve Recent Turnouts state display and toggling
* Some fixes for DCC-EX
* Support for Modes A & C on the MagicSee R1 gamepads
**Version 2.34.162
* Fix activity transitions
* Use Backup by Google One to save/restore Preferences and settings.
* tolerate lack of PHONE permissions
* move a few Preferences to Advanced
* set "Web" menu to "DCC ESP" for DCCESP server
**Version 2.34.160
* Prevent some crashes reported to Play Store
**Version 2.34.156
* Better sorting of Turnout/Points list where numbers are in the names
* Fix Android Game mode for gamepads
* Support for USB volume dials as a Gamepad type
* Preference for setting what a second press of the Stop button on a gamepad does
* Prevent some crashes reported to Play Store
* Support for using the native DCC-EX commands instead of WiThrottle on an EX-Command Station
* Able to read and write CVs when using native DCC-EX commands
* Able to issue DCC-EX commands directly
* Able control the Track Manager feature of DCC-EX
* Correct a misalignment of the touches on all the vertical throttles.
* Add IoTT Stick to server list on About page
**Version 2.33.154
* Add link to Privacy Policy, per Google requirement
**Version 2.33.152
* 'Stop' button cancels 'Pause' if stationary
* Volume 'Pause' and 'Mute' hardware buttons stop then toggle direction
* Fix: gamepad buttons when some default function labels not set
* New: Option to specify only one gamepad, defaults to true
* Fix: manual turnout buttons not enabling
* add some padding to Port heading on Connect
* Show menu on Disconnect Screen
* Fix: tolerate FKeys > 28
* New: Preference to alter the Heartbeat Response Factor (percentage of the heartbeat period)
* New: Preference to have the App Icon and App Name act as an emergency stop
**Version 2.32.150
* Fix: soft keyboard stayed up after exit from Loco Select in some conditions
* Fix: roster icon url / location (broken in 148)
**Version 2.32.148
* TTS current speed option
* Hide the status and navigation bars on Lock&Dim screen.
* Check for "VN" not just "V" in version message
* add port to About page
* privatize a few variables
* comment out DownloadMetaData and GetJsonFromUrl, which use the now-removed apache.http.client
* fix issue with the gesture overlay on the routes screen
* option to speak the buttons in the gamepad test
* fix stop during pause on gamepad
* correct log file path shown, and include in log
**Version 2.32.146
* TTS speed bug fixes
* additional TTS options
* Option to link F1&F2 to the IPLS Bell and Horn
* Reset gamepads on start
**Version 2.32.144
* Fix: Show proper function keys for "Request LocoID" feature
* Fix: Several gamepad issues
* Fix: Engine Driver not appearing in recent apps list
* Fix: Reconnect screen created extra entry in the recents list on Samsung S5
**Version 2.32.142
* preserve the Web Activity status when switching screens
* Fix: avoid web page reload on navigate
* Option to show the Server Description on the Action bar
**Version 2.32.140
* Option for Haptic feedback on button presses
* Option to use a normal keyboard (bluetooth or USB) as a gamepad type
* Gamepads continue to function in most activities (excludes keyboards)
* Images for any selected loco is cached locally
* Option to select a local image for roster locos (For WiThrottle servers that don't support images)
* Web Screen maintains state when swiping, using the menus or auto-web
**Version 2.31.138
* Fix: Auto Server preference load
* 'Limit Speed' and 'Pause' added to the Horizontal Layouts
* Show roster lists from unknown servers
**Version 2.31.136
* Avoid NPEs in gesture handlers
* support for user-defined loco sounds
* Additional French Translations by Alain Carasso
* hide web view button and prefs when not available
**Version 2.30.134
* Cleanup of the Power Screen
* Dead Zone Preference Fix
* handle improved state labels (JMRI change)
* Rework Advanced Preferences feature
* icons for the preference categories
* basic 'in device' loco sounds preferences (loco 0 & 1 only)
* Move to Scoped Storage. (Enforced by Google for Android 11.) Engine Driver's data files are now stored in ../Android/data/jmri.enginedriver/files/
**Version 2.30.130
* shortened About string
* avoid crashes reported to Play Store
* FIX - Switching layouts sometimes not updating correctly for direction changes
* bump minSdkVersion from 15 to 16
* Cache roster images for selected locos
* Option to load local images for roster locos (primarily intended for DCC++EX but works for any server that does not support a web server)
**Version 2.30.128
* Add confirmation dialog to Clear Consists
* FIX - Locos selected from roster written to Recents without name
* FIX - Roster entry option did not show for earlier version of JMRI
* All connections logged to connections_log.txt
* hide "Server Roster" loco selection option if server doesn't support rosters
* ActionBar replaced with Toolbar. Activity labels repositioned over the app icon
* All button style menu actions will always fit on the toolbar
* Toolbar can be used for left and right swipes
* Option for Left and right swipes to only be allowed on the toolbar
* Toolbar buttons added to all screens
* compileSdkVersion 29 added
**Version 2.29.126
* Haptic feedback on sliders (optional)
* Support for Request Loco ID (DCC-EX-only)
* Additional French translations by Alain Carasso
* remove footer from select_loco
**Version 2.29.124
* enforce minimum spacing on most outgoing messages
* increase minimum message spacing for LnWi
* update regex to handle LnWi hex ids
* avoid IndexOutOfBoundsException, NPEs and IllegalArgumentException reported to Play Store
**Version 2.28.122
* Option to adjust the stop button spacing on the vertical throttles
* fix stop button not showing when slider is hidden
* avoid NPEs reported to Play Store
* removed commented-out code, reformatted and re-indented
**Version 2.27.120
* avoid NumberFormat and NPE crashes reported to Play Store
* update Readme
* additional French Translations by Alain Carasso
* adjusted button spacing on vertical throttles
**Version 2.27.118
* merge another speed and direction request message
* Avoid crashing when updating knob position if speed-steps changed
* new 'Special' consist function following option
* Hide "Swipe Through Routes" Preference if Routes not supported (e.g. MRC)
* change VN connect timeout to explicitly check for version
* New preference to disable the sound and vibrate on disconnect
* Preference to show the timestamp on the log entries
* Bug fixes for the 'Complex' string matching consist function following option
* Fix - show numeric keypad for Dead Zone preference
* Fix - Direction button labels if default entered on one only
* Change - Fix 'Loco:' label on the non-original throttle layouts
* Change - Hide 'Loco:' label once a loco is selected
**Version 2.26.116
* Option to display 1-4 functions on the 'Simple' Throttle layout
* set input type to numeric for server, port and loco address, prevent crashes
* add "discovered" server for DCC-EX access point, rewrite LnWi detection
* update ESU Mobile Control II support for newest devices
* add address and port to VN timeout message
**Version 2.26.114
* show server turnout list even if it arrives after activity started
* Use wifi connection unless Allow Mobile Data option selected
* set focus to address field if DCC Address selected
* fix for complex text matching functions
**Version 2.26.110
* add HTservertype and Htserverdescription to About page
* change targetSdkVersion from 28 to 29
* moved from ACCESS_COARSE_LOCATION to ACCESS_FINE_LOCATION due to SDK29
* don't allow web swipe when Auto-Web is on
* show "Server Defined", not "Defined" in Turnouts if no server type
* bypass "EACCES (Permission denied)" error due to SDK29
* removed unused Web Orientation option "Auto-Web"
* fix: web menu and swipe now remember URL and zoom
* remove save and restore of web view "scale", no longer needed
* send speed and direction request in one message
* some linting and commented-out-code removal
* change all timeout-related values to milliseconds and adjust by +/- 10% instead of 1 sec
* fix crashes reported to Play Store
**Version 2.26.108
* get server name for prefs using webserver
* Add Numeric/Text button on Connect soft keyboard
* Swipe down options same as swipe up
* include throttle web view when switching layouts
* additional background layout options
* Menu Button to show/hide the Throttle Web View
* Pref to add Web Activity to swipe list
* fix crashes reported to Play Store
* default to numeric keyboard for Server Address
* Suppress WiT message on exit unless connected
* Limiting speed change rate also applied to decreases in speed
* Optional Pause button for vertical throttles
* Pause and Limit Speed options for gamepads
* 'Different' acknowledgement sounds for Pause and Limit Speed options for gamepads
* multiple changes to Pause function
* increase delay before sending 'Q' to server
* removed redundant vertical throttle code
* reduced several heartbeat minimums to 1 second
* removed send of 'N' heartbeat when no speed/dir response from server (old JMRI only)
* disconnect if VN not received in 5 seconds
* only scroll Log View when at bottom
* improve connect screen when using very large fonts
* consists null debugging and fixes
* Support for Gamepad = Utopia 360 - Android - Mode C
* prevent recursive crash in Turnouts due to comparing truncated string
* fix incorrect toast on number of throttles
* debug advancedPreference name when not found
**Version 2.25.106
* fix crashes reported to Play Store
* several visual and organizational improvements to Preferences
* Optional Action Bar button to switch Throttle Screen layouts
* Add ED version to log
* More Catalan and Spanish translations by Luis Zamora
**Version 2.25.104
* New thumb image for switching throttle
* Clear web view cache at connect for more reliable loading
* Improve background mode, restarts and heartbeat
* Theme and throttle preference changes no longer restart the app
* Added option to use a background image on the throttle page
**Version 2.25.102
* new Switching/Shunting Throttle Screen types
* additional French Translations by Alain Carasso
* fix time zone offset issue
* add clearcache at connect for web views
* add slf4j-nop and switch to external jars
* add clearcache at connect for more reliable web view loading
* new longpress to reload web view
* eliminated erroneous background notifications when device is rotated
* invalid initial web page preference setting now handled gracefully by web view
**Version 2.25.100
* Swipe now works everywhere except active sliders
* Less likely to activate function button when scrolling or swiping
* Fix problem in 'drop before acquire' when re-selecting the same loco
* Play sound and vibrate when device disconnects
* Remember Recent Consists and restore them from the select loco screen
* Added close button and roster image to roster details dialog
* Rework of roster name usage when an address is entered
**Version 2.25.98
* change fastclock from websocket to withrottle PFT message
* add fastclock to other activities
* Remember Recent Turnouts/Points and allow selection from the turnouts/points screen
* Add View Log to Turnouts, Routes and Web
* prevent crash reported to Play Console
**Version 2.25.95
* Option to show a Shunting/Switching speed button (Vertical Throttle only)
* Fix problem in 'drop before acquire' when re-selecting the same loco
* Play sound and vibrate when device disconnects
* Remember Recent Consists and restore them from the select loco screen
* Added close button and roster image to roster details dialog
* Rework of roster name usage when an address is entered
* Distinguish manual loco address entry vs. roster selection
**Version 2.24.93
* prevent crash when removing recent loco
* enable clear text in webview
* prevent crashes reported to Play Console
**Version 2.24.89
* Option to show/hide advanced preferences. Advanced preferences are hidden by default
* Entering colon (":") into the host field changes focus to the port field
* Long press on an entry in the Recent Locos List removes it from the list
* Recent Locos List shows the icon from the roster if found
* Show tick marks on vertical sliders, with option to disable
* fix bug when returning from web view
* prevent several crashes reported to Play Console
* Change targetSDKversion to 28
**Version 2.23
* ESU MC2 support Gradle dependency
* Change target API to 26
* gamepad fns behave same as screen fns
* Support for the Flydigi Wee 2 gamepad controller
* Introduction and Initial Setup Screens (wizard)
* Recent Connections list - allow user to delete individual entries with long-press
* Option to import preferences from a URL
* Option to automatically import preferences from the JMRI Server on connect
* Add location permission prompt
* Add wifi & OS details to About screen for debugging
* change default for DirChangeWhileMoving and SelectLocoWhileMoving to false
* add some edits to Turnout# input
* show warnings when not using wifi network
* update jmdns from 3.5.4 to 3.5.5 to keep up with JMRI
* begin adding automated testing infrastructure, resumed tracking gradle*
* add View Log to Connect screen
* delete settings files on Reset Preferences
* fix alignment of multi-word functions
* add permissions bypass for SDK15
* avoid some crashes reported to Play Store
* remove some lint warnings
* rearrange some menus
* remove redundant tags from log view to improve readability
* merge -vll resources into default
* fix pref error message
* prioritize eStop button position
* fix some reported bugs and lint warnings
* Czech translation by Petr Šídlo
* French translation by Alain Carasso
* Two additional throttle page types
* begin work on Adaptive icons
* option to save log to file
* Web View and Auto-Web remember page and position on page
**Version 2.22
* New 'Big Button' throttle screen option. (Only one throttle with no slider.)
* New Colourful/Colorful theme
* Option to always treat F1 & F2 as sound for the Selective Lead Sounds option
* update project to Gradle build tools
* bump MinSDKVersion to 14 (from 7)
* replace JmDNS source with jar file
* prevent crashes reported to Play Store
* Spanish and Catalan translations by Luis Zamora
* disable Web View prefs on Simple and Big Button only
* Build ESU MC2 support via Gradle dependency rather than pre-built jar
* New option for ESU MC2 to allow knob to be disabled by on-screen button
**Version 2.21
* remove turnout hardware list, WiThrottle Server changed to also handle numeric-only
* changes to EngineDriver icon
* remove toast info messages for turnouts and routes
* fix issue with premature address confirmation
* no longer request unconfirmed locos on reconnect
* prevent crashes reported to Play Store
**Version 2.20
* Fix for Gamepad functions F10 and above
* monochrome icon for the notification bar
* handle MRC sending multiple VN messages
* add support for "HmXXXXX" info messages returned from server
* reduce 'Q'uit delay to avoid early socket close which doesn't clear WiThrottle list
* prevent crashes reported to Play Store
* ESU MC2 Stop button long-press behaviour modified to act on timeout rather than release
* ESU MC2 control knob now responds to external speed changes - fixes issue #292
**Version 2.19
* New flashlight button option for devices with on-board camera flash. Needs Camera permission for this.
* optional 'simple' throttle screen allowing up to six throttles with vertical speed sliders but no function buttons
* optional 'vertical' throttle screen allowing exactly two throttles with vertical speed sliders and function buttons
* option to filter the roster
* major throttle change from T/S/G to array
* require WiThrottle v2.0, also fixes issue where user connects to web port
* remove checks and coding for withrottle_version < 2.0
* standardize withrottle_send command formatting
* prevent several crashes reported to Play Store
* revised Select/Release screen design
* moved connect and socket timeout values to preferences
**Version 2.18.1
* option to change languages from the preferences screen
* no longer requires an accelerometer in the device to install from the Play Store (reported bug)
* option to change the long press delay for the direction buttons
**Version 2.18
* prevent some crashes reported to Google Play
* option to hide the demo server
* option for the volume keys to follow the last touched throttle
* fix issue with ESU Mobile Control II knob position not updating on EStop
* Import includes throttle name if on the same device that exported them
* multiple options for shaking the phone to perform an action
* separate preferences for Volume key and Gamepad speed increments
* fix issue with ESU Mobile Control II knob position updating speed even when screen locked
* option to speak some gamepad related events
* option to skip the gamepad test with just one 'decrease speed' button press
* Italian and Portugese translations from Roberto Falorni added
* New Dark theme option
* option to reset the Function Label defaults
* option to reduce the number of displayed default Function Labels
* only send release for throttles actually in use
* option for ESU Mobile Control II to disable direction change at zero end-stop position
* option for ESU Mobile Control II to disable on-device stop button short-press
* fixed mis-handling of WiThrottle-created consists
**Version 2.17
* Add support for ESU Mobile Control II throttle
* Add toast messages when ESU Mobile Control II in stop mode
* Add relevant British English translations
* Enable/disable speed buttons & seekbar when ESU Mobile Control II in stop mode
* Optional high contrast colour themes
* Improved the rounding error on scale speed calculations (The throttle will zero more reliably)
* Option for additional highlight of the Loco selected. Either via the Volume keys or Gamepad 1 or both
* Option to disable the hardware volume keys to control the throttle
* Enforce a test each time you use a gamepad, with an option to disable the test
* Some regionalisation for Australia and Great Britain
* prevent some crashes reported to Play Store
**Version 2.16
* Preference grouping
* new gamepad repeat handling and sound feedback
* Individually control lights in consist
* Handle multiple gamepads
* warning before clearing Recent Loco list
* user-selectable gamepad buttons
* use repeat Preference for volume as well
* Export/Import/Reset Shared Preferences
* fix screen issue when soft menu left open
* New swipe-up Prefs to dim and lock
* remove min android check for gamepad support
* prevent some NPEs reported to Play Store
**Version 2.15
* fix incorrect loco request on reconnect when loco is not in roster (found by Bob Grandle)
* prevent crash caused by empty JMRI consists
* prevent concurrentmodificationexceptions reported to Play Store
* prevent loop of Steal dialog
* hide turnout toggle button if system is LnWi
* Preserve throttle button states - Robin Becker
* Correct function button release handling for consists - Robin Becker
**Version 2.14.2
* swipe up on Throttle screen to hide Throttle Web view - Peter Akers
* add client support for Steal
* avoid several crashes reported to Play Store
* add spacing following acquire and release to give CS time to respond
* don't send unneeded request for velocity and direction on connect, WiT now sends anyway
**Version 2.14.1
* avoid some crashes reported to Play Store
* postpone sending of "Q"uit message until Throttle has a chance to send stops
* prevent entry of new lines in text fields (Throttle Name, initial web, etc.)
**Version 2.14
* request and show function labels for JMRI consists - mstevetodd
* show activeProfile on About page - mstevetodd
* Prevent direction change while moving - Peter Akers,
* Decrease Loco No. button Height - Peter Akers,
* Show loco address instead of names - Peter Akers,
* Increase web view size - Peter Akers,
* Immersive mode - Peter Akers,
* Stop on direction change while moving - Peter Akers,
* Always use default labels - Peter Akers.
* hide menu options and activities when not allowed or supported - mstevetodd
**Version 2.13
* allow app to be moved to SD card - mstevetodd
* Added selective sound routing preference for consists - Robin Becker
* eliminate crash when multicast not supported - Robin Becker
* support for MRC wifi hardware (1530) - mstevetodd
**Version 2.12
* only send estop for active throttles
* new prefs to include Routes and Turnouts in swipe list - Robin Becker
* new pref to hide turnouts/routes if no user name - Robin Becker
* fixed issue with Consist Edit list view on new OS
* only send Horn, Bell and Headlight functions to lead loco in Engine Driver consist - Robin Becker
* Stop button no longer moves the "v" - Robin Becker
**Version 2.11
* Avoid StringIndexOutOfBoundsException reported to Play Store
* when slider hidden, use -- and ++ instead of << and >>
* avoid ClassCastException on string conversion - Robin Becker
* new Reconnect logic and display - Robin Becker
* handle move of JMRI roster folder
* prevent npe in turnouts.java reported to Play Store
**Version 2.10
* Adjusted speed step handling to restore proper AUTO speed behavior - Robin Becker
* new pref to stop locos when phone goes off hook - Robin Becker
* new pref to hide speed slider, making a button-only throttle - mstevetodd
* send estop instead of stop when estop button pressed - mstevetodd
* prevent several npes reported to Market - mstevetodd
**Version 2.9
* fix issue with volume button changing wrong loco speed when unused throttle has the "v" - mstevetodd
* Catch additional exceptions when starting jmDNS listener (NoSuchMethodError reported to Store) - mstevetodd
* update system list for turnout prefixes - mstevetodd
* Modified handling of consists so that Locos are not visible unless WiT reports that they have been acquired (via the MT+ message). - Robin Becker
* Also TA does not pulse the outbound heartbeat for a throttle unless the lead loco has been acquired. - Robin Becker
* Adjusted the scaling of loco/consist on Throttle and SelectLoco screens to better utilize the actual textView size. - Robin Becker
* Widened the Throw, Close and Toggle buttons on the Turnouts screen so the label text does not wrap. - Robin Becker
* Adjusted size of the Power icon so it is square. - Robin Becker
* corrected number of default function buttons to 28 - mstevetodd
* added option to show JMRI fast-clock in title bar - Robin Becker
* fixed theme issue with pre-Holo devices - mstevetodd
* reduced click area of turnout and route lists to prevent inadvertent clicks when scrolling - mstevetodd
* reenable alpha input for turnouts and routes - mstevetodd
* add text hints for all entry fields - mstevetodd
* redo notifications to support reopening when clicking notification - mstevetodd
* converted jmri metadata retrieval from xmlio to json - mstevetodd
* restore last scroll position of turnout and route lists - mstevetodd
* added option to use speedsteps instead of percentage - Robin Becker
* show % or speedstep # in speed view - Robin Becker
* always show loco for pre-multithrottle, since no response will come - mstevetodd
* a few fixes to prevent crashes with pre-multithrottle - mstevetodd
* rearranged and reworded prefs to flow a bit better - mstevetodd
* changed default initial web pages to reflect recent web server changes - mstevetodd
* added specific speed step options - mstevetodd
* fixed slider height and thumb alignment issues, and improved button hiding - mstevetodd
* fixed issue with notification not working from throttle - mstevetodd
**Version 2.8.2
* restore functionality for very old JMRI (pre-multi-throttle)
* fix selection/display of roster entry when same address is used for multiple entries
* only show third throttle when supported by JMRI
* rearrange the third throttle code to lower chance of NPE reported to Play Store
* request heartbeat update on third throttle as well
* avoid NPE when heartbeat comes as loco removed (Robin Becker)
**Version 2.8.1
* fix default for "Drop Before Acquire" if never set, should be off
* add click sounds to function and direction buttons, to match other buttons
**Version 2.8 (mstevetodd)
* only show loco and release button for # of throttles allowed
**Version 2.8 (Robin Becker)
* New rotation option to auto-jump to web view in landscape mode.
* Quick list filter for turnouts and routes, with new preference for location delimiter.
* New consist editing dialog, for choosing lead loco and setting direction of each loco in consist.
* only show Ongoing Notification when ED is in background
* removed several warnings in JmDNS
**Version 2.8 (Jeffrey Machacek)
* User can display EStop Button in prefs.
* Changed display theme to Holo to display action bar.
* Estop can be visible in all screens.
* Estop stops all locos controlled by EngineDriver.
* All screens have action bar and menu.
* Lets user see and control Layout power with icon in menu bar in Throttle, Turnouts, and Routes screens.
* If Engine Driver is not allowed to control layout power, menu bar layout power icon not visible after first press.
* Pref to display layout Power icon or words depending on API version.
* Pref to set right and left padding of all throttle's speed slider.
* Pref to connect to first discovered JMRI WiThrottle Server.
* pref for throttle up/down speed buttons at ends of sliders, with setting for amount of change.
* Fixed nullPointException for new ConsistEdit, user can't consist with drop loco before acquire pref On.
* Can go to ConsistEdit screen from throttle menu when there is a consist for a throttle slot and can choose which throttle to edit.
* Can now clear recent connection and locos list with button.
* Added third throttle slot.
* User can select how many throttles to display (1 to 3).
* Fixed problem when sending the quit "Q" command to JMRI, now the throttle name is removed from JMRI WiFi Throttle list.
* Displays OnGoing Notification to user that Engine Driver is running.
**Version 2.7 (Robin Becker)
* prevent crash when going to About or Prefs prior to any connections
**Version 2.6 (all by Robin Becker unless noted)
* pref to "disable" on-the-fly consisting, and revert to dropping when a new one is added. - mstevetodd
* pref to only show one throttle
* web page history and zoom levels preserved through rotation, navigation and back button
* separate prefs for throttle and web view
* made menus consistent across activities
* orientation prefs used for all activities
* rewrote default function settings for performance
* send SHUTDOWN message after DISCONNECT plus a delay.
* Connect now uses worker thread (asynctask) to save connection list
* Throttle & Web pages: pause webView timers and stop CookieManager() in onPause, start them in onResume
* default preference values now use the associated DefaultValue strings