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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: The Bucharest University of Economic Studies [617755] (ID: 617755)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
