The Bucharest University of Economic Studies [617755]

The Bucharest University of Economic Studies  
The Faculty of Economic Cybernetics, Statistics and Informatics  
Domain: Economic Informatics  
B ACHELOR T HESIS  

Coordinating teacher: Graduate:  
Assoc. Prof. Mihai DOINEA, PhD. Diana-Georgiana Șică  
 
Bucharest  
2020

The Bucharest University of Economic Studies  
The Faculty of Economic Cybernetics, Statistics and Informatics  
Domain: Economic Informatics  
S MART T RAVEL D IARY A NDROID  
A PPLICATION  

Coordinating teacher: Graduate:  
Assoc. Prof. Mihai DOINEA, PhD. Diana-Georgiana Șică  
Bucharest  
2020

Declaration regarding the originality of the content and  
assumption of responsibility  

By the following, I declare that the results presented in the thesis are entirely the  
result of my own creation with the exception of the cases where there are references to  
other authors. I confirm the fact that any material used from other sources (magazines,  
books, articles and websites) are evidently referred to in the thesis and are listed in the  
Bibliography section.

Contents  
Introduction 1  
Paper structure 3  
Travel Diary: “Do not allow me to forget” 3  
Creating lasting and detailed memories 4  
Getting the most out of travels 6  
Would I use this app myself? 6  
I don’t remember doing that! 7  
Learn. Discover. Create 7  
Travel. Better. Faster. Stronger 8  
Recall. Maintain. Relive 8  
Technically “memorable” 9  
The endless search for Wi-Fi 9  
Kotlin, Kotlin everywhere! 10  
Used Technologies 11  
Android Operating System 11  
Kotlin 11  
What is Kotlin? 11  
What are some of the advantages of Kotlin over Java? 11  
Higher-Order Functions 11  
Lambda Expressions 11  
Extension Functions 12  
Android Studio 12  
Android Jetpack 12  
Android Foundation Components 12  
Android KTX 12  
Android Architecture Components 13  
Data Binding 14  
ViewModel 14  
LiveData 14  
Navigation 15  
Room 15  
Android UI Components 15

RecyclerView 16  
CardView 17  
Places SDK for Android 17  
API overview 17  
Autocomplete widget 17  
Solution Architecture 18  
General description of the mobile information system 18  
Smart Travel Diary Android Application 18  
Specification of requirements 18  
General use-case diagram 18  
Bibliography 21

SMART TRAVEL DIARY ANDROID APPLICATION    

Introduction  
Mankind has always been driven by curiosity in all aspects of life. The epistemic  
curiosity – the love of knowledge and desire to learn new things – has made us yearn to  
discover what lies beyond our surroundings, to test our boundaries and seek novel  
experiences. As we developed technologies, we could benefit from them to travel farther,  
faster, more comfortable. Nowadays, we’re looking for security, but the drive is still there –  
the curiosity of what lies beyond our reach. This paradoxical need for both novelty and  
stability is where travelling in today’s age has led to more self-fulfilled lives and the creation  
of an entire industry: tourism.  
Travelling is an enormous source of adventure, sensory phenomena, information  
ranging from cultural experiences to geographical marvels, a plethora of feelings, and a  
complex tool of self-discovery. The memories we build while travelling shape our  
personality [1] and our understanding of the world around and within us, enhance our  
creativity, help us create connections, patterns, and predictions which might guide us  
towards a better future.  
But even though we assign more significance and attention to our travel  
experiences than we regularly do, we tend to forget a lot as time goes on, and eventually  
we might catch ourselves having crucial parts of our journeys simply vanished from our  
memories. Certainly, we remember having gone to a certain place, but the details are often  
lost – we don’t even know what we don’t remember anymore. Human memory is  
susceptible to distortions and it is widely recognized that there cannot be an exact  
reproduction of past experiences but is instead an imperfect process that is prone to  
fallacy [2] , according to one study called Memory distortion: an adaptive perspective .  
Generally, we can help ourselves remember more efficiently by involving multiple  
senses and correlating multiple sources of information, such as text, images, and crossing  
items off a planned list. It has been shown that the working memory is multisensory [3] ,  
and thus we should keep that into focus.  
“Writing extends your memory, facilitates editing and clarifies your thinking. You can  
write down more than you can easily remember.” – Dr. Jordan Peterson [4]  
According to Wikipedia, a diary is a record (originally in handwritten format) with  
discrete entries arranged by date reporting on what has happened over the course of a day  
or other period [5] . There are many forms of diaries – from personal diary, to food diary,  
war diary or travel diary, and all have the purpose of recording data.  
With the popularization of mobile apps, diary or journaling apps have become  
available for iOS and Android. The primary reasons for journaling with digital applications  
are:  
●Ease and speed of typing;  
●Mobile portability;  
●Search capabilities;  
●Entry location and date;  
 
   
DIANA-GEORGIANA ȘICĂ   1

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
●Other metadata natively available from mobile phones.  
The Travel Companion mobile application has been designed to serve the purpose  
of a travel diary. Also known as travel journals or road journals, travel diaries represent  
documentation of a journey or series of journeys.  
Main objectives of the thesis  
The objectives of this thesis are the following:  
1.Develop a smart travel diary Android application which will:  
●ensure the survival of data over time (using the backup and restore  
mechanisms), in case the device is replaced, stolen, or lost;  
●make it easier to write at a moment’s notice;  
●reduce paper and plastic consumption;  
●add a level of privacy and security.  
2.Itemize the advantages of this solution;  
3.Itemize the advantages of digital diary over a paper one.  
Advantages of solution  
The first improvement can be seen by simply planning a trip, shown to make us  
happier, even if we don’t follow through and go on the trip itself [6] . With Travel  
Companion, it is easy to create lists of destinations, to which you can then add experiences  
before you visit or perform activities, all acting as a checklist or a trip plan. Once there,  
Travel Companion can provide the building blocks of a literally “memorable” experience, by  
structuring text and images into memory snippets, easily accessible at any later time.  
Whenever we travel, we can refer to the application to see what we wanted to do in the  
current location, according to our own plans. An added bonus of this is the fact that you  
can set your expectations correctly, by doing your research beforehand and then simply  
enjoy the experiences as predefined.  
The second improvement is a more obvious one: simply answer and act on the  
question: Why rely on a single dimension (memory), when you can back up information in  
more than one medium? The application plays the role of a companion who can help you  
stick to your travel plans and is always there for you at a moment’s notice, allowing you to  
immortalize moments of curiosity, bliss, courage, vulnerability, happiness, and  
self-consciousness – all the feelings that travelling brings to the surface. So whenever you  
experience novelty or intense moments, you can start the app, write some thoughts and  
snap a few pictures. Having a plan already laid out, this should be easy and allow you to  
further develop your experience and how you remember it. Later on, you can take a  
retrospective look through the memory snippets and fill in missing details. Thus, the work  
commitment/results ratio is pretty low.  
Nomads for 99% of the history of mankind, humans traveled a lot and possessed  
very few items: those that they could carry and would be valuable or useful enough. Still  
holding true nowadays, while travelling, every gram of luggage counts, so minimalism  
tends to be the best thing you can do to save your back. Having a diary embedded into  
 
   
DIANA-GEORGIANA ȘICĂ   2

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
your ubiquitous phone makes it possible for you to easily and quickly capture your fresh  
thoughts and significant pictures in just a couple of seconds, all without adding an ounce of  
weight. When carrying any extra weight, there is a corresponding, almost linear drop in  
walking speed [7] ; even more drastic with extra effort during activities such as hiking.   
Having cheap and reliable access to the Internet still represents an issue today for  
most of the world’s population. The next billion users [8] all come from emerging markets,  
where around 95% of mobile plans are prepaid, which means that mobile data traffic  
should not be taken lightly. For example, on average, African citizens pay 18% of their  
monthly income for 1 GB of mobile data [9] . With Travel Companion, there’s no need to  
incur roaming data charges for your diary to be available to you while traveling – you only  
need access to the Internet when you plan your trip and choose your destinations and  
desired experiences – the rest can be done offline.  
Around half of people making travel destination choices are already influenced by  
social circles/social media [10] , so why let this bias manifest itself in writing journal entries  
and memory snippets? By making it clear that TravelCompanion is non-social, you can  
focus on yourself and your innermost thoughts and feelings, unbiased by social  
expectations. There is no need to worry how anyone else might receive your notes, since  
they are only available to you. This allows you to speak to your future self in the most  
genuine way possible.  
One user survey found that more than half of the participants back up their data  
once a year or less [11] . Needless to say, having the option to save your data is paramount  
– just as keeping your diary safe. Travel Companion offers you the opportunity to back up  
your documented journeys and restore them whenever you want – such as when you lose  
or change your device.   
When it comes to the quality of the emotional expression while keeping a digital  
diary comparing to a paper one, according to The 30-Day Digital Journaling Challenge study,  
66% of respondents, including 69% of women, agreed or strongly agreed with the  
statement, “My typewritten entries this month expressed my innermost thought and  
feelings.” [12] Digital journaling opens an opportunity of journaling to those who are  
uncomfortable with handwriting. The same study states that handwriting comfort level  
drops down to 56% in men, while 32% of men consider themselves uncomfortable or very  
uncomfortable writing by hand. A problem that might arise with keeping a digital diary is  
that people tend to write less, even if it is more often than its paper counterpart [13] .  
Travel Companion takes steps in resolving this problem by adding the interactive  
component: it’s not just a notepad to write impressions; it’s a clearly structured travel diary  
which includes pictures. “We are incredible at remembering pictures. Hear a piece of  
information, and three days later you’ll remember 10% of it. Add a picture and you’ll  
remember 65%” [14] .  
 
   
DIANA-GEORGIANA ȘICĂ   3

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Document structure  
This first chapter of the paper presented a brief description of the problem, work  
objectives, and potential benefits through the proposed solution, as well as the importance  
and timeliness of the solution.  
The second chapter offers detailed description of the problem, the personal  
motivation of choosing this thesis subject, real-life examples of situations that sustain the  
need to develop a solution, as well as detailed arguments which justify the actuality of the  
problem and sustain its importance.  
The third chapter describes the technologies that have been used to reach the level  
of efficiency and ease of use that is proposed for the thesis subject.  
The fourth chapter consists in presenting the software architecture by using various  
types of diagrams, as well as giving brief descriptions of the various features of the  
application.  
The fifth chapter offers a detailed description of the main features of the application  
along with their implementations, the main classes, and the structure of the database.  
The sixth chapter presents the conclusions including the degree of completion of  
the proposed solution, future features of the solution, solution issues which need further  
research, the advantages and disadvantages of the solution.  
 
 
   
