This first GSoC coding period has been very productive!
The big part of the work has been focused into the program usability and aesthetics.
To report just some of the improvements done in this area the chat messages are now wrapped in beautyful bubbles, the contacts view has been refactored to show more info like the last message or if there is unread messages, the node details view has been redesigned to be more appealing, the contact details view show the avatar, and a more appealing menu is in progress (see screenshots at the end of the post).
For this implementation I needed to learn how to work with qml, how the RetroShare API works, to make calls and process the JSON API answers.
Also I have managed to create a simple chat informations cache, to store useful data that I use in the views without asking them via the API again and again. Another part of work done is about how to interact with the Android system. For example sending notifications from the QML application to the Android system, or getting the internet connection status and details from the Android system.
The most difficult part has been grasping, how to call QML code from Android Java and vice versa. I have been learning JNI (Java Native Interface) and Qt on Android multithreading model now I am capable to call Java code from Qml and vice versa. In one direction you call java functions form QML, always througth C++, in the other direction, you call a QML functions from Java, also via C++. The trickiness is not only limited to the fact that the comunication must be intermediated by C++, the fact that the QML code and the Java code run in indipendent threads is to be taken in account too, hopefully Qt provide some functions that make thing seamless in most of the cases.
Finally, I have achieved to create Android notifications and get the connection status on Android devices. This second will be very usefull to decide how the core should behave, for example, if we have only 3G connection, is probably better to not forward the Retroshare GXS tunels and save your download quota. Instead, if you have a fast wifi connection, the Retroshare core can work at full capacity and contribute to Retroshare network.
In the following month, I’m going to work testing the usability improvements in Android device because this branches have been developed and tested mostly in desktop enviorment. This is posible thanks to the Qt multiplatform system: running the Android service on desktop to start the Retroshare core and then run the QML-app is almost the same as doing it on a smartphone.
Another direction of work for next period is to improve the comunication with the Android system. Taking advantage of the posibility to call Android Java code we can improve the app behavior in many cases (I have explained just a few of them above).
As always I push the code daily on my gitlab mirror
4 thoughts on “GSoC 2017 – RetroShare mobile improvements – First evaluation update”
Hi! This looks fascinating. How close is it to implementation and release? This would be a game-changer.
Thanks for appreciating the hard work 🙂
What you see in screenshots and what i say in the posts is already implemented and working, about preparing “official” releases I believe it goes beyond of the scope of this GSoC, but one of my mentors sporadically publish APK built from my code on this retroshare channel
it looks really nice and appealing.
Is there a chance to provide an alpha version? To the community and some instructions how to create a User-Id or copy the user-id to the android device. so to say some bootstrap and possibly some compile instructions.
it’s too appealing to not wanting to test and try it out, no matter of the state and possible bugs.
if it’s planned for a later state, it’s also ok for me to work. but having something to testing, would be cool. i guess it’s not the best idea now, so you do not need to interact with outside comments how to do it.
thanks for the great work 🙂
Thanks for appreciating the hard work 🙂
The app has already everything needed to create an user Id, no need to copy it from another device, the compiling instruction are in the code in the file README-Android.asciidoc, in the current state I believe it is ok for people interested in developing the App to try it, but many bug reports would slow down the development.
By the way one of my mentors sporadically compile my code and publish android packages on a retroshare channel