**Version 2.38.188 * Additional French Translations by Alain Carasso * 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 Langauge * 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) throtttle * 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 beong 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
(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 selLocoWhileMoving 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
* moved calculation of speed slider top/bottom out of gesture Start() and into set_labels() so that the Top/Bottom calcs are only updated when the layout is updated.
* swipe now works over disabled sliders
* moved roster loading, now updates as roster arrives
* multiple changes to improve performance and shutdown properly
* multi-system turnout system names can be directly entered
* move system info from SelectLoco to About
* improvements to all direct text and numeric entry
* new webpage is loaded after changes in Prefs
* added Debug log viewer - mstevetodd
* new launcher icons
* new pref to limit number of recent locos
* prevent duplicate jmdns listener - mstevetodd
**Version 2.5
* return TargetSDKVersion to 10 to trigger "legacy overflow button" for menu (needed on ICS)
* keep screen on in web view (prevent screen blanking)
**Version 2.4
* update JmDNS to 3.4.2+
* fixed opaque "footer" in roster listview (seen when few items exist)
* catch error when loco address left blank
* allow entry of complete http* url for web views
* sort routes by user name
* sort turnouts by user name
* add pref for orientation of web screen
**Version 2.3
* lock orientation to portrait for most screens
* add Mfg to roster details (overlooked earlier)
* prevent "bounce" when slow server sends old speed. ED was sending it back as new request.
* increase server connection timeout values
* track individual addresses/rosterids for acquired locos
* process MT-xxx messages to remove loco from a throttle
* handle space char in roster id as %20, not +, for new jetty server
* increased caching of roster icon images
* prevent multiple requests of same image when opening roster (was due to resizing of view)
* pref to limit max throttle change, to prevent accidental speedup when trying to press reverse.
* ignore swipe on throttle sliders
* re-retrieve roster details when roster received
**Version 2.2
* use roster name when selecting loco, to handle multiples with same address
* show roster details (including comments) on long-press on roster entry in list
* determine full JMRI version using xmlio server (shown on roster page if available)
* use new roster icon urls if JMRI version > 2.99.4
* catch out of memory error when retrieving large images (seen when resize not available)
* ignore failed wifi lock attempt (error reported to Market)
**Version 2.1
* new user pref to select orientation on Throttle (default to portrait)
* stop javascript refresh on exit (by loading a "blank" page)
* rearranged prefs
**Version 2.0
* connect to discovered servers using IP instead of verifying name (avoids timeout on non-DNS network)
* change server list items to display system name and ip address
* move "web" menu item higher in list so it always shows in Throttle (instead of under More)
* only show/use ipv4 address
* implement serviceRemoved to remove ended servers from discovered list
* web page links now open inside ED instead of external browser
* added prefs for "Initial Web Page" and Web View Location
* initial version of web page on throttle page, Bottom only, 50%
* prevent ConcurrentModificationException crash (reported to market)
**Version 1.9
* encode icon filenames to handle special characters
* catch error when attempting to load very large image files
* send resizing parm with image retrieval (also added code to JMRI to take advantage of this)
* moved roster.xml loading to an async thread
* upgraded imagedownloader
* catch NPE in withrottle_send (reported to Market) - (rbecker)
* improved handling of connection loss, including reconnect (rbecker)
**Version 1.8
* Add try/catch for ScrollView.onTouchEvent, reported to dev console (rbecker)
* ignore malformed roster list, reported to dev console (mstevetodd)
* retrieve and display roster images, if mini web server running (lionel)
* show consist details unless name is > 4
* Removed unneeded host name lookups to speed connection on some networks, including 2 in jmDNS
* Turned off speed step handling (for now)
* Fixed crash (reported to dev console) in routes, turnouts and power when response was < 3 chars
* catch error "Thread already started" message (reported to dev console)
* reduce height of roster entries if icon not used
**Version 1.7
* Enabled "fling" between turnouts, throttle, routes (rbecker)
* Fixed the shutdown and back behavior (rbecker)
* added animations to all page transitions (rbecker)
* added menus to routes and turnouts activities (rbecker)
* fixed initial height on throttle (rbecker)
* show feedback on Stop button (rbecker)
* fixed intermittent failure to get functions from roster (rbecker)
* handle strange speeds sent by eStop and show message (rbecker)
* add prompt before disconnecting (rbecker)
* moved socket read and heartbeat into classes (rbecker)
* now checks for WiT even when no loco selected (rbecker)
* now shows correct page when returning from web (mstevetodd)
* added menu to web activity (mstevetodd)
* don't blank out manual entry after use (mstevetodd)
* always include jmri.mstevetodd.com in connections list (mstevetodd)
* new pref for max recent connections (mstevetodd)
* moved save of recent connections to follow start of throttle activity instead of precede
**Version 1.6
* Began adding Multithrottle support (serious rigged version, 2.0+ only)
* Mirror speed and direction from server (on heartbeat, 2.0+ only)
* Show warning on client if server goes away while loco selected
* Improved appearance of buttons
* Fixed incorrect heartbeat request when not enabled on server side
* Shrink the font for loco strings instead of growing the buttons
* Added background texture
* Added preference to hide recent loco list (more room for roster list)
* corrected display of Short addresses in Recent list
* prevented crash when MaxThrottle pref is blanked
* button "on" images work even when < 2.0 (also fixes the immed-after-press display)
* fixed slider height on low-dpi devices
* fixed height of selected locos lists on select_loco activity
* button text now shows up in eclipse graphical layout tool
* receive web server port#
* add menu option to browse mini web server home page
* started work on "flings" between turnouts, throttle, routes.
* added device IP to "cannot connect" message for better debugging
**Version 1.5
* sort roster entries by name
**Version 1.4
* uses JMRI images for power off/on/unknown instead of text (added by rbecker)
* fixed several potential crashes when reading misformatted settings files (mstevetodd)
* improved default throttle naming to prevent duplicate connections (mstevetodd)
* updated jmDNS again (mstevetodd)
* changed discovery code to take advantage of jmdns changes, works better with ubuntu (mstevetodd)
*Version 1.3
* suppressed popup soft keyboard on Turnout and Route panels until EditText view is touched (added by rbecker)
* fixed another NPE reported to market (mstevetodd)
* updated jmDNS again (mstevetodd)
*Version 1.2 - changes/additions by mstevetodd
* updated jmDNS again
* fixed a couple of NPEs reported to Market
* moved start of jmDNS to OnResume (to reconnect after lock/unlock of device)
* switch loco controlled by volume buttons (by tapping the speed label)
* added preference to increase height of throttle sliders
*Version 1.1 - changes/additions by mstevetodd
* create and delete jmdns as needed (should prevent lockup when wifi is toggled, and will "retry" if wifi state changes.(
*Version 1.0 - changes/additions by mstevetodd
* moved directory creation to connect message handler, removed writeable check altogether, and added toast messages on file read/writes
* moved read of connections_list.txt to onStart so it shows immediately
* use volume button for speed of first loco (only if selected)
* add existing consists to select list in select loco, formatting name as addr1+addr2+addr3, etc.
* improved handling of discovery listener, turn it off and on, and don't add duplicates
* get qualified name of server and use it in discovery list, (verify it resolves first)
* added preference to hide route system names
* update jmDNS to 3.2.2 to improve server discovery
* turn off multicast_lock when not used
*Version 0.9 - changes/additions by mstevetodd
* added roster list to select_loco screen (hidden if no entries)
* removed writeable check from read routines of settings and recent file loads (was causing it to randomly skip loading on Incredible)
* show long/short in recent locos list
* show roster names in throttle and selected loco
* always use function labels from roster entry (if set)
*Version 0.8 - changes/additions by mstevetodd
* added NCE to hardware system list (oversight)
* added preference to default Long/Short/Auto for loco address length
* leading 0 was treated as octal in select_loco, made it stop doing that
* show disabled Copy button in function settings
*Version 0.7 - changes/additions by mstevetodd
* prevent acquire with blank loco address (was crashing)
* new Turnouts display showing list of defined turnouts, current state, updated on change
* toggle turnout on list click
* direct entry of turnout address with toggle and throw/close buttons, disable controls on not allowed
* new Layout Power control activity
* new Route control activity (clone of Turnouts)
* enhanced titles on all activities
*Version 0.6 - changes/additions by mstevetodd
* added preference for Maximum Throttle, to set a maximum speed to be sent
* lowered minSDK from 7 to 4 (to allow use by Android 1.6 devices) had to copy drawables to drawable folder
*Version 0.5 - changes/additions by mstevetodd
* added select loco button to ed screen, call ed direct from connect
* added 29 function buttons for both throttles, using scrollers
* disable buttons and slider and shrink screen usage for unselected loco
* adjust function buttons to indicate current state from WiT server
* added release buttons to sl activity
*Version 0.3 - changes/additions by mstevetodd
* function labels for throttle, hiding unused
* separate rev-stop-fwd buttons
* read responses from withrottle and store in shared app variables
* forward responses to other activities, so they can update as needed
* advance screens only upon successful responses
* release loco when leaving throttle activity, with pref for stopping loco
* screen and messaging additions and edits to provide more feedback to user
* set short timeout on socket open and reads to prevent app from "hanging" on long timeout
* added heartbeat logic (when set on withrottle side)
* copy function labels from roster (note: they do not include sticky bit)
* send hardware address as HU