DIANA-GEORGIANA ȘICĂ   4

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Travel Diary: “Do not allow me to forget”  
Gabriel García Márquez, Of Love and Other Demons  
Creating lasting and detailed memories  
Memory is the retention of information over different time periods [15] ,  
representing the building blocks of learning. Without the ability to store and recall memory,  
we would not be able to learn to get better at the various skills or knowledge we possess.  
However, memories are not perfect. At each step of the way (perception, attention,  
encoding, and consolidation), there can be imperfect associations with existing knowledge,  
inappropriate context, or other external factors, which affect the quality and stability of the  
memories being created.  
To increase the odds of forming solid memories and thus effective learning,  
psychologists refer to the following factors:  
●Attentiveness, or how alert and concentrated we are on the subject drastically  
improves memory performance, depending on how much effort we make – this  
process is called attentional capture [16] .  
Researchers discovered that astrocytes, a type of brain cells, are very important for  
processing sensory information, by relaying messages alerting visual cortex neurons  
that they should respond strongly to the visual information they are receiving.  
“ If you are paying attention to something, which causes this release of acetylcholine,  
that leads to a long-lasting memory of that stimulus. If you remove the astrocytes,  
that doesn’t happen” says Mriganka Sur, Professor of Neuroscience at MIT, senior  
author of a paper which focuses on the analysis of an astrocyte-based neural circuit  
that makes us likelier to remember what we’re seeing when our brains are in a  
more attentive state [17] .  
●Motivation, either as desire or a need, is a factor that makes learning and  
memorization easier. Motivation constitutes a base for human behaviour: it  
influences our decisions, the experiences we seek, and consequently what we  
encode and remember, thus we experience ease in remembering the things we  
want to do, but difficulty in remembering those we are unmotivated to do [18] .  
●Emotional parameters affect how well events are memorized, since norepinephrine  
(dubbed the “stress hormone”) can affect how much strongly we perceive the  
current experience; depending on the individuals, false memories can be created at  
this stage, such as the United 93 Crash experiment, which “involves asking  
participants if they have seen footage for a widely reported news event, often  
involving a crash (hence the name), when in fact no video footage of the event really  
exists. In response to such questions, many participants in these studies appeared  
to develop false beliefs and memories that they witnessed events they could not  
possibly have seen” [19] .  
 
   
DIANA-GEORGIANA ȘICĂ   5

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
●Context is very important, as memories are not stored in separate compartments,  
but rather as associated information with current knowledge and observed  
surroundings; for example, it is easier to remember a painting if it was part of a  
holiday that was well appreciated and remembered.  
Memory theorists have long proposed that memory relies on a representation of  
past events organized along a timeline and it can be shown that our experience of the  
passage of time requires the involvement of memory [20] . Knowing how past events  
unfolded requires them to be composed of stable memories, which can be achieved by  
consolidating current experiences with multiple sources of information, such as multiple  
senses. Writing a diary encourages the mind to consolidate and stabilise our thoughts and  
memories during sleep, which has a major impact on the efficiency of recalling this  
information later on [21] .  
The researchers from UCL Institute of Cognitive Neuroscience showed that the  
connections formed between various aspects of an event allow one aspect to trigger a  
wave of memory that includes all the other aspects [22] – a concept known as Pattern  
Completion . During the pattern completion process, all the available information is  
organized in a similar manner to arranging the pieces of a jigsaw puzzle. The difficulty of  
remembering past events depends on how much information is available to us [23] , thus  
the more information we have, the more accurate our recollections will be. Chronologically  
organized imagery along with written depictions of our experiences can be used as  
memory cues to enhance our recollection of past events.  
The process of memory reconsolidation consists in maintaining, strengthening and  
modifying memories that are already stored in the long-term memory [24] , thus recalling  
previously consolidated memories and further consolidating them. However, whenever we  
recall past events we run the risk of manipulating and altering their corresponding  
memories. Generally, the past events we remember are actually not the events themselves,  
but rather the memory of remembering them, forever looping and degrading over time.  
This is where reconsolidation happens, negatively altering memories one bit at a time,  
eventually leading to unrecognizable or non-recallable events. We can limit the risk by  
“sealing” the memories using expressive writing and imagery, which helps prevent  
memories from becoming warped over time, staying truer to their original form. Having  
our memories clearly defined in a diary helps us create a more concise timeline of events  
which supports both short-term and long-term memories.  
Travel Companion encourages users with the following simple advice:  
Plan your trips, be present while experiencing novelty, and make sure that you spend  
some time writing and snapping photos of your adventures, to be able to recall them as  
memorable as they were the first time you made them. Let yourself be fully immersed in a new  
experience, while resting assured that you won’t miss out on anything, because the plan you  
made is a simple step-by-step travel guide. Did you enjoy that amazing ice cream? Take a picture  
and add a note about it. Pay attention, feel the smell and link its taste to that of previous  
 
   
DIANA-GEORGIANA ȘICĂ   6

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
experiences, maybe from childhood. Let’s just make sure your memories are there to stay,  
not to stray away.  
Getting the most out of travels  
Traveling has great benefits for your emotional, mental and physical health. Studies  
have shown that traveling lowers the risk of depression and heart attack, decreases the  
stress levels, enhances creativity and boosts happiness [25] .  
Planning a journey can be discouraging sometimes, but the best part of it is building  
up anticipation through positive expectations and excitement for the best that’s yet to  
come. Generally delaying gratification by waiting for something we want and working hard  
to obtain boosts the pleasure we feel when we finally get it, while also prolonging this  
emotion afterwards, thus the feeling of happiness generated by taking a trip may pop up  
long before the journey actually begins. [26]  
Studies show that just planning or anticipating your trip can potentially make you  
happier than actually taking it. Moreover, people tend to experience more intense  
emotions during the anticipation phase than during the retrospection of an event.  
Researchers state that “the enjoyment people glean from anticipation might also be an  
important component of life satisfaction: one’s satisfaction with life is influenced both by  
looking backward and by looking forward.” [27] [28]  
Planning your journey is a very powerful and effective way to make the most out of  
your time spent on holiday while thoroughly enjoying the process itself as well. A trip is  
part of one’s life and should be looked after with the same care one puts when planning  
their life. A good plan, like a good map, will ensure that you will make the most out of your  
vacation, rather than roaming around aimlessly, hoping to just stumble upon activities that  
would make great experiences for your trip. Furthermore, by making a good plan and  
backups for your upcoming activities you minimize the chances of a hectic trip and ensure  
that your time will be well balanced. Otherwise, it’s very easy to fall down the slope of  
rushing through as many activities as you can with the feeling you can never see or do  
enough only to return from that trip exhausted and with a need for another vacation.  
Travel Companion makes it easy for you to lay out your desired destinations, then  
assign to each of them the experiences you’re looking for as a checklist of todo activities.  
You may even start to describe each experience you have in your mind while you’re  
anticipating and fantasising about it – it’s a good way to exercise your imagination and by  
doing so we’re less likely to be bothered by trivial issues if we assume in advance that our  
experiences are going to be delightful. With your experiences already beautifully organized  
and lined up it will be easier for you to refer to the list while exploring, and adding  
impressions of a place or small things you wish to remember is going to be effortless.  
Would I use this app myself?  
In short, yes. I personally have had plenty of occasions where the application could  
have helped address different shortcomings: forgetting details of past events, missing out  
on experiences while travelling for lack of planning, daydreaming with no follow-up action,  
 
   
DIANA-GEORGIANA ȘICĂ   7

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
lack of quick and easy way of storing travel impressions or practical information (hotel  
details, flight info, tour company contact), lack of a handy and visually pretty way of jotting  
down ideas of places and experiences for a road trip etc.   
Keeping a travel journal where I can store descriptions of all the stimuli that make  
up my journeys next to a vibrant selection of photos is a sure way of re-living travels with  
all their sensory experiences.   
In the next sections, I will present a few personal situations that can be construed as  
motivation triggers to develop the application.  
I don’t remember doing that!  
Weeks after we return from a trip together, my friends and I have a tradition to  
meet up to just recollect and relive some of our favourite moments. But every time we do, I  
get the eerie feeling that my memory is deceiving me, like we did not go on the same trip,  
but instead, each one went on their own, almost totally different one. Of course, this is  
where perspectives come into play, but surely there has to be a way to build memories  
with more objective information, before perspective biases start piling up. This led me to  
believe that by planning, I will be able to pay more attention to my surroundings and  
recognize already researched elements of my experiences. In turn, this new found  
attentiveness will help me cement my memories and also allow me to add in other  
consolidation components (such as emotional state and sensory information) and really  
allow me to immerse myself in my adventures. The final step in limiting the awkward  
moments when going down memory lane with my friends is the availability of a “notepad”  
which allows me to add pictures to it, but would also be associated with the already  
planned destination and its experiences. I think that being free of the responsibility of  
making spontaneous planning decisions would definitely benefit my and the experiences of  
those around me.   
The most connected I’ve felt with my friends after a road trip was when I created a  
retrospective video, where I pulled in all the videos I had with them from our adventures.  
Needless to say, it was extremely well received and motivated me to at least try to  
document our trips better. After all, the greatest joy is to make others happy, rather than  
just yourself.  
Learn. Discover. Create  
I often daydream about visiting a certain place, read about what I can do there,  
where I can stay, then simply leave that browser tab open, only to remember or notice it  
opened days later, clearly having forgotten to plan anything. But the small amount of  
research I feel like doing in the moment is insufficient in and of itself. In fact, it almost  
resembles the iconic remark of Edgar Allan Poe:  
“If you wish to forget anything on the spot, make a note that this thing is to be  
remembered.” [29]  
 
   
DIANA-GEORGIANA ȘICĂ   8

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
So I think it would pay off to have more clarity and make it easier to follow through  
with plans if whatever I daydream about would be pooled into the same space as the  
information about plans I intend on fulfilling.  
By using the app, it’s just easier to daydream in a constructive way, as it’s a constant  
reminder of the travel goals I have – it’s like a little project waiting to grow and flourish step  
by step, with every destination, experience, description, or photo, regardless if I’m taking  
the trip or not.  
Travel. Better. Faster. Stronger  
I almost never manage to plan efficiently for a trip, and just as often I forget or fail  
to find out on time about events I would have surely wanted to attend. For lack of efficient  
travel time management, I also happen to miss out on activities, or go through times when  
I don’t really do anything, which can only add frustration or even trigger a FOMO response  
(Fear Of Missing Out).  
I have tried creating basic checklists and cross items off of them as I went through  
my travels, but I found it insufficiently motivating and technically inefficient. On occasion, I  
even forget about the lists I made in the time it takes from planning to execution, which I  
attribute to the lack of anticipation. Thus, I’ve deemed simple checklists ineffective and  
wished there was a way to plan a trip and stay sufficiently engaged, while also being  
sufficiently motivated to come back to it and see my experiences grow.  
For example, during a trip to Sibiu, Romania, a part of the activities our group had  
planned got canceled because of unfavorable weather conditions. As a result, we ended up  
wasting time going from one spontaneous bad idea to the other. By the time the weather  
cleared, our initial plans were no longer achievable and we ended up just walking around  
the city. During our walk, we came across a large zoo, which seemed like a great idea.  
Unfortunately, it had reached the end of its daily schedule and there was no other time we  
could have visited. The zoo was not part of the initial plan, but had we had it in the list of  
experiences with its details, we would have managed to visit it once the weather had  
cleared instead of aimlessly exploring the city on foot.  
With Travel Companion, I can not only effectively plan efficient itineraries, but I can  
also add a human touch to each item as I cross it off the list: I can add impressions in the  
heat of the moment, or let my thoughts and feelings flow as I describe in detail my recent  
experience; I can even add evocative photos to complete the picture.   
Recall. Maintain. Relive  
During my trips or even in everyday life I like saving impressions in the moment, to  
keep memories fresh for later recall. For instance, when browsing for vacation destinations  
or making my pre-trip research, I look for interesting places to visit or shops with local  
products that I might want to purchase, I save a snapshot or send a message about it to  
myself through IM apps. However, I don’t have a central list to easily manage my  
travel-associated wishes and, although I could create a document in the cloud that I can  
 
   
DIANA-GEORGIANA ȘICĂ   9

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
add items to, it feels too ordinary and dull; so much so that I cannot find enough  
motivation within me to actually go through with it.  
Having a list of destination experiences (that art exhibit that I want to visit, that shop  
with delightful local products, that restaurant that I want to try) within Travel Companion is  
a guarantee that I will not mistakenly skip these when on vacation. Moreover, it motivates  
me enough to browse to the experience and seal it with a memory snippet, containing text  
and/or photos.  
Technically “memorable”  
Smartphones emerged as a mass-market product less than two decades ago, yet  
they managed to make a big impact, since 46% of adult American smartphone users  
“cannot imagine living without” their smartphones, according to 2015 Gallup polls [30] .  
Nowadays, the number of global smartphone users is projected to total 3.5 billion [31] as  
the millennials are taking ownership over the market and they’re relying on their mobile  
devices more than ever [32] . These numbers justify the need for a mobile-first marketing  
strategy, which brands must implement in order to thrive in the digital market.  
When developing the mobile application I thought about setting the minimum SDK  
version to reach the widest possible audience. Devices with 21 API level (5.0 Lollipop)  
support 94.1% of the users, which is sufficient coverage for the app.  
The endless search for Wi-Fi  
Studies have shown that users prefer mobile apps to mobile websites – according to  
eMarketer, the average person in 2019 spends 90% of their mobile time in apps vs. the  
mobile web [33] [34] . Users tend to favour apps to mobile web for a number of reasons like  
the ability to work offline or a smooth, engaging user experience [35] [36] .   
Having an app that requires an Internet connection for only a small number of tasks  
will ensure users can access information anytime, anywhere, such as when travelling in  
remote areas or in parts of the emerging smartphone market, where data bandwidth or  
speed issues are commonplace (for example, users in India have, on average, three times  
less mobile download speed than in Romania, despite widespread 4G availability – many  
users are on 4G networks but the speeds are actually closer to 3G due to the overloaded  
networks and constrained backbone capacity [37] ). For example, while hiking I always  
encounter the problem of poor reception and/or Internet connectivity. With Travel  
Companion I can continue enjoying documenting my trip regardless of being online or  
offline, since my data is stored locally on my mobile device and its retrieval is swift and  
painless, without requiring a stable internet connection or data on my mobile plan.  
An added bonus of going mobile is that storing data locally can be viewed as an  
extra privacy layer; which fits wonderfully with the idea of a diary app. Users have the  
option of backing up their personal data, which can be done smoothly by saving the file  
locally or by sending it through dedicated installed apps, such as email clients.  
 
   
DIANA-GEORGIANA ȘICĂ   10

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Kotlin, Kotlin everywhere!  
Until recently, developers had favored Java as the go-to programming language for  
their Android apps, but Kotlin emerged several years ago and is now up and running to  
take up first place as far as preferences go.  
Since many developers were using Kotlin already, in May 2017, at the Google I/O  
conference, Google announced that it will officially support Kotlin as an Android  
development language [38] [39] , which clearly boosted its popularity. In fact, over 50% of  
professional Android developers were already using it by 2019, making it “the  
fastest-growing language on GitHub” and the fourth most loved programming language on  
Stackoverflow [40] .  
At the Google I/O 2019 Keynote developer conference in Mountain View, CA, the  
leader of the Android UI team at Google, Chet Haase, made a new announcement for the  
Kotlin developers community: “Android is becoming increasingly Kotlin-first, with many  
new Jetpack APIs and features being introduced first for Kotlin developers”. He also advised  
developers to use Kotlin for every new Android project as “there’s less to type, there’s less  
to test, and there’s less to maintain”, deeply increasing the overall productivity [41] [42] .  
With this in mind, I was motivated to make the decision of joining the enthusiastic  
crowd and begin my adventure with Kotlin.  
 
 
   
