28 April 2009
27 April 2009
I have published an experimental release of Expense Report that has file exporting feature. Now you can export your expenses to a file on your memory card so that you can transfer the data to your PC. Why don't you try this release?
15 February 2009
Expense Report version 0.5.2 is now ready to download. This version newly supports German, Korean, and UK English user interfaces as well as International English, Japanese, Simplified Chinese, and Traditional Chinese.
This version also corrects a defect of handling currency code. Please upgrade your installation.
18 December 2008
The more I have used the Expense Report application and have added expenses, the longer Sony Ericsson W890i has taken to show the main screen. Although I suppose it, it is slower than expectation. W890i takes 7 seconds to display 50 expense items while Nokia E51 takes 3 seconds. The user can feel like being kept waiting so long if the duration exceeds 5 seconds. Furthermore, because I have not optimised the implementation, the main screen will be instantiated every time the user goes back to it. It means that the user has to wait very long time for the main screen after any operation.
Which part really took so long time? I have measured profiling data so that I could find out the bottleneck in the main screen.
15 December 2008
As a small change in Expense Report version 0.5.1, I have revised soft key labels so that even small screen handsets can display them without truncation.
In the market, there are still many mobile phones with small screens like 220x176 pixels, 2 inches diagonal. Six Latin letters or two Far-Eastern letters are typically suitable for soft key labels so that such small screen can properly display them. Again, this is just a typical case because Latin letters are usually shown with proportional fonts, which means that the width of letters differ from one to another.
In MIDP-2.x, command labels can have two forms: one is short form for soft key labels on the bottom of the screen, the other is long form for command menu screen. I also have added long labels so that MIDP-2.x devices can display more self-contained labels.
12 December 2008
CMD-J70 from Sony was the first GSM mobile phone that I bought in Europe. The ecosystem of GSM was very much interesting to me. In Japan, there was no GSM service offered. In contrast with GSM world, every single handset was tightly coupled with each contract. You could not use your handset if you moved from an operator to the next one, because, all mobile phones were designed for a specific operator.
Besides reorganisation of the internal state management, I also modified the following during development of Expense Report version 0.5.0:
- The user can select the language when the application is invoked for the first time.
- The user can delete two or more expenses at the same time.
- From the version information screen, the user can launch web browser and connect the application's web site so that the user can learn the latest information of the application. (This works only for MIDP-2.x handsets.)
Until Expense Report version 0.4.2, the application's default language depended on the mobile phone's language setting. While the language for labels on the screen can be changed after the first invocation, the language for preset data such as expense type names cannot be changed. This means that the user needed to set the language of the handset properly before he/she attempted to install Expense Report. Version 0.5.0 onwards ask the user which language is preferable when the application is first time invoked. Preset data will be initialised in accordance with the user’s language selection.
Secondly, I added a new screen so that the user can delete two or more expenses at the same time on. By this feature, the user can delete all expenses with preserving preference settings. By pressing “Mark multiple expenses” command on the main screen, the application goes to the screen that has check boxes attached to each expense. The user can press “Mark all expenses” command and subsequently “Delete selected expenses” command, so that selected expenses will be deleted. Because the type of instantiated List object cannot get altered, MULTIPLE type List is prepared for this purpose in addition to the IMPLICIT type one that is used for the main screen.
Version information screen was prepared separately for MIDP-1.0 and MIDP-2.x. The first one relies on Alert while the other does on Form. The latter has a link to the application's web site and it can launch the web browser by calling MIDlet.platformRequest() method. Usually it connects the English web page, but it connects the Japanese one if the application's language is set to Japanese.
11 December 2008
After releasing Expense Report version 0.4.2, I decided to reorganise the internal state management. Because, the following two major functionalities remained to be added, which expected to be so complicated that implementation could get much confused:
- Synchronisation between mobile phones.
- Exporting data for PC software.
Both required asynchronous I/O, and did the users many steps to operate. I needed to prepare for mechanism that could afford adding such complicated features.
Previously, pressing command buttons by the user only triggered state transition. Therefore, all state transition occurred inside CommandListener.commandAction() method. Since asynchronous operations were going to be introduced, I decided to reorganise the internal state management. Finally, I got a huge switch-case block, which looked as if it was a window procedure in Windows programming. It must be later split into several pieces, or be replaced with table-driven state machine, or I have to rewrite it by using the State design pattern.
02 December 2008
They say that Java ME has been fragmented due to proprietary extensions by manufactures and network operators. In reality, not only proprietary extensions but also MIDP, which should be a baseline, has been fragmented. This article describes an example that I have experienced with List class in Expense Report project.
I defined DataBountList class that extends List, which is for displaying expense summary. While List has string labels and icons for each item, DataBoundList additionally has arbitrary objects bound to items. In the case of Expense Report, each item is bound to an object that represents each expense.
29 November 2008
Half a year had passed since the first release of Expense Report. I resumed development work from the beginning of summer 2008.
The trigger was Sony Ericsson W890i that I bought then. The one I chose was Hong Kong version so it could display Japanese letters. It unexpectedly supported Simplified Chinese locale as well as Traditional Chinese whereas Hong Kong version of K600i, which I bought in 2005, did only Traditional. I felt that time flew.
Anyway, since the mobile phone supported Simplified Chinese, I wanted to have my application fit it. Thus, I decided to add Simplified Chinese resources to Expense Report. In addition, I imported some portion of Korean resources such as soft key labels from another project that intensively supported Korean language.
I have published Expense Report version 0.4.2 at the beginning of September 2008. It also had a MIDlet icon and expanded record store usage up to 20 kilobytes.