[Android] All Apps have been upgraded to be Android 15 compatible

In the previous post, we mentioned that Android 15 (SDK Level 35) includes some changes.

One of these changes is that the Edge-to-Edge layout is now enforced by default.

Because of this change, some parts of the original layout, especially the areas displaying numbers, are shifted upwards, making them invisible on the main screen.

The solution has already been applied to all released apps, including the Travel Calculator, and they have all been updated on Google Play.

For those using Android 15, you can update to the latest version to avoid this issue.

Enlarged Calculator Button Fonts

Another part of this update includes increasing the font size of the number buttons in the calculator series, along with adjustments to button fonts on tablets so they scale accordingly.

On phones with higher resolutions, the enlarged number buttons appear clearer after the update.

However, after the release, we received feedback that the increased font size might actually hinder usability.

We are already working on addressing this issue.

Currently, the plan is to add a setting in the general settings screen, allowing users to adjust the size of the number buttons.

Users will be able to drag to select their preferred font size, and once confirmed, the system will remember the chosen size for both the current session and future app launches.

This way, more users can find a size that suits them, and it will also be more accessible for older users.

This update is expected to be released next month. We’ve completed about half of the work, and once we wrap up the remaining part, testing will begin.

Summary

This update primarily addresses the layout issues in Android 15 and adjusts the button font sizes.

We hope that the Travel Calculator and related apps can continue to accompany you on your journeys and currency conversion needs.

Android 15 Alert: Calculator App Layout Issues to be Resolved Shortly

As of Android version 15 (SDK 35), Google has made it mandatory for all apps to adopt what is called an “Edge to Edge” display style.

To put it simply, from now on, all Android apps will be designed to occupy the full screen, including the status bar and navigation bar at the bottom. This feature was previously optional, allowing developers to choose whether or not to implement it in their app. However, with the release of Android 15, this has become a requirement, resulting in some layouts becoming distorted, making certain elements inaccessible.

Fortunately, we have identified a solution to this issue and are currently conducting final tests to ensure that all versions are compatible. We anticipate completing these updates within the next couple of days.

If you’re one of our users who recently upgraded to an Android 15 device, please be patient as you may notice issues with our calculator app’s layout. Rest assured that we will have a fix in place shortly.

In retrospect, I should have kept pace better with the latest developments, and for that, I apologize. Unfortunately, with too many technologies to keep up with and not enough time on my hands, some compromises had to be made.

To summarize: the issues with display irregularities on Android 15 and above will be resolved within the next couple of days.

Thank you all for your understanding and continued support.

[Android] Android Calculator Series – Division by Zero Crash Issue Resolved

Android Calculator Series – Division by Zero Crash Issue Resolved

Affected Versions

The following versions were affected by the division by zero crash issue:

Travel Calculator – V1.8.5
CyCalc – V1.3.11
TW Exchange Calc – V1.0.8
To check your current version, open the app’s menu and go to the “About” dialog, where the version number is displayed.

Solution

The issue has been fixed by blocking any division by zero operation. The value will now remain as 0.

After considering various options, we opted for the simplest solution to avoid introducing any new complications.

Updated Versions

The updated versions with the fix are:

Travel Calculator – V1.8.6
CyCalc – V1.3.12
TW Exchange Calc – V1.0.9
Once you update to these versions, the division by zero crash will no longer occur.

Currently, Travel Calculator has been rolled out in 100% progress. All users can update to V1.8.6 by now.

The other apps have already been fully released, so if you have automatic updates enabled, you should already have the latest version.

Future Updates

Moving forward, Android updates will be scheduled twice a year, around January and July, coinciding with winter and summer breaks.

There won’t be any major changes—just minor bug fixes and updates to the latest Google SDKs before releasing them.

If similar issues arise due to updates from Google, we’ll handle them in a similar manner—quickly identifying the problem and releasing a fix.

Thank you for your continued support. As long as I’m around, these apps will stay up-to-date with Google’s SDK, making currency conversion during travel less of a hassle.

Wishing you safe and enjoyable travels!

[Android] Calculator type app will encounter divide by 0 error

Incident

In this update, we introduced a new solution to resolve the decimal point issue.

This solution allows all calculations to be handled in decimal, ensuring precise representation of decimal points.

However, the previous safeguard that prevented the app from crashing when dividing by zero no longer works.

So, for the Android calculator series, if you press any number, then the division sign, and then 0—bingo! The app will immediately shut down.

Planned Fix