DIANA-GEORGIANA ȘICĂ   11

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Used Technologies  
Android Operating System  
ljkhj  
Kotlin  
What is Kotlin?  
Kotlin is a statically typed programming language that targets the JVM, Android,  
JavaScript and Native. It’s developed by JetBrains. The project started in 2010 and was open  
source from very early on. The first official 1.0 release was in February 2016 [43] .  
Kotlin can be used in both OOP and FP style, as it has both object-oriented and  
functional constructs.  
What are some of the advantages of Kotlin over Java?  
●It’s more concise. Rough estimates indicate approximately a 40% cut in the  
number of lines of code.  
●It’s more type-safe. Support for non-nullable types makes applications less  
prone to NullPointerExceptions.  
●It provides higher-order functions, lambda expressions, extension functions,  
companion objects, coroutines and many more.  
Higher-Order Functions  
A higher-order function is a function that takes functions as parameters, or returns  
a function [44] .  
Lambda Expressions  
A lambda expression is a function that is not declared, but passed immediately as  
an expression.  
Lambda expressions follow this basic syntax:  
val lambdaName : Type = { parameterList -> codeBody }  
We may see a basic example of a lambda expression when using  
setOnClickListener(), which takes a single lambda function that is triggered every time a  
View is clicked.  
cancelButton .setOnClickListener {  
dismiss()  
}  
 
   
DIANA-GEORGIANA ȘICĂ   12

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Extension Functions  
Extension functions are member functions of a class that cannot be modified or  
accessed. Such functions are available for calling in the usual way as if they were methods  
of the original class [45] .  
In Kotlin, a Binding Adapter can be written as an extension function. In the following  
example I made an extension functions of TextView to set the text on the  
journey_destination_name TextView:  
@BindingAdapter ( "journeyDestinationName" )
fun TextView. setJourneyDestinationName (item: Journey?) {
item?. let {
text = item . placeName
}
}
Android Studio  
Android Studio has been developed by Google and JetBrains and is the official  
Integrated Development Environment (IDE) for Android app development, based on IntelliJ  
IDEA [46] . Combining IntelliJ's powerful code editor and developer tools with an abundance  
of features enhances productivity when building Android apps.  
Android Jetpack  
Jetpack is a suite of libraries, tools, and guidance to help developers write  
high-quality apps more easily, by following best practices, with less boilerplate code and  
simplified complex tasks [47] .  
Travel Companion has been developed with the help of several Android Jetpack  
Components. Android Jetpack components are a collection of libraries that are individually  
adoptable and built to work together while taking advantage of Kotlin language features.  
Android Foundation Components  
Foundation components provide cross-cutting functionality like backwards  
compatibility, testing and Kotlin language support.  
Android KTX  
Android KTX is a set of Kotlin extensions that leverage Kotlin language features such  
as extension functions, lambdas or coroutines [48] .  
A coroutine is a concurrency design pattern that can be used to simplify code that  
executes asynchronously. One major problem that can be solved using coroutines is  
managing long-running tasks that might otherwise block the main thread and cause the  
app to freeze [49] .  
The following example shows how I implemented Coroutines for the operation of  
writing to database:  
 
   
DIANA-GEORGIANA ȘICĂ   13

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
/*viewModelJob allows the cancellation of all coroutines started by
this ViewModel*/
private var viewModelJob = Job ()

