-
Notifications
You must be signed in to change notification settings - Fork 1
Report week 4
This week, I completed one of my two tasks.
I updated the compass to get more stability. We are now using the TYPE_ROTATION_VECTOR to get the heading for the compass. The TYPE_ROTATION_VECTOR combines different sensors to get the best values, this increasing a lot the stability and also resolving the gimbal lock that we had when the phone was in portrait mode. Also, the compass UI was updated to better adapt to different screen sizes. To read the documentation about the different sensors and to try then out on Android took me way longer then expected.
For the second task that I did not managed to finish, which was to display the mountain data, I calculated the field of view of the camera so that the compass displays the direction that the user can see and displayed a marker on the camera preview which will later represent a mountain.
My time estimates for the tasks are still quite off. This is something that I will need to improve.
Implemented the methods to store/retrieve/synchronize the user score to/from/with the database. The same type of methods has been implemented to get and set the country highest peaks that the user has discovered. The writing to the database is made through a cache to speedup the computing time the next time a peak is discovered. I also wrote the testing suite for those database methods. I added a new activity and set it as startup activity. The purpose of this activity is to pre-load all the usefull information (user stats/info and in the fututre to pre-load POIs arround user) before the user can see the main menu. This workload corresponds to one task I was assigned for. The time I took to complete this has exceeded the 8h and I therefore had no time to complete my second task. Nevertheless I thought about the implementation of this second task because it could lead to an important time consumption if it's not well designed.
This week, I was able to finish all the tasks I had. I integrated the rankings UI with the actual accounts from the DB. Moreover, I tested as much as I could the sign-in activity and only the connection with Google/Firebase servers is not tested (as, of course, should not have problems).
Also, I added a check validation method for the change username feature, limiting the size of the nickname and the usable characters.
At the end of the sprint, I spent quite some time fixing some old tests and I reworked a bit the synchronization method (and now the problems with the tests should not happen again).
Next weeks, I will try to put more effort into making stable and unfailing tests.
Implemented dynamic loading of collected items and implemented so they sen on information to the next activity. I thought it would be easy since I had done a very similar implementation the week before, but with ranking. However I had some issues with adding margin in the correct way which took alot of googling to find the issue. After that the implementation went smoothly, however I did not think about the review time when I approximated the implementation time and was off by one our. Next week I will also take that into account. Implemented a new activity called Gallery and added button from main menu. This implementation was very straight forward. I hadn't done that in the first week since there was some miscommunication regarding if we were going to have a Gallery or not. However the whole team has had some issues regarding tests in the end of the week which also made this implementation late. Therefore the actual time was off by 1H (3H total), when the actual implementation/tests only took about 1H. I am not sure if there is a lesson to be learned regarding that issue.
I implemented the ElevationMap class. The class handles the downloading and creation of a map representing the elevation of the terrain surrounding the user. I initially thought of developing this solution by downloading a .GeoTiff image and parsing it to obtain information about the terrain elevation (this seems to be the most common image format used for this kind of application). After many attempts with different libraries (Glide, Picasso, DownloadManager etc) I found that the best solution was to download the data as .AIIGrid and to transform it into a matrix of int[][] (the int represents the elevation in meters of the terrain).
In the next sprint, I will compute the line of sight of the user. I will also consider making the downloading asynchronous as at the moment it is very slow.
This week we implemented some new features but also improved some of the old ones.
We struggled a bit with Cirrus as some tests do fail from time to time, but now the situation should be improved. However, in the next weeks, we should pay more attention to make stable and solid tests.
Moreover, we finally got rid of the .idea folder and fixed the .gitignore file so that .idea folder will be ignored from now on.
Finally, despite the great number of API-involving features we have, we managed to keep a high code coverage and we expect to increase it even more in the next weeks.