VikiGid - Android Encyclopedia of Sights of Ukraine
In June, with the support of HTC, a competition among Android application developers was held in Ukraine, in which I participated. I want to tell you about the application that I submitted for the contest, about how it was created and about the problems of the Android platform that I encountered.
First, a brief description of the program: Encyclopedia of attractions from all over Ukraine.Detailed information from Wikipedia in Russian and Ukrainian.Photos, videos and reviews from other users.Travel diary and integration with social networks.
For those who do not yet have an Android phone, I made a video review of the application under the cut. ')
Idea
I really like to travel around Ukraine and discover new places for myself, so when I learned about the competition, the idea came by itself. Make an application that answers two main questions that you ask yourself in an unfamiliar city: “where to go?” And “what is this place?” .
After carefully reading (in Ukrainian) the rules of the competition and the criteria for evaluating programs, I realized that the chosen topic fits perfectly: the benefits for the Ukrainian market are obvious and it will be very appropriate to use the “Android platform technologies” - the camera and GPS.
Initially, it was stated that applications for the competition are accepted until June 10. There was little time, so I decided to confine myself to the sights of the Crimea . Later, the competition was extended until the end of June, and this allowed to add to the database of the program a lot of interesting places from all over Ukraine.
In the previous paragraph, the link to Wikipedia is no accident. Having studied this wonderful encyclopedia a little, I found a lot of new interesting facts even about those places that I visited with a guide. Solved: show for each sights article from Wikipedia. Moreover, Wikipedia has a mobile version , which looks great in the Android browser.
Since it so happened that in the Juick microblogging service, which I also do, there is geolocation and photo / video support, I decided to make the social functions of the application based on the Juick API. Specifically for WikiGuide, a JSON version of the API was added (currently closed to third-party developers). Also, thanks to the use of Juick, the program automatically appeared integration with Facebook and Twitter.
Development
I already had development experience in Java in general and for Android in particular, so there were no particular problems. However, some difficulties were.
The first difficulty encountered was the almost complete lack of ready-made graphics for Android and a very meager set of system icons. The platform has quite specific requirements , so it’s not possible to get any free icons set. And drawn with the account of Android UI Guidelines - can be counted on the fingers of one hand. You have to draw everything yourself. From this comes difficulty number two.
I work in Linux, the application was developed in the usual NetBeans for me. The official Linux Android SDK works fine and does not cause any complaints, there is not the slightest need to install any other OS. But it concerns only programming. In the UI Guideliness, to which I gave the link above, discrimination has already begun for designers: all templates and examples are in PSD format, settings and screenshots from the manual are for Adobe Photoshop only. Of course, for the sake of a couple of Windows and Photoshop icons, or I had no desire to suffer from QEMU / Wine, so I tried to use GIMP to apply the effects specified in the settings. An unpleasant surprise awaited me: for GIMP, I found only one plugin implementing “Inner shadow” and “Inner bevel”, and this plugin refused to make bevel with size: 0. I specify the details in case someone came across and found a solution. I also had to leave the icons without this effect.
The main problem for me was the need to have a phone to test the application. If it is quite possible to check simple programs using only an emulator, then in my case (using the camera and GPS), it was the phone that I did not need. :) And even better several different devices. For example, I ran into an Android camera bug , which depends not only on the phone model, but also on the firmware version.
In general, the Android platform makes a good impression, despite the fact that in some places the functional is still lame and there are some flaws. For example, the implementation of the Base64 algorithm appeared only in version 2.2, but it is not yet possible to use it because of a too large percentage of devices with old firmware versions.
In conclusion, I want to share an interesting solution on which the function of automatic updating of the program base is based. In my case, all I needed was to know if there were any changes in the database since the last check or not. Therefore, I used the standard HTTP protocol functionality: the “Last-Modified” headers in the response and “If-Modified-Since” in the request. You remember the date of the last modification of the file and, when checking it, indicate it to the server. If there are changes, the server will give you the entire file, if not, only the code 302. Due to this, the server does not need any scripts, and the database can be uploaded as a regular static file on absolutely any hosting.
Program page on the contest website: WikiGuide - you can leave a comment, tell your impressions of the program. The organizers promise to post the results of the competition no later than July 11, we will wait. :)