/*A [CoroutineScope] keeps track of all coroutines started by this
ViewModel.
Dispatchers.Main is used for performing quick work or interacting with
the UI. In this case, this dispatcher is used to call a suspend function*/
private val uiScope = CoroutineScope (Dispatchers. Main + viewModelJob )

/* launch is used to start a new coroutine in the declared scope*/
fun onCreateJourney () {
uiScope . launch {
val journey = Journey()
journey. coverPhotoAttributions =
coverPhotoAttributions . value . toString ()
journey. coverPhotoSrcUri = coverPhotoSrcUri . value . toString ()
journey. placeName = selectedPlaceName . value . toString ()
journey. placeAddress = selectedPlaceAddress . value . toString ()

insertJourney(journey)

_navigateToJourneys . value = true
}
}

/*Dispatcher.IO is optimized to perform disk or network I/O outside of the
main thread.*/
private suspend fun insertJourney (journey: Journey) {
withContext(Dispatchers. IO ) {
database .insertJourney(journey)
}
}

/*Cancels any coroutine started in the uiScope*/
override fun onCleared () {
super .onCleared()
viewModelJob .cancel()
}
 
Android Architecture Components  
Android architecture components are a collection of libraries that help developers  
design robust, testable, and maintainable apps [50] .  
 
   
DIANA-GEORGIANA ȘICĂ   14

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Data Binding  
The Data Binding Library is a support library that allows us to connect (bind) a layout  
to an Activity or Fragment at compile time using a declarative format rather than  
programmatically. Using findViewById to get a reference to views at runtime is  
inefficient and time consuming and can lead to bad user experience by slowing down the  
app [51] .  
The Data Binding Library allows working with Binding Adapters. For every layout  
expression, there is a binding adapter that makes the framework calls required to set the  
corresponding properties or listeners.  
The following example shows how I implemented a custom binding adapter to  
insert an image into an ImageView using the Glide library:  
/*DataBinding will execute this binding adapter when there is an XML item
that has the "journeyImage" attribute.
Having ImageView as the View parameter will ensure that only ImageView and
any derived classes can use this adapter.*/
@BindingAdapter ( "journeyImage" )
fun setJourneyImage (imageView: ImageView , item: Journey?) {
item?. let {
if ( item . coverPhotoSrcUri == "" ) {
imageView.setImageResource(R.drawable. ic_undraw_destinations )
} else {
val imageUri = item . coverPhotoSrcUri . toUri ()
Glide.with(imageView. context )
.load(File(imageUri. path !!))
.into(imageView)
}
}
}
 
