Design change

I have finished removing the redundant features from the Android app, and eliminated the use of external storage. But it needs Google Drive to be viable, so it will be included in version 7.0.0.

I will be adding Drive support to the SD Card module, and changing the name to Files. The menu will be as follows:

  • Database
    • Save
    • Upload
    • Download
    • Restore
  • Images
    • Download
    • Create Thumbnails

The functions in italics are new.

Unbelievably slow emulator

I tried to test my new app on a Pixel XL emulator, running on a PC with fairly modest specs. But it was so slow that it was unusable. It was also illegible, but I did not really get that far.

I was not going to order my new phone until my birthday, but the Amazon website jumped the gun last night. I am glad it did. I also have a Fire 7 tablet that I could use at a pinch, but I think I will wait.

Updating the iOS client

The iOS client needs updating on similar lines to the Android client, viz:

  • Some features need to be withdrawn
  • Other features need to be added
  • Ideally I also need to replace my iPhone 5S.

Going forward, there are other issues:

  • It needs a navigation drawer
  • It is written in Objective-C

Swift is now the preferred development language for iOS, and Objective-C is effectively deprecated. That limits future developments. Any navigation drawer would have to be hand coded.

New Android test device

I am reluctantly retiring my 8 year old Nexus 4, and will soon be the proud owner of a Moto G9 Play. This will allow me to test the forthcoming Android releases.

I am also hoping that by eliminating external storage, version 7.1.0 will fully support Chromebooks. This would be great because:

  • I am a huge fan of Chromebooks
  • They always run the latest version of Android
  • They are great for running the Sales Manager

New Android releases

Version 7.0.0 will be a clean up release, which removes a number of features that looked nice, but which turned out to be not so good in practice. These include:

  • Barcode scanning using the camera on a mobile phone.
  • Printing invoices directly to a wi-fi printer.
  • Maps and location services.

Version 7.1.0 will add the following features:

  • Replacing external storage with Google Drive.
  • Supporting additional email providers Outlook and Yahoo.

Storage updates in Android 11

Scoped Storage

Android 11 changes the security model for external storage, by enforcing scoped storage. The Android client app still targets Android 10, and for the time being it can opt out of scoped storage by setting a flag in the manifest. Version 6.3.7 is the first release that does this.

But this is only a temporary fix. Eventually I will be forced target Android 11, at which point the app will no longer be able to access the existing Vanguard directory.

Bottom Line

  1. In the long run, external storage is dead.
  2. The logical replacement is Google Drive.

Google should be honest with developers and tell us this upfront, instead of obfuscating everything, and leaving us to work it all out for ourselves.

Google Drive

If you use the Chrome browser, then you already have a Google Play account, and should seriously think about using Google Drive anyway. In a nutshell, the Vanguard directory in external storage will be replaced by a folder in Google Drive.

Sending Invoices

One of the key features of the Sales Manager is the ability to email invoices back to head office. This uses a package called JavaMail, which has been ported from standard Java to Android. It allows mail to be sent via any SMTP server, not just the one used by Gmail.

Originally the Android client allowed the user to use any email account, when sending invoices. This meant that he had to specify the address of the SMTP server, but unfortunately most users do not know what this was. Mail services will usually tell you what the address of their POP3 server is, but this is not the same thing.

I got so many support requests about this that I decided to restrict the feature to Gmail accounts. The problem with this was that Google got very shirty about emails being sent autonomously. So I started to get support requests about this, and the error messages being returned by JavaMail did not help.

To resolve this, I plan to allow invoices to be sent from Outlook and Yahoo accounts, and possibly other mail services as well. But I doubt that I will return to the free for all that I allowed in the past.