We have identified the problematic code and have already fixed it.

Even if someone tries to intentionally cause a crash by dividing by zero, the app will no longer crash. However, we are still deciding how to handle the display part.

In mathematics, dividing by zero results in infinity, or it’s considered undefined.

The usual approach is to display “NaN,” meaning “Not a Number,” but that might be confusing for users. Currently, we are considering keeping the value as 0, though this would not align with the mathematical principle.

One possible approach is to display a short message informing the user that division by zero does not produce a valid result. However, this would require modifying more code, which could affect other parts of the app. Therefore, we might hold off on this update for now.

Expected Update Schedule

The code has been fixed, but before releasing the new version, we’ll collect error reports for a day or two to ensure there are no other issues. Once resolved, we’ll push out an update.

Tentatively, we plan to release the new version on August 18, 2024. Until then, please be careful not to use division by zero in the Travel Calculator, as it will cause the app to immediately crash—vanish without a trace.

This Is My Fault

So, if you want to blame someone, blame me.

I won’t hide from this responsibility.

Just please be gentle with the criticism.

[Android] The Travel Calculator V1.8.5 Crash Issue on Android 14 Has Been Fixed

Cause

Due to the latest policy requirements from Google, we needed to release an updated version.

The app itself didn’t undergo significant changes; we simply recompiled it using the latest version of Google’s Android libraries and updated the version number.

But, as we all know, the most important part of life is that “But.” This time, Google’s own library caused the issue.

In a place where our code shouldn’t have been blocked, an unexpected event was triggered that terminated the normal code execution.

This issue only occurs on Android 14 (Tiramisu) and above. Versions below Android 13 are not affected.

Solution

After identifying the issue, we simply removed the problematic code.

If we were to follow the proper solution, we would need to raise the minimum supported version to SDK Level 33, which is Android 13. However, that would render many users’ phones, including mine, incompatible.

So, between two undesirable options, we chose the lesser evil and removed the problematic code. This won’t impact the overall functionality.

New Version

The new version, which has been fixed, is already available. The version name remains V1.8.5, but it’s now based on a version that doesn’t have this issue.

So, if you’ve encountered a crash right after opening the app, please update again, and the issue should be resolved.

Although we’ve been “once again” let down by Google, it’s still our app’s issue, and we sincerely apologize to everyone. (Why did I say “again”?)

A Few Thoughts

In my opinion, there’s no need to make significant changes to a stable app, especially one that needs to be consistently reliable, like this one that’s often used while traveling. Any bugs introduced by changes can lead to disaster.

I’ve always believed in the philosophy of the Tatung rice cooker: as long as it can cook rice, it’s a good rice cooker.

But our great Google seems to feel uneasy unless they give developers something to do. Every now and then, they introduce policy changes, and we have to upgrade our API Level accordingly, or else we’ll be blocked from future updates.

This forces us to update every so often. If Google’s own software hasn’t been rigorously tested, issues like this can arise.

Users don’t know whose fault it is, so they just blame the app developers.

And we can only accept that.

That’s why I can never sleep well the night after releasing an update, fearing a flood of crash reports, only to find out that, once again, it’s Google’s fault.

Thank you for your understanding. The new version is up, and we wish you a pleasant trip!

[iOS] TravelCalc iPad crash problem has been resolved in V1.1.1

After some efforts on code change, the crash problem of TravelCalc V1.1 on iPad has been resolved. Apple has approved the submission of patched version to app store in short time (Thanks to Apple reviewers). Now users can download this version to fix the problem.

The root cause of this problem is code fragments added for support to “Dark Mode”. To control the change of “Dark Mode” and “Light Mode” colors, I have to find some place in application initialization to insert related control flows.

However, when iPad executed these code fragments, something just went wrong in initialization process. A component of calculator will encounter problems and fail to pass the initialization.

After this patch, the problem has been fixed. I just suggest all iPad users to upgrade to this version, V1.1.1. iPhone users could use V1.1 as well, but still recommend to upgrade to use V1.1.1.

Meanwhile, V1.1.1 also added two new options to control TAX/TIP cyclic calculation and tax refund calculation formula. Users could get more flexibility for TAX/TIP calculation with version 1.1.1.

Sorry again for any inconvenience that may cause of V1.1 update. I’ll take more care on code fragments change with future updates.

Still during this world-wide pandemic, may the HEALTH be with you. Keep healthy until we could travel around the world again!

Cheers!