ViewModel  
ViewModel is a class that holds UI-related data and survives configuration  
changes, such as screen rotations [52] .  
The factory pattern can be used to easily pass data into a ViewModel using a view  
model factory that allows the creation of a custom constructor for the ViewModel. The  
ViewModel custom constructor gets called when using ViewModelProviders (which actually  
constructs the ViewModel).  
LiveData  
LiveData is an observable data holder class that is lifecycle-aware, which means it  
only updates app component observers – such as activities or fragments – that are in an  
active lifecycle state. Inactive observers will not be notified about changes, but once the UI  
 
   
DIANA-GEORGIANA ȘICĂ   15

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
controller is back on-screen, the LiveData will trigger the observer with the most recent  
data [53] .  
A LiveData object that updates the UI is usually stored within a ViewModel  
object and is accessed via a getter method.  
LiveData objects can also be used when storing data using the Room persistence  
library, which supports observable queries that return LiveData objects.  
Navigation  
Navigation refers to the interactions that allow users to navigate across, into, and  
back out from the different pieces of content within an app. Android Jetpack's Navigation  
component simplifies many navigation tasks – such as fragment transactions, app bars or  
passing data between destinations using Safe Args – and ensures a consistent and  
predictable user experience, in accordance with the Android’s Principles of Navigation [54] .  
The Navigation component consists of three key parts:  
●Navigation graph: An XML resource that includes all destinations – or  
individual content areas within the app – along with the possible paths that a  
user can take through the app.  
●NavHost : An empty container that displays destinations from the navigation  
graph. NavHostFragment is a default NavHost implementation that displays  
fragment destinations.  
●NavController : An object that manages app navigation within a  
NavHost . The app navigation can be done either by specifying a path in the  
navigation graph or directly to a specific destination.  
Room  
The Room persistence library provides an abstraction layer over SQLite to allow for  
more robust database access while harnessing the full power of SQLite [55] . The library  
allows the users to access their data regardless of whether they have an internet  
connection.  
There are three major components in Room [56] :  
●Database: Contains the database holder. The class is abstract, extends  
RoomDatabase and has a @Database annotation with a list of entities  
associated with the database. It should also contain an abstract method with  
0 arguments which returns the DAO.  
●Entity: Represents a table within the database.  
●DAO: Contains the methods used for accessing the database.  
Android UI Components  
The UI components provide widgets and helpers to make the application easy and  
delightful to use.  
 
   
DIANA-GEORGIANA ȘICĂ   16

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
RecyclerView  
Travel Companion is mainly focused on displaying lists of journeys, along with their  
experiences and the attached memories. Having a quite large data set which might  
frequently change led me to choose the RecyclerView widget to efficiently display these  
lists.  
RecyclerView comes with a set of advantages:  
●Efficient display of large lists.  
●Minimizing refreshes when an item is updated, deleted, or added to a list.  
●Reusing views that scroll off screen to display the next item that scrolls on  
screen.  
●Displaying items in a list or a grid.  
●Scrolling vertically or horizontally.  
 
