Hi,
in the last weeks I was working on the storing and uploading part.
1.Storer:  I decided for a standard database sqlite.The reason is that it is structured and easy to maintain. Also I remove all duplicate of data entries by making bssid as primary key in sqlite. An entry is only updated if the rssid is bigger. Room lib is used to make the access of sqlite simple. In order to store the access point in the database, I implemented a seperated thread, which reads data from a blocking queue and saves it in the database, which works parallel with the scan thread and will be interrupted if there is nothing in the queue to store. Also to save energy and not force the store thread to run the whole time, a list of access points will be put into the blocking queue as an element.
2.Uploader: uploading can only be processed if number of access points > 250. Before starting uploading, all unsaved access points will be saved, store thread will be interrupted to ensure no conflict occur if 2 threads try to access database. Also the uploader will read maximum a number of data entries(5000) from the database and upload it, not the whole database but every 5000,  in order to pretend out-of-memory problem at device with small ram. User bssid is as before created by random secure and is used for uploading.
As next, I will implement all the setting option, as well as resource optimization.
I leave here a .apk file if you want to try it yourself.
https://www.dropbox.com/s/ytbqevax9wgkw1w/app-release.apk?dl=0
The source is hosted in https://github.com/openwifi-su/OpenWLANMap-App 
Any comment, feedback, question is always welcomed.
Regards,
Lilli