A new version is available now. It contains a workaround for problems with databases where the system indicates a necessary upgrade, but in fact the database is already up to date. The new upgrade code is more tolerant and allows ECAS to start up instead of causing a fatal error. It is unknown when and why a database would reach such a state (in fact upgraded but still indicating an older version), but it happened at least one time, and it prevented ECAS from starting up again until the faulty database was removed.
Other changes in this version include a fix for a possible force close on slow devices, when a drawing operation (like scrolling) is still going on while the system wants to close the screen (due to app close or screen rotate). Not reproducible in simulation and most physical devices, but a small change was done based on the information from a crash report.
Since the new Android development tools from Google added some more performance related evaluations and warnings, a few changes were done to the drawing code based on these suggestions. They may lead to slightly better performance.
The wipe gesture to switch between meters was also adjusted slightly. It is now more sensitive and easier to use than in the previous version.
There are reports from phones where ECAS is started, the system calls the database upgrade method of ECAS and tells it to upgrade from version X to Y, but in fact, when ECAS tries to do this and add the required new columns to some tables in the database, an error occurs stating that the columns already exist.
This should actually not be possible and it is not reproducible in the simulation. If you have such an installation of ECAS, please locate the newest backup of the database and send it to me for analysis and repair. Once I get such a database, I can change the app to handle it.
A small feature upgrade, adding automatic overrun and underrun detection for bidirectional meters. It is now supported for a bidirectional meter to cross the zero line and go for example from 000000 to 999999 or vice versa.
Also note the new translation into Dutch, which was kindly provided by Gerard.
This release adds a new feature: Physical meters can now be defined to run in both directions, similar to virtual meters. Activating this option on the meter definition page will disable the automatic meter change detection and will instead provide a check box on the reading entry page to manually indicate a meter change. This feature is important for people operating solar panels without a separate meter for the panel. The combined meter will run backwards when there is more energy produced than consumed.
Note that it is currently not supported for bidirectional meters to wrap around (from 0 to 999999…).
There was a problem in 2.2.1 with the Y-axis scaling on the bar graph page, when the meter selection was changed. Please update to 2.2.2 to fix this. Also, the new version added a wipe effect when the user triggers the wipe gesture to switch between meters on the bar, table, or trend view.
NOTE: If your device does not support pinch-zoom, use the lower left and right corners of the graph area to zoom in and out (use the buttons to move the zoom near the desired range, then continue with the corners). Each tap on a corner will change the zoom setting by 50% of the current setting: [new] = [current] x 1.5 or 0.5 for example, rounded to days on the X-axis: 7, 10, 15, 23, 35, 53, …
A new version was uploaded to Android Market and will be available for upgrade shortly. This release fixes some small bugs and introduces a new feature, which allows to zoom in up to a resolution of one hour. It also adds a new language (Slovak) kindly provided by Silvo.
Note that there are no preset buttons for the highest (hourly) and lowest (quarterly) zoom settings. These settings are only reached by using pinch zoom or the new zoom function available in the lower right and left corner (touch the corner for the next zoom stepping).
A new verison is available in Android Market. It adds support for scaled/indirect meters without using a virtual meter. The new function allows a physical meter to pre-multiply all meter readings before display, and thereby distinguish between the units measured by the meter and the units shown in the statistics. This could be used for example to have a gas meter, where all readings are taken in m³, show all consumption values in kWh.
This release also fixes a minor problem which could cause the meter list to show an old reading as the current meter reading, when old readings were edited.
Yet another upload these days…
This version fixes the initial calculation of new virtual meters. They are now populated with data immediately following the addition of the meter.
Also note the new translation to Polish, provided via mail by Sławomir Soch. Thanks!
A new version was uploaded today. It fixes a possible force-close when using the new wipe gesture to flip through the available meters on the graph or statistics page. When the last meter in the list was reached, the app could force-close on Android 2.3.3 when trying to move on to the next meter (wipe up). Since older Android versions did not behave like this, the problem was initially not detected during the first release of this feature.
It is now becoming increasingly difficult to write apps which run fine on Android 2.1, 2.2, 2.3, 3.0, 3.1, 3.2, 4.0 and all of the minor versions inbetween. Google always changes internal behavior of the system and you never know how the next version will change things around again. As if this would not be bad enough, various hardware manufacturers feel like they need to add patches of their own to the system, thereby breaking things which are working in all Android versions from Google, but not on a specific device from a certain manufacturer. This is the worst part of Android and it seems like it is not going to improve in the near future.
Also note that the app is now available in italiano. Thanks to SDG who sent in a translated resource file by email to make this possible. The current italian resource file is available on the translation page of this website. Please use this version as a basis for future additions and enhancements.
A new version (2.1.3) is now available from the Android Market. This version fixes a major problem for users of new HTC Sensation 4G devices running the HTC-modified Android version 2.3.4.
HTC decided to patch the SQLite interface in this version such that any database the application opens will be set to the new write-ahead log mode. In this mode, new data is not written to the database file (as is usually the case with SQLite), but instead is appended to a separate file, the write-ahead log file. For further reading, you may want to visit the SQLite website.
This change has major implications when a backup of the database needs to be done. The usual, recommended way (as per the SQLite documentation) is to obtain an exclusive lock on the database, copy the database file, and release the lock. However, when the database is in write-ahead log mode, the application first needs to do a checkpoint of the database in order to transfer the records from the write-ahead log to the main database file.
According to the SQLite documentation, a new database connection always comes up in traditional rollback journal mode. Due to the patch HTC made on their new Android version, this is no longer true on these phones. The database comes up in write-ahead log mode, even though the application did not ask for it and does not know anything about it.
This broke the backup procedure of ECAS and will likely break database backups of many other apps as well. As a guard against this crazy HTC behavior, ECAS now uses a PRAGMA command to force the database to rollback journal mode explicitly. This mode is the desired mode anyways, since it has better read performance. The new write-ahead mode provides better write performance and better concurrency in case of many readers and writers on the same database, but it slows down read operations and needs special attention/check-pointing by the applicaiton.
Make sure to update your application if you own such a phone and need the backup function to work correctly!