Figure 1. RecyclerView Model  
In the RecyclerView model, several different components work together to display  
the data. The RecyclerView object is the overall container for the user interface. Views  
provided by the layout manager will fill the RecyclerView. The layout manager can be a  
standard one (such as LinearLayoutManager or GridLayoutManager ) or a custom  
one.  
The views in the list are represented by view holder objects, which are instances of a  
class defined by extending RecyclerView.ViewHolder . These view holder objects are  
managed by an adapter , which is created by extending RecyclerView.Adapter . The  
view holder will be assigned to a position, and based on this position, the adapter will bind  
the view holder to its corresponding data using onBindViewHolder() [57] .  
To tell RecyclerView that an item was added, changed, moved or removed, we can  
use two ways:  
●call RecyclerView.Adapter.notifyDataSetChanged() , which tells  
RecyclerView that the entire list is potentially invalid which will lead to  
rebinding and redrawing every view. The method has several drawbacks: it  
can be very expensive, inefficient and can lead to poor performance for the  
app, because of the large number of screen updates.  
●use DiffUtil utility class that calculates the difference between two lists and  
outputs a list of update operations that converts the first list into the second  
one [58] .  
 
   
DIANA-GEORGIANA ȘICĂ   17

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
CardView  
Travel Companion uses the CardView widget as a container for each item in the lists.  
CardView is a FrameLayout with a rounded corner background and shadow [59] .  
Places SDK for Android  
The Places SDK for Android allows developers to build location-aware apps that  
respond contextually to the local businesses and other places near the user's device [60] .  
The following interfaces provide the primary entry points to the Places SDK for  
Android:  
●Places provides programmatic access to Google's database of local place  
and business information, as well as the device's current place.  
●Autocomplete provides pre-made widgets to return place predictions in  
response to user search queries.  
API overview  
The Places API is a service that returns information about places using HTTP  
requests. Places are defined within this API as establishments, geographic locations, or  
prominent points of interest [61] .  
The following place requests are available:  
●Place Search returns a list of places based on a user's location or search  
string.  
●Place Details returns more detailed information about a specific place,  
including user reviews.  
●Place Photos provides access to the millions of place-related photos stored  
in Google's Place database.  
●Place Autocomplete automatically fills in the name and/or address of a  
place as users type.  
●Place IDs stores the unique ID for one or more places for retrieval of place  
information on demand.  
Autocomplete widget  
One option of adding autocomplete to an app is by using an Autocomplete widget.  
The autocomplete widget is a search dialog with built-in autocomplete functionality.  
As a user enters search terms, the widget presents a list of predicted places to choose  
from. When the user makes a selection, a Place instance is returned, which Travel  
Companion uses to get details about the selected place such as name, address, attached  
photos and attributions.  
To add the autocomplete widget to Travel Companion, I embedded an  
AutocompleteSupportFragment by adding a fragment to the XML layout and a  
listener to the corresponding fragment.  
 
   
DIANA-GEORGIANA ȘICĂ   18

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Solution Architecture  
General description of the mobile information system  
With the immense technological landscape of today come bespoke solutions that  
cater to every individual’s needs, pleasures, and the whole variety of activities that could  
use a technological improvement.  
Travelling comes with a collection of memories which one might want to preserve as  
close to their original form as possible. Since memory is an imperfect mechanism that’s  
prone to fallacy and it is widely recognized that there is almost never an exact reproduction  
of past experiences, tools that capture images or store text snippets are useful to anyone  
who travels.  
This paper aims to describe a mobile application that provides its users with the  
building blocks of a literally “memorable” experience. It represents a framework that allows  
for structuring journeys and experiences and then further expanding them with descriptive  
passages and images into so-called memory snippets, easily accessible at any time.  
Due to the intrinsic nature of a travel diary that this application attempts to emulate,  
there is a large amount of information to deal with. Storing journeys, experiences and  
memories over time requires data persistence. Additionally, with the aid of the  
backup-and-restore mechanism, users can ensure their saved data is secured and have the  
option of retrieving it when losing or changing their device.  
Travel data input is manually performed by users who must use smartphone  
devices connected to the Internet, which is only necessary at this stage, in retrieving details  
and photos of the intended destinations. These details are retrieved through an HTTP  
request to the Google Places API and then stored in the database, thus guaranteeing offline  
access upon saving. CRUD (Create, Read, Update, Delete) functions are available for all  
involved entities.  
User Definition  
The focus of the User Experience (UX) aspect of the application was placed on  
simplicity. During the UX Research phase, I’ve identified four main user personas, along  
with their goals fulfilled by the task they take within the app.  
 
   
DIANA-GEORGIANA ȘICĂ   19

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
User Persona 1  
 
User Persona 2  
 
 
   
DIANA-GEORGIANA ȘICĂ   20

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
User Persona 3  
 
User Persona 4  
 
 
   
DIANA-GEORGIANA ȘICĂ   21

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Requirements definitions  
The main purpose of the Smart Travel Diary Android Application is to provide a  
simple and practical interface for the users to centralize their travel destinations, making  
lists of experiences and adding memory snippets using text and imagery.  
This chapter aims to get into the details of the functional side of the application,  
presenting the various use cases that mirror the user’s journey.  
Adding a journey  
When entering the app for the first time or whenever the list of Journeys is empty,  
the user is prompted with a guideline to “Start by adding a journey”. Upon adding a  
journey, the user must enter a destination and choose from suggestions provided by  
Google Places API. A cover photo for his journey will be automatically set based on his  
choice of destination.  
Adding an experience  
The user may add experiences as part of a Journey. When accessing the details of a  
Journey for the first time or whenever the list of Experiences is empty, he will be prompted  
with a guideline to “Start by adding an experience”. Upon adding an experience, the user  
must provide a location and/or a custom name. If a location is provided, the cover photo  
for the experience will be automatically set based on the user’s choice of location. If only a  
custom name is provided, the cover photo will consist of a default image. The description  
of the experience is an optional field.  
Adding a memory  
The user may add memories as part of an Experience. When accessing the details of  
an Experience for the first time or whenever the list of Memories is empty, the user will be  
prompted with a guideline to “Start by adding a memory”. Upon adding a memory, the date  
of the memory will be automatically set to the current date with the edit option. The user  
will have to provide a name and a description for the current memory.  
Adding memory photos  
The user may add Photos as part of a Memory. When accessing the details of a  
Memory for the first time or whenever the list of photos is empty, the user will be  
prompted with a guideline to “Start by adding some photos”. The user will have two options  
of adding a photo: either by accessing the camera and snapping a photo or by choosing  
photos from the Gallery. Upon choosing a photo, the user has the option of adding a short  
caption to it.  
Backup  
The user has the option of backing up his data, by accessing the corresponding  
button in the Journeys contextual menu. Upon tapping the button, a Dialog is prompted to  
him with backup related information which the user must acknowledge before starting the  
 
   
DIANA-GEORGIANA ȘICĂ   22

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
process. When the backup file is ready, an intent with a series of applications is prompted  
and the user will have to choose the desired one for sending the file.  
Restore  
The user has the option of restoring his data. By accessing the corresponding  
button in the Journeys contextual menu, the user is prompted with a Dialog which provides  
a guideline for the restoring process. The user will have to access the backup file on the  
current device and open it with the Travel Companion application. Upon opening, the user  
is prompted with a Dialog consisting of a typical restoring warning and two options: Cancel  
and Restore. Upon cancellation, the process is aborted. The Restore option will start the  
restoring process.  
The analysis of the mobile information system  
General use-case diagram  
Use-case diagrams are used to identify and model the functional requirements that  
were taken into consideration while developing the Travel Companion. These diagrams  
reflect the manner in which the system will be used, through the representation of the  
actors (entities that record their travel destinations, experiences and memories) and the  
description of the actions which are emerging during the evolution of the process.  
 