[Urgent] iOS TravelCalc V1.1 on iPad may encounter Crash in Landscape mode

Photo by Seb Mooze on Unsplash

The iOS TravelCalc has had an update with version V1.1 recently. I’ll prepare another article to describe the details about this update. Today I’d like to focus on the crash problem of this version on iPad in landscape mode.

What happened?

From the analysis data been received by now, there has been over 20 users affected by this issue. The symptom is crash after launch of TravelCalc on iPad under landscape mode. This issue will affect all iPads with iOS 13.0 and up.

The root cause of this issue is some code fragments changed for supporting “Dark Mode” after iOS 13. When use change the appearance mode, TravelCalc should change its own display mode and set the correct color code to each related component. To accomplish this, some new code fragments should be added to a rarely used event location. Under landscape mode of iPad, this action will make a component in TravelCalc disappear and appear again after the change of appearance mode . During this period any attempt to co-work with this component will lead to CRASH.

How to resolve it?

To solve this issue, an updated version of TravelCalc with version number V1.1.1 will be submitted to Apple for review. Once approved, users will be able to update to this version and cease this problem. The planned schedule for this patch will be within this week, before 6/20, 2020.

There is a workaround of this issue before the patched version. You may set iPad in “Portrait Mode” before launching TravelCalc. The App will lock the direction of screen into Portrait Mode after successful launch.

Final words

Sorry for any inconvenience that may cause to iPad users. The patch is on the way. I’ll send it to Apple for review once the package is ready.

May peace and all blessings be with you during this worldwide pandemic.

iOS TravelCalc, customized rates exchange calculator: https://itunes.apple.com/us/app/travelcalc/id981048257

react-native crypto-js aes decrypt problem and solution

Photo by Hédi Benyounes on Unsplash

CryptoJS is a popular encrypt/decrypt library used by JS community. However, the latest version 4.x.x just can’t be used on react-native. It will need native crypto library as base. Since react-native doesn’t have the native crypto library supported by now, it’s not so easy to get it working on react native platform.

For my project on-going, I need the AES encrypt/decrypt part to work on react native. It will be very useful if CryptoJS could work on it.

While searching the solution to this problem, react-native-crypto-js library has jumped into my sight. From the github repo shown, this library just packaged the crypto-js v3.1.2 from source and register it into npm registry. After some testing, I found it can’t decrypt my encrypted source correctly. The final decrypted result will always stop at some ending point before the real end. Around 10-20 bytes are cut out after decryption.

Then I try to go back to crypto-js github to see the version tag. Fortunately, there still exists version 3.1.x and be registered in npm. For now it’s version 3.1.8. Version 4.x have breaking changes and version 3.x still keep the original source level dependency for encryption/decryption.

As a result, I then tried to install version 3.1.8 to react-native project. And it really worked. The original crypto-js code can work perfectly on react-native project. No more native crypto library dependency required.

If you have the same problems on react-native crypto-js support, try to install version 3.1.x to your project. Simple encryption/decryption will be ready to work.

Happy Coding!

[Android] Currency Calc V1.3.7 Crash Problem

Currency Calc has just been updated to version 1.3.7. However, after this update, some users encountered fatal problem when launching the app. The app will crash immediately.

After studying the logs from crash, this problem was led by an update of third party library to parse json data. This latest version library will fail to load when running on Android version lower than 8.0 (API level 26). Android version larger than 8.0 will not have this crashing problem.

Now that root cause of this problem has been identified, I just built another version of V1.3.7 and publish it to Google Play Store. After the publishing work by Google Play, you may download and upgrade to stable version of Currency Calc.

I feel deep sorry about this update and apologize for any inconvenience that may cause.

Next time the third party library update will be further considered more carefully to prevent such case happened again.

Thanks for your support and patience. Any other problems/questions, please drop me a mail: ericlin@tomosware.com .

Site has been upgraded to https

Following the trend of internet world, the site “en.tomosware.com” has improved its security level to SSL with https as default protocol supported.

This move consumes a little bit efforts on settings of backend http server and certificates maintenance. Thanks to LetsEncrypt for supporting so many facilities to enable this security improvement of the site. Truly, if there were no LetsEncrypt, there will be no security enhancement to the site since it will cost a lot to have a signed certificate.

Now the whole site has been secured. All contents are involved in. You will see the Green lock in Firefox or a comfortable lock symbol with Chrome or other browser. If not, please tell me to correct that error.

As a result, we are all in a safer world now. 🙂

Cheers!