Figure 2. General use-case diagram  
 
   
DIANA-GEORGIANA ȘICĂ   23

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
The design of the mobile information system  
Component diagram  
Component diagrams are used to show the relationships between different  
components in a system. These components are different software modules. Taking into  
account their content, they can be: components that contain source-code, binary  
components, dll, executable components etc.  
The following component diagram will give a bird’s-eye view of the mobile  
information system.  
 
 
 
   
 
   
DIANA-GEORGIANA ȘICĂ   24

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Solution Implementation  
 
   
DIANA-GEORGIANA ȘICĂ   25

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Conclusions  
 
   
 
   
DIANA-GEORGIANA ȘICĂ   26

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
Bibliography  
[1] A. Butler, “Neuropsychologist explains why travel creates long-lasting memories –  
Lonely Planet,” Lonely Planet , 04-Oct-2018. [Online]. Available:  
https://www.lonelyplanet.com/articles/travel-creates-memories . [Accessed:  
25-May-2020]  
[2] D. L. Schacter, S. A. Guerin, and P. L. St Jacques, “Memory distortion: an adaptive  
perspective,” Trends Cogn. Sci. , vol. 15, no. 10, pp. 467–474, Oct. 2011, doi:  
10.1016/j.tics.2011.08.004 . [Online]. Available:  
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3183109  
[3] M. Quak, R. E. London, and D. Talsma, “A multisensory perspective of working  
memory,” Front. Hum. Neurosci. , vol. 9, p. 197, Apr. 2015, doi:  
10.3389/fnhum.2015.00197 . [Online]. Available:  
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4404829  
[4] “Keeping a Journal to Record Memories,” Memory-Improvement-Tips.com . [Online].  
Available: https://www.memory-improvement-tips.com/keeping-a-journal.html .  
[Accessed: 05-Jun-2020]  
[5] “Diary,” Perspect. Public Health , vol. 140, no. 3, p. 130, May 2020, doi:  
10.1177/1757913920912360 . [Online]. Available:  
http://dx.doi.org/10.1177/1757913920912360  
[6] A. Kumar, M. A. Killingsworth, and T. Gilovich, “Waiting for Merlot: anticipatory  
consumption of experiential and material purchases,” Psychol. Sci. , vol. 25, no. 10, pp.  
1924–1931, Oct. 2014, doi: 10.1177/0956797614546556 . [Online]. Available:  
https://www.ncbi.nlm.nih.gov/pubmed/25147143  
[7] D. H. K. Chow et al. , “Figure 2. The effect of increasing backpack load on the walking  
speed,” ResearchGate , 15-Apr-2005. [Online]. Available:  
https://www.researchgate.net/figure/The-effect-of-increasing-backpack-load-on-the-wa
lking-speed-and-double-support-time_fig1_316877875 . [Accessed: 25-May-2020]  
[8] “The Next Billion Users — Payal Arora | Harvard University Press.” [Online]. Available:  
https://www.hup.harvard.edu/catalog.php?isbn=9780674983786 . [Accessed:  
25-May-2020]  
[9] W. Lambrechts and S. Sinha, Last Mile Internet Access for Emerging Economies . Springer,  
2019 [Online]. Available:  
https://play.google.com/store/books/details?id=19yZDwAAQBAJ  
[10] I. Shyle and V. Hysi, “Social Media and its Impact on Decision Making for Trip,” European  
Journal of Interdisciplinary Studies , vol. 1, no. 1, pp. 8–15, Apr. 2015, doi:  
10.26417/ejis.v1i1.p8-15 . [Online]. Available:  
http://journals.euser.org/index.php/ejis/article/view/894 . [Accessed: 25-May-2020]  
[11] R. Bauer, “Survey Asks: How Often Do People Backup Their Computers?,” Backblaze  
Blog | Cloud Storage & Cloud Backup , 09-Jul-2019. [Online]. Available:  
https://www.backblaze.com/blog/more-people-than-ever-backing-up-according-to-our-
survey/ . [Accessed: 25-May-2020]  
[12] N. Ohren, K. A. Lpc, and B. Hudson, “The 30-Day Digital Journaling Challenge A report  
 
   
DIANA-GEORGIANA ȘICĂ   27

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
for helping professionals,” Sep. 2015, doi: 10.13140/RG.2.2.13445.70886 . [Online].  
Available:  
https://www.researchgate.net/publication/335101270_The_30-Day_Digital_Journaling_C
hallenge_A_report_for_helping_professionals . [Accessed: 25-May-2020]  
[13] A. Gleaves, C. Walker, and J. Grey, “Using digital and paper diaries for learning and  
assessment purposes in higher education: a comparative study of feasibility and  
reliability,” Assessment & Evaluation in Higher Education , vol. 32, no. 6, pp. 631–643, Dec.  
2007, doi: 10.1080/02602930601117035 . [Online]. Available:  
https://doi.org/10.1080/02602930601117035  
[14] Jon Krauss-www. jonkrauss.com, “Vision | Brain Rules |.” [Online]. Available:  
http://www.brainrules.net/vision . [Accessed: 25-May-2020]  
[15] R. Wright, Consumer Behaviour . Cengage Learning EMEA, 2006, p. 191 [Online].  
Available: https://play.google.com/store/books/details?id=R329I_4nQOgC  
[16] Boundless, “Step 1: Memory Encoding | Boundless Psychology.” [Online]. Available:  
https://courses.lumenlearning.com/boundless-psychology/chapter/step-1-memory-enc
oding/ . [Accessed: 26-May-2020]  
[17] Anne Trafton, MIT News Office, “How attention helps you remember,” MIT News .  
[Online]. Available:  
http://news.mit.edu/2012/neuroscientists-shed-light-on-plasticity-0927 . [Accessed:  
26-May-2020]  
[18] S.-I. Kim, J. Reeve, and M. Bong, Eds., Recent Developments in Neuroscience Research on  
Human Motivation . Emerald Group Publishing, 2016, p. 204 [Online]. Available:  
https://play.google.com/store/books/details?id=FmqSDQAAQBAJ  
[19] L. Patihis and E. F. Loftus, “Crashing Memory 2.0: False Memories in Adults for an  
Upsetting Childhood Event,” Appl. Cogn. Psychol. , vol. 30, no. 1, pp. 41–50, 2016, doi:  
10.1002/acp.3165 . [Online]. Available:  
https://escholarship.org/content/qt6vx8w81s/qt6vx8w81s.pdf  
[20] M. W. Howard, “Memory as Perception of the Past: Compressed Time in Mind and  
Brain,” Trends Cogn. Sci. , vol. 22, no. 2, pp. 124–136, Feb. 2018, doi:  
10.1016/j.tics.2017.11.004 . [Online]. Available:  
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5881576/  
[21] “Is writing a diary good for your memory? | Katie Leamon Stationery,” Katie Leamon ,  
28-Oct-2019. [Online]. Available:  
https://katieleamon.com/articles/is-writing-a-diary-good-for-your-memory/ . [Accessed:  
26-May-2020]  
[22] C. Bergland, “The Neuroscience of Recalling Old Memories,” Psychology Today ,  
03-Jul-2015 [Online]. Available:  
https://www.psychologytoday.com/blog/the-athletes-way/201507/the-neuroscience-re
calling-old-memories . [Accessed: 25-May-2020]  
[23] “Home | Pattern Completion.” [Online]. Available: http://www.pattern-completion.net/ .  
[Accessed: 25-May-2020]  
[24] Wikipedia contributors, “Memory consolidation,” Wikipedia, The Free Encyclopedia ,  
12-Apr-2020. [Online]. Available:  
https://en.wikipedia.org/w/index.php?title=Memory_consolidation&oldid=950466936 .  
 
   
DIANA-GEORGIANA ȘICĂ   28

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
[Accessed: 25-May-2020]  
[25] “5 reasons traveling abroad is seriously good for your health,” NBC News , 19-May-2017.  
[Online]. Available:  
https://www.nbcnews.com/better/wellness/5-scientifically-proven-health-benefits-trave
ling-abroad-n759631 . [Accessed: 27-May-2020]  
[26] C. G. Andrews, “Anticipation Is the Happiest Part of a Travel Journey,” Good Nature  
Travel , 02-Oct-2018. [Online]. Available:  
https://www.nathab.com/blog/anticipation-is-the-happiest-part-of-a-travel-journey/ .  
[Accessed: 26-May-2020]  
[27] J. Nawijn, M. A. Marchand, R. Veenhoven, and A. J. Vingerhoets, “Vacationers Happier,  
but Most not Happier After a Holiday,” Appl. Res. Qual. Life , vol. 5, no. 1, pp. 35–47, Mar.  
2010, doi: 10.1007/s11482-009-9091-9 . [Online]. Available:  
http://dx.doi.org/10.1007/s11482-009-9091-9  
[28] L. Van Boven and L. Ashworth, “Looking forward, looking back: anticipation is more  
evocative than retrospection,” J. Exp. Psychol. Gen. , vol. 136, no. 2, pp. 289–300, May  
2007, doi: 10.1037/0096-3445.136.2.289 . [Online]. Available:  
https://pdfs.semanticscholar.org/6f1b/659f2864eb98df7ca4d509067162d65060ab.pdf  
[29] “A quote by Edgar Allan Poe.” [Online]. Available:  
https://www.goodreads.com/quotes/40876-if-you-wish-to-forget-anything-on-the-spot-
make . [Accessed: 31-May-2020]  
[30] Gallup, Inc, “Nearly Half of Smartphone Users Can’t Imagine Life Without It,” 2015  
[Online]. Available:  
https://news.gallup.com/poll/184085/nearly-half-smartphone-users-imagine-life-witho
ut.aspx . [Accessed: 27-May-2020]  
[31] “How Many People Have Smartphones in 2020 | Oberlo,” Oberlo . [Online]. Available:  
https://www.oberlo.com/statistics/how-many-people-have-smartphones . [Accessed:  
27-May-2020]  
[32] A. Peterson, T. N. S. Experts, J. Gombeski, and H. Kundariya, “Mobile-First Marketing:  
What You Need to Know – The Next Scoop,” The Next Scoop , 05-Feb-2019. [Online].  
Available: https://thenextscoop.com/mobile-first-marketing/ . [Accessed: 27-May-2020]  
[33] “Mobile Time Spent 2018,” eMarketer . [Online]. Available:  
https://www.emarketer.com/content/mobile-time-spent-2018 . [Accessed:  
27-May-2020]  
[34] P. Saccomani, “People Spent 90% of Their Mobile Time Using Apps in 2019,” MobiLoud  
Blog , 30-Jan-2018. [Online]. Available:  
https://www.mobiloud.com/blog/mobile-apps-vs-the-mobile-web/ . [Accessed:  
27-May-2020]  
[35] J. Badalian, “HTML5 vs Native: The Debate is Over | MobileSmith,” MobileSmith .  
[Online]. Available: https://www.mobilesmith.com/html5-vs-native-debate-is-over/ .  
[Accessed: 27-May-2020]  
[36] “Clearbridge Mobile,” May 2019 [Online]. Available:  
https://clearbridgemobile.com/mobile-app-vs-mobile-website-which-is-the-better-optio
n/ . [Accessed: 27-May-2020]  
[37] “Speedtest Global Index – Monthly comparisons of internet speeds from around the  
 
   
DIANA-GEORGIANA ȘICĂ   29

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
world,” Speedtest Global Index . [Online]. Available:  
https://www.speedtest.net/global-index . [Accessed: 27-May-2020]  
[38] Google, “Google I/O 2017: Empowering developers to build the best experiences across  
platforms,” Android Developers Blog . [Online]. Available:  
https://android-developers.googleblog.com/2017/05/google-io-2017-empowering-deve
lopers-to.html . [Accessed: 27-May-2020]  
[39] P. Krill, “Google endorses Kotlin for Android development,” InfoWorld , 18-May-2017.  
[Online]. Available:  
https://www.infoworld.com/article/3197337/google-endorses-kotlin-for-android-develo
pment.html . [Accessed: 27-May-2020]  
[40] S. Overflow, “Stack Overflow annual developer survey (2019),” URL https://insights.  
stackoverflow. com/survey , 2019 [Online]. Available:  
https://insights.stackoverflow.com/survey/2019  
[41] “Google I/O 2019” [Online]. Available: https://events.google.com/io2019/recap/ .  
[Accessed: 27-May-2020]  
[42] Google, “Kotlin Is Everywhere! Join the global event series,” Android Developers Blog .  
[Online]. Available:  
https://android-developers.googleblog.com/2019/05/kotlin-is-everywhere-join-global-e
vent.html . [Accessed: 27-May-2020]  
[43] “FAQ – Kotlin Programming Language,” Kotlin . [Online]. Available:  
https://kotlinlang.org/docs/reference/faq.html . [Accessed: 04-Jun-2020]  
[44] “Higher-Order Functions and Lambdas – Kotlin Programming Language,” Kotlin .  
[Online]. Available: https://kotlinlang.org/docs/reference/lambdas.html . [Accessed:  
04-Jun-2020]  
[45] “Extensions – Kotlin Programming Language,” Kotlin . [Online]. Available:  
https://kotlinlang.org/docs/reference/extensions.html . [Accessed: 04-Jun-2020]  
[46] “Meet Android Studio | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/studio/intro . [Accessed: 01-Jun-2020]  
[47] “Android Jetpack | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/jetpack . [Accessed: 01-Jun-2020]  
[48] “Android KTX | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/kotlin/ktx . [Accessed: 02-Jun-2020]  
[49] “Improve app performance with Kotlin coroutines | Android Developers,” Android  
Developers . [Online]. Available: https://developer.android.com/kotlin/coroutines .  
[Accessed: 02-Jun-2020]  
[50] “Android Architecture Components | Android Developers,” Android Developers .  
[Online]. Available: https://developer.android.com/topic/libraries/architecture .  
[Accessed: 01-Jun-2020]  
[51] “Data Binding Library | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/topic/libraries/data-binding . [Accessed: 01-Jun-2020]  
[52] “ViewModel Overview | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/topic/libraries/architecture/viewmodel . [Accessed:  
01-Jun-2020]  
[53] “LiveData Overview | Android Developers,” Android Developers . [Online]. Available:  
 
   
DIANA-GEORGIANA ȘICĂ   30

SMART TRAVEL DIARY ANDROID APPLICATION    
   
 
https://developer.android.com/topic/libraries/architecture/livedata . [Accessed:  
01-Jun-2020]  
[54] “Navigation | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/guide/navigation/ . [Accessed: 01-Jun-2020]  
[55] “Room Persistence Library | Android Developers,” Android Developers . [Online].  
Available: https://developer.android.com/topic/libraries/architecture/room . [Accessed:  
01-Jun-2020]  
[56] “Save data in a local database using Room | Android Developers,” Android Developers .  
[Online]. Available: https://developer.android.com/training/data-storage/room .  
[Accessed: 02-Jun-2020]  
[57] “Create a List with RecyclerView | Android Developers,” Android Developers . [Online].  
Available: https://developer.android.com/guide/topics/ui/layout/recyclerview .  
[Accessed: 04-Jun-2020]  
[58] “DiffUtil | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/reference/androidx/recyclerview/widget/DiffUtil .  
[Accessed: 04-Jun-2020]  
[59] “CardView | Android Developers,” Android Developers . [Online]. Available:  
https://developer.android.com/reference/androidx/cardview/widget/CardView .  
[Accessed: 04-Jun-2020]  
[60] “Overview | Places SDK for Android | Google Developers,” Google Developers . [Online].  
Available: https://developers.google.com/places/android-sdk/intro . [Accessed:  
04-Jun-2020]  
[61] “Overview | Places API | Google Developers,” Google Developers . [Online]. Available:  
https://developers.google.com/places/web-service/intro . [Accessed: 04-Jun-2020]  
 
 
   
DIANA-GEORGIANA ȘICĂ   31

Similar Posts