Augmented Reality in Furniture Sales
Augmented Reality in Furniture Sales
By
SCHOOL OF COMPUTING
SATHYABAMA
INSTITUTE OF SCIENCE AND TECHNOLOGY
(DEEMED TO BE UNIVERSITY)
Accredited with Grade “A” by NAAC | 12B Status by UGC | Approved by AICTE
JEPPIAAR NAGAR, RAJIV GANDHI SALAI,
CHENNAI - 600119
APRIL - 2023
i
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
BONAFIDE CERTIFICATE
This is to certify that this Project Report is the bonafide work of SAI BHAVAN
GUBBALA (Reg. No - 39110353) and DHRUV NAIDU ALTI (Reg. No - 39110272)
who carried out the Project Phase-2 entitled “AUGMENTED REALITY FURNITURE
APPLICATION” under my supervision from January 2023 to April 2023.
Internal Guide
Mrs. S. R. SRIVIDHYA M.E., Ph.D.
ii
DECLARATION
I, SAI BHAVAN GUBBALA (Reg. No- 39110353), hereby declare that the Project
Phase-2 Report entitled “AUGMENTED REALITY FURNITURE APPLICATION”
done by me under the guidance of Mrs. S. R. SRIVIDHYA, M.E., Ph.D. is
submitted in partial fulfillment of the requirements for the award of Bachelor of
Engineering degree in Computer Science and Engineering.
DATE:20.04.2023
iii
ACKNOWLEDGEMENT
I convey my thanks to Dr. T. Sasikala M.E., Ph. D, Dean, School of Computing, Dr.
L. Lakshmanan M.E., Ph.D., Head of the Department of Computer Science and
Engineering for providing me necessary support and details at the right time during the
progressive reviews.
I would like to express my sincere and deep sense of gratitude to my Project Guide
Mrs. S. R. SRIVIDHYA M.E., Ph.D, for her valuable guidance, suggestions and
constant encouragement paved way for the successful completion of my phase-2
project work.
I wish to express my thanks toall Teaching and Non-teaching staff members of the
Department of Computer Science and Engineering who were helpful in many ways
for the completion of the project.
iv
ABSTRACT
In the modern digital transformation era, providing customers with confidence in the
suitability of the furniture they choose for various situations in which it will be used is
the major problem in online furniture sales. While buying furniture, purchasers must
ensure the furniture's model, size, and color are appropriate for and complement the
space in which they will be put. The flexibility and appropriateness of the furniture
product when placed in a particular area may be seen by prospective buyers with
suitable instruments. For furniture to be sold online correctly, these issues must be
resolved. By using Augmented Reality, this is feasible, to do. When it comes to online
product customization, certain application models in the furniture sector employ
Augmented Reality and mobile technology. A 3D product visualization tool, product
pricing, and an enhanced renderer are all included. For the purpose of creating AR-
based furniture technology, Google AR is used in the development process. It provides
a framework for people or teams to creatively and flexibly address challenging tasks
and issues in order to generate and deliver the best performance. The study is finished
using Android Studio and Google AR services. Based on the results of the studies, it is
advised that this application be enhanced to have a greater degree of performance.
This might be achieved by creating a variety of various creator patterns using barcodes
or QR codes, classifying surfaces like ceilings and walls so that the program can
accurately show 3D things on them, and improving 3D models to fit them in the
projecting space.
v
Chapter
TITLE Page No.
No
ABSTRACT v
LIST OF TABLES ix
LIST OF ABBREVIATIONS ix
INTRODUCTION 1
1.2 Kotlin 3
1.3 XML 3
1
1.4 Augmented Reality 4
1.5 Gradle 5
1.7 Dart 6
LITERATURE SURVEY 7
REQUIREMENTS ANALYSIS 13
3.1 Feasibility Studies/Risk Analysis of the Project 13
3.1.1 Feasibility Studies 13
3
3.1.2 Risk Analysis of the Project 13
3.2 Software Requirements Specification Document 15
3.3 System Use case 16
DESCRIPTION OF PROPOSED SYSTEM 17
IMPLEMENTATION DETAILS 27
5.1.3 Testing 27
5.1.6 Maintenance 28
5
5.1.7 User Feedback 28
5.2 Algorithms 28
5.3 Testing 29
7.1 Conclusion 39
REFERENCES 44
APPENDIX 47
A. SOURCE CODE 47
B. SCREENSHOTS
vii
C. RESEARCH PAPER
viii
LIST OF FIGURES
ix
LIST OF TABLES
LIST OF ABBREVATIONS
ix
CHAPTER 1
INTRODUCTION
India's e-commerce sector continues to grow significantly. But, it's only possible to have
change with growth, thus, for the e-commerce sector to prosper, new technology
developments must be periodically adopted. One such innovation might be the use of
augmented Reality to draw in both current and potential clients. Hence, for the
Furnished software, our team selected the Furniture business as the e- commerce
sector. While there are now just a few well known players in the furniture market, there
remains a a plenty of potential to expand for anybody who can provide something
different with the use of augmented Reality. This application aims to use augmented
Reality to give all of the things shown in their online shop to their customers in the most
efficient use of time and resources. With augmented Reality, one may put objects in
your surroundings, but with virtual Reality, one is transported into the world that the
developer has built. Virtual Reality has been acknowledged as an excellent teaching
approach for industrial people, especially those functioning in harmful circumstances,
despite AR being used in many fields, such as design and modelling. To show product
data, and 3D models, perform feature tracking and determine locations superimposed
on top of a picture of the actual world, the software first analyses photos acquired by
the device's rear camera. It then applies either marker tracking or marker-less tracking
to those photos. Several researchers' descriptions of augmented reality call for the use
of head-mounted displays (HMDs). This study used Augmented Reality as platform
with the three factors to avoid limiting it to a particular technology. To avoid confining
AR to a specific technology. This study defines Augmented Reality as systems with
three qualities. First is the Combination of real with the virtual, second is the Real-Time
interaction and finally, third is the Three-Dimensional Registration. Given the
development status in both fields, it is feasible to forecast and extrapolate the
calculations performed by machine learning algorithms on supercomputers. We can
project the forecast using augmented reality to comprehend the influence on its
surroundings. Without protective gear, anyone can construct a world of their own and
engage in chemical experimentation to fully grasp the possibilities of metals and non-
metals. A restriction of augmented reality is that it can only project information already
there.
1
1.1 ANDROID STUDIO
Unified setting in which you may create applications for any and all Android devices.
To publish code and resource changes to your currently running app without having to
restart your program, use the Apply Changes command. You can construct common
app features and import sample code more easily with the assistance of code templates
and connectivity with GitHub.
Comprehensive collection of testing applications and frameworks. Tools that use lint to
detect issues with performance, usability, version compatibility, and other aspects
Support for C++ as well as NDK Integrated assistance for the Google Cloud Platform,
which makes it simple to combine Google Cloud Messaging and App Engine.
2
1.2 KOTLIN
The World Wide Web Consortium (W3C) introduced "eXtensible Markup Language"
(XML) in 1998 as a solution to the difficulties associated with widespread electronic
publication. XML is an abbreviation for "extensible markup language." Since that
time, it has grown to become one of the formats that is most often used for the
exchange of structured information between individuals, computers, and networked
systems.
The markup language known as XML is considered to be both human- and machine-
readable due to the fact that it can be read and processed by humans as well as by
computer software. XML's principal function, on the other hand, is to store data in a
format that can be quickly read by software programs and that can be easily transferred
between them. XML may be sent across different computer systems or platforms,
locally or over the internet, and the receiver will still be able to understand the data
since its format is defined. This is possible because XML is portable. It is
3
essential to have a solid understanding of the fact that XML does nothing more with the
data than store it, just as a database would. In order to communicate, receive, save, or
display the data, another piece of software will need to be developed.
1.4 AUGMENTED REALITY
The real-time integration of digital information with the surroundings of the user is
known as augmented reality (AR). Users of augmented reality (AR) encounter a real-
world environment with created perceptual information superimposed on top of it, as
opposed to virtual reality (VR), which produces a completely fabricated environment.
With augmented reality, users may get more information or have natural settings
aesthetically altered in some manner.
The main advantage of augmented reality (AR) is that it successfully combines digital
and three-dimensional (3D) elements with how people perceive the actual
environment. AR has several applications, from entertainment to aiding in decision-
making. With a device like a smartphone or glasses, augmented reality (AR) provides
the user with visual elements, music, and other sensory information. In order to provide
a seamless experience where digital information modifies the user's view of the actual
environment, this information is layered onto the device. A component of the natural
world might be hidden or added to by the superimposed information.
Every kind of software may be developed using the superb open-source building tool
known as Gradle. For the purpose of constructing Java-based applications, Gradle is
a build management system written in Groovy. It is a piece of automation software built
using Apache Ant and Apache Maven. This tool can create applications that adhere to
industry standards and supports a number of languages, including Groovy, C++, Java,
Scala, and C. Moreover, Gradle has the ability to manage development activities, from
testing, deployment, and publishing through compilation and packaging.
5
placement of any kind of surface, including inclined, horizontal, and vertical surfaces
like walls, coffee tables, and the ground. The phone can assess the amount of light
present in the surrounding area.
6
CHAPTER 2
LITERATURE SURVEY
This problem statement has been extensively studied over the past 5 years by
researchers and Multi-National Companies try to create Augmented reality which
needs to be optimized efficiently to work. The following research papers help us in
developing the application with minimal disadvantages.
Title: Android Application Development using Android Studio and PHP Framework.
Author: Akshay Singh, Sakshi Sharma and Shashwat Singh.
Year: 2016
The creation of an application for the Android mobile platform is discussed in this
article. Mobile Development has contributed a significant amount of work to a variety
of projects, including video and music players, game applications, picture viewers
and editors, and more. This article focuses mostly on the Linux Version 2.6-based
Android architecture as its primary topic of discussion. It is an open-source operating
system for mobile phones that is based on Linux. To a large extent, the Android
application development process makes use of the Java programming language. The
Android Software Development Kit (SDK) is a collection of application programming
7
interfaces (APIs) and the Android Studio Platform, both of which are tools for
developing software applications.
Title: On the usability of augmented reality devices for interactive risk assessment
Author: Antonio Lanzotti, Giuseppe Di Gironimo, Freanccesco Carbone, Stefano
Papa
Year: 2018
The authors gave findings on people's effectiveness, satisfaction, and efficiency,
which determined the usefulness of AR devices in this study. They noted in their
research that people might utilize AR devices for industrial purposes and that danger
warnings can be shown on AR devices. They concluded that different AR devices are
available, although they have certain restrictions.
8
reload, reactive programming, and a customizable UI toolkit. the paper discusses the
advantages of using Flutter for mobile application development, including faster
development cycles, cross-platform compatibility, and improved performance.
Title: Build your first Android AR using ARCore and Scene form.
Author: Ayusch Jain
Year:2018
In this article, we delve into the world of Android AR i.e., Augmented Reality,
specifically ARCore, Google’s platform for building AR experiences. We have seen
how ARCore is transforming AR application development by abstracting out complex
matrix & vector math and providing us with beautiful APIs for AR development.
9
would enhance the quality of teaching, learning and training and improve its
outcomes. Hence, this research paper examines the latest developments and the
scientific findings in the field of augmented software industry.
The performance of AR applications built using Flutter and ARCore has been shown
to be better than traditional AR development platforms due to the use of Flutter's
rendering engine, which is optimized for mobile devices. Flutter's integration with
various backend systems, including Firebase and GraphQL, makes it easier to build
and deploy AR applications that require server-side processing. AR applications using
Flutter and ARCore have been explored in various domains such as education,
entertainment, marketing, tourism, and e-commerce.
10
There are still several challenges associated with building AR applications using
Flutter and ARCore, including issues related to performance, accuracy, and stability,
as well as the need for specialized expertise in AR development.
This transition may have been brought about either by the fact that most industries
are now catering to a new generation of customers or by the recent breakthroughs
that have been made in technology. As a result, the Furnished application is very
useful in today's culture, which places a premium on the convenience of its
customers.
Overall, the literature survey suggests that AR applications using Flutter and ARCore
offer many benefits, including improved user experience, performance, and
integration with backend systems. However, there are still challenges to be
addressed in the development of AR applications using these technologies.
We can achieve our goal of reducing the amount of time, money, and hassles we
experience by adopting AR. In addition, the many plugins and software development
kits that were used to make the user's purchase experience more streamlined.
11
User Interface: The user interface of AR furniture applications can be challenging
to design effectively. Users must be able to easily select, place, and manipulate virtual
furniture objects in the real world, and the interface must be intuitive and user-friendly.
The standards of flutter should be adhered to, and mobile applications should be
continually updated. A defunct application is one that is not current. AR and VR
research requires significantly more time and money than research in other fields.
Developing Augmented Reality applications is expensive due to the high number of
flaws and problems that arise during the AR creation process.
There is a risk of a privacy breach when using augmented reality applications. During
the assessment phase, the issue of subpar performance must be resolved as soon
as feasible. These are only a few of the open issues that developers confront when
creating augmented reality (AR) furniture applications using Flutter and ARCore. To
overcome these obstacles requires a combination of technical expertise, originality,
and an in-depth comprehension of user requirements and expectations.
12
CHAPTER 3
REQUIREMENT ANALYSIS
Legal Feasibility: Legal feasibility involves analyzing whether the project complies
with the legal requirements and regulations. In this case, the project may need to
comply with data protection laws and regulations, as it involves the collection and
processing of user data.
Technical Risks: There may be technical risks associated with the development of
the AR furniture application using Flutter and ARCore. These risks may include issues
related to compatibility, stability, and performance.
13
Financial Risks: Financial risks may include unexpected expenses, such as the cost
of acquiring additional resources or licenses. Additionally, the project may face risks
associated with revenue generation, such as user adoption rates and advertising
revenue.
Legal Risks: Legal risks may include risks associated with data privacy and security,
copyright infringement, and compliance with local laws and regulations.
Schedule Risks: The project may face schedule risks associated with delays in
development, testing, and deployment. These delays may be caused by technical
issues, resource constraints, or unforeseen circumstances.
The field of augmented reality (AR) is very young, and new methods for the creation
and transmission of permitted material are constantly being developed. It is possible
for sophisticated hackers to replace a user's augmented reality with their own, leading
to others being misinformed or offered misleading information.
Hackers also have the potential to steal network credentials through wearable devices
that are powered by Android. Hackers may use pictures in augmented reality (AR) to
attack firewalls and other vital information by using malware called Image. Even if
there are many kinds of augmented reality gadgets on the market, hackers might
potentially steal people's information by accessing databases or replacing pictures
with malware that takes people's private information and sensitive material. When
we show these very popular AR applications our face, they are able to collect private
biometric information about us. These apps are the same sort that enable the filters
that are used by Snapchat and Facebook. This includes the patterns in our facial
expressions, voice, and even the patterns in our retinas, all of which may be used to
identify us in a unique way.
14
studies and risk analysis provide insight into the potential challenges that may arise
during the development and deployment of the project.
3 Kotlin 1.4.2
4 Gradle 3.1.3
5 Android Studio 4.1 or higher
6 Flutter Student Development Kit 2.2.3 or higher
7 Google ARCore 1.3.2
15
3.3 SYSTEM USE CASE
The use cases represent some of the key functionalities that the AR Furniture
Application can offer to its users. By providing a user-friendly and immersive
experience, the application can make furniture shopping more convenient and
engaging for its users. Here are some potential system use cases for the Augmented
Reality Furniture Application using Flutter and ARCore:
Browse Furniture Catalog: The user can browse through the furniture
catalog and select an item of their interest.
Place Furniture Item: The user can use the AR functionality to place the
selected furniture item in their physical space to visualize how it would look.
Rotate Furniture Item: The user can rotate the furniture item to view it from
different angles and orientations.
View Furniture Details: The user can view detailed information about the
furniture item, such as size, material, and color.
Move Furniture Item: The user can move the furniture item around to see
how it fits in their space.
Share Furniture Item: The user can take a snapshot of the furniture item in
their space and share it on social media platforms.
16
CHAPTER 4
DESCRIPTOIN OF PROPOSED SYSTEM
The proposed system for the Augmented Reality (AR) furniture application using
Flutter and ARCore is an innovative mobile application that allows users to visualize
how furniture items would look in their physical space using their smartphones. The
system will combine the functionality of Flutter, a mobile app development framework,
and ARCore, an augmented reality platform for Android devices.
The application will enable users to select a furniture item from the application's
catalog and place it in their physical environment using their smartphone camera. The
ARCore platform will allow the application to track the user's environment and place
the selected furniture item in a realistic and accurate way. Users can move and rotate
the furniture item to see how it fits in the space and visualize how it would look in
their room.
The proposed system will have a user-friendly interface that allows users to browse
through different categories of furniture items, including sofas, chairs, tables, and
more. The application will also provide detailed information about each item, such
as size, color, and materials used, along with high-quality images and 3D models.
Additionally, the application will have a feature that allows users to take a snapshot
of the augmented furniture item and share it on social media platforms like Facebook
or Instagram. This feature will enable users to get feedback from friends and family
and help them make better decisions when purchasing furniture.
Reduce the time it takes people to make judgments and boost their trust in their
chosen furnishings. Allow the consumer to see the furniture in augmented reality in
their own house before purchasing it. Offering the consumer remote furniture
selection services. The proposed system will also include an online store where users
can purchase the furniture items they like directly from the application. This feature
will provide users with a seamless shopping experience, from visualizing the furniture
in their space to purchasing it in the same application.
17
Overall, the proposed system for the AR furniture application using Flutter and
ARCore will provide users with a unique and immersive experience while shopping
for furniture. The combination of Flutter and ARCore technologies will provide a
seamless and robust platform that can be easily scaled and expanded to
accommodate additional features and functionalities in the future.
The selected methodology or process model for the Augmented Reality Furniture
Application using Flutter and ARCore is Agile Development.
Using the use of the Unity 3D program, we have constructed a prototype. Because of
this, out-of-memory (OOM) faults may occur in mobile devices, and debugging may
become difficult. Since there is no provision of source codes, it is difficult to locate,
identify, and rectify performance problems. While working on multi-platform apps,
switching build targets entails re-importing everything, which is time consuming and
demands more effort. In addition, there is a deficiency in the availability of high-
polygon 3D elements inside the Unity game engine. Based on above outcomes we
have switched to 2nd Methodology.
By using the Agile development methodology, the development team for the AR
Furniture Application can quickly respond to changing requirements or customer
needs, ensuring that the final product is both high quality and meets the end-users'
18
needs. Additionally, the iterative and incremental nature of the Agile approach allows
the team to deliver working software in short timeframes, enabling the stakeholders
to see progress and provide feedback early on in the development process. The agile
methodology involves breaking down the development process into small iterations
or sprints, each lasting one to four weeks. At the beginning of each sprint, the team
holds a planning meeting to identify the goals and objectives for that sprint. The team
then develops the necessary features and functionalities during the sprint, tests them,
and integrates them into the larger system.
The development of our Augmented Reality Furniture Application was carried out with
the assistance of ARCore. It is able to comprehend the location of the users in relation
to their surroundings and follow their movement as they navigate. In general, the
second technique, which is fully coupled with Google ARCore, has a superior user
interface (UI) that is materialistic and is capable of competing with other demand-
based apps on the market. Google ARCore is capable of implementing improved 3D
object rendering with improved light placement and improved object tracking.
19
4.2 ARCHITECTURE/OVREALL DESIGN OF PROPOSED SYSTEM
User Interface The user interface designed for this application uses a modern e-
commerce layout. Inter font from google fonts is used across all the pages - Login,
Home, Product details, etc. The UI is interactive enough for customers to easily
navigate through the conversion funnel. Database The data concerning the users, the
transactions, and the products need to be stored in a consistent database. Thus, in
the case of the Furnished application, the SQLite database is chosen. SQLite is easily
compatible with mobile applications and is also free for use if under some standard
limits of data.
20
This is also perfect for testing the various segments of the application. Scene form
Consists of the several scenes from dependencies added to the project, namely
scene form core, plugin, UX & assets. This works with Google’s ARCore and builds
a model at runtime instead of creating a separate asset file (.OBJ) for each model.
ARCore To display the model through ARCore, several steps are followed. A brief
understanding of all the steps is given below.
21
applications for both Android and iOS platforms. The user interface of the application
consists of several pages - A home page, a Categories page, a products page, and a
product details page. The UI has been created considering the modern design
requirements and the appeal needed for the application’s customer base.
Motion Tracking: ARCore uses the device's camera and sensors to track its
position and movement in the real world.
Environmental Understanding: ARCore can detect and understand the real-
world environment, including flat surfaces and the location of objects.
Light Estimation: ARCore can estimate the lighting conditions in the real
world and use that information to light virtual objects in the AR experience.
Anchors: ARCore allows developers to place virtual objects in the real world
and anchor them to a specific location, so they appear to stay in place as the
user moves around.
Augmented Images: ARCore can recognize and track specific images, such
as posters or product packaging, and use them as a trigger for AR experiences.
In addition to the ARCore SDK, developers would also use the Android framework
to build the augmented reality furniture application. This would include using Android
Studio to write and debug the code, as well as using various Android APIs and
libraries to implement the features of the application.
22
The Android Emulator provides a virtual device that can run an Android operating
system. The virtual device emulates the hardware and software of a real Android
device, including the processor, memory, storage, and display. Developers can use
the emulator to test their applications on different versions of Android, screen sizes,
and hardware configurations.
Different Android versions: Developers can create virtual devices that run
different versions of the Android operating system, allowing them to test their
applications on various platforms.
Screen Sizes: Developers can create virtual devices with different screen
sizes and resolutions, which is useful for testing how an application looks on
different screens.
Keyboard and Input: The emulator provides a virtual keyboard and supports
various input methods, including touch, keyboard, and mouse.
Debugging: Developers can use the emulator to test and debug their
applications, including checking log messages and using breakpoints.
While the Android Emulator is a useful tool for testing Android applications, it can
be slow and resource-intensive, particularly when running on older computers.
However, it remains an essential tool for Android developers who need to test their
applications on a wide range of devices and configurations.
23
establish project scope, and create a project charter.
Project Execution: Assign tasks to team members, monitor progress, and track
the project against the plan. Manage changes to the project scope, schedule, and
budget. Ensure that project milestones are met on time and within budget.
Project Monitoring and Control: Monitor project progress and performance. Identify
and manage changes to the project scope, schedule, and budget. Identify potential
risks and take corrective actions. Conduct project reviews and ensure that quality
standards are met.
Project Closure: Verify that all project deliverables have been completed and
accepted by the stakeholders. Conduct a project review to identify lessons learned
and best practices. Update project documentation, close out project accounts, and
archive project records.
Quality Standards:
User Interface Design meets industry standards
Application performance meets requirements
Bug-free application with minimal defects
24
Application meets stakeholder expectations
25
services. It's important to consider factors such as scalability, security, and
uptime.
Documentation: Develop comprehensive documentation that outlines how
the application works, how to use it, and how to troubleshoot issues.
Training: Develop training materials for end-users and support staff to ensure
that everyone knows how to use the application and can provide support.
Support: Establish a support process that includes a help desk, support
staff, and escalation procedures for resolving issues.
Monitoring: Implement a monitoring system to track application performance,
usage, and other metrics. This can help identify issues and opportunities for
improvement.
Maintenance: Develop a maintenance plan that includes regular updates, bug
fixes, and security patches.
User Feedback: Establish a system for gathering user feedback and
incorporating it into the application's development roadmap.
26
CHAPTER 5
IMPLEMENTATION DETAILS
5.1.3 TESTING
Perform thorough testing of the application to ensure that it works as expected, is
user-friendly, and is stable. This may involve unit testing, integration testing, and user
acceptance testing.
27
5.1.6 MAINTAINENCE
Provide ongoing maintenance and support for the application, including bug fixes,
security patches, and updates to keep up with changes to Flutter and ARCore.
5.2 ALGORITHM
The Development of Augmented Reality Furniture Application requires an algorithm
to process and analyze the data collected from sensors, surroundings and camera.
The image processing algorithm is used to extract information from the images
captured by the sensors and cameras. This algorithm is used for the purpose of
Placing 3D Objects in real-time. The recommender algorithm in the flutter application
tracks frequent furniture viewed by the user and recommends the furniture to the user
directly.
Step 1: Import necessary packages for AR functionality, such as the ARCore and
ARKit packages.
Step 2: Set up the initial screen for the AR furniture application, including a camera
preview and a 3D object to display in the AR view.
Step 3: Load 3D models of furniture objects into the application, and store them in
a local database or an API endpoint.
Step 4: Implement a feature for selecting and placing furniture objects in the AR view.
Users can select the desired furniture model from a list of available objects and
drag and drop it into the AR scene.
Step 5: Implement a feature for scaling and rotating furniture objects in the AR
view. Users should be able to resize the furniture model by using pinch-to-zoom
28
gestures and rotate it by using two fingers.
Step 6: Add a feature for saving and loading AR scenes. Users should be able to
save their current AR scene, including the furniture objects and their positions, and
reload it at a later time.
Step 7: Implement a feature for sharing AR scenes with other users. Users should
be able to export their AR scenes as 3D files or share them with other users through
a messaging or social media platform.
Step 8: This is a general structure and guideline for building an AR furniture
application in Flutter. However, the implementation of each of these features may
require further details and specifications, and the final algorithm may differ depending
on the specific requirements and functionalities of the application.
5.3 TESTING
The testing plan for the Augmented Reality Furniture Application would involve
several steps. The testing plan would involve both manual and automated testing,
and various testing tools and frameworks would be used to ensure the quality and
reliability of the application.
In the context of the Augmented Reality Furniture Application using Flutter and
ARCore, unit testing would involve testing each component of the application
independently, including the user interface, AR features, and database integration.
This would involve writing test cases for each unit of code and executing them to
ensure that the code behaves as expected.
29
process, which can reduce the time and cost required for fixing them.
Improved Code Quality: Unit testing encourages developers to write modular
and reusable code, which can lead to improved code quality and
maintainability.
Faster Development: Automated unit testing can help reduce the time and
effort required for testing, which can enable developers to release new
features and updates more quickly.
In general, doing integration testing is an important step in assuring the quality and
dependability of the Augmented Reality Furniture Application that is built using Flutter
and ARCore. It guarantees that the many components of the application operate
together in a smooth manner to deliver a wonderful experience for the user.
30
5.3.3 BLACK BOX TESTING
Black box testing is a software testing technique that involves testing the functionality
of an application without knowledge of its internal workings. For the Augmented Reality
Furniture Application using Flutter and ARCore, black box testing can help ensure that
the application is functioning as expected from the user's perspective. Here are some
points to consider for black box testing.
White box testing is an important testing technique that can help ensure that the
31
code behind the Augmented Reality Furniture Application using Flutter and ARCore
is functioning correctly and efficiently, and that it meets the requirements specified
in the project plan.
32
CHAPTER 6
RESULT AND DISCUSSION
Adopting augmented reality technology, the Augmented Reality Furniture Application
that was built with Flutter and ARCore contains a number of features that enable
users to view furniture goods in real-world surroundings. These capabilities may be
accessed by utilizing the application. A furniture recommender system is also included
in the program. This system makes product suggestions to users based on their tastes
and their past experiences with the application.
The system was tested using both manual and automated testing methods to ensure
its functionality, reliability, and performance. The testing process involved unit testing,
integration testing, and system testing, which helped to identify and fix defects, improve
functionality, and enhance user experience.
The performance testing of the application showed that it was able to handle a large
number of users and function efficiently under various network and device conditions.
The application's compatibility was also tested with different devices, operating
systems, and browsers, ensuring that it worked seamlessly across all platforms.
Overall, the Augmented Reality Furniture Application using Flutter and ARCore
demonstrated significant potential in revolutionizing the way customers shop for
furniture products. The application's ability to provide a personalized and immersive
shopping experience to users can help businesses to increase sales and improve
customer engagement. Future work can focus on expanding the application's features
and capabilities to include more interactive and immersive experiences for users.
Application Homepage
33
Fig. 6.1 Application Homepage
The homepage of the Augmented Reality Furniture Application using Flutter and
ARCore is designed to provide a visually appealing and user-friendly interface for
users. It features a simple yet elegant design that highlights the application's key
features and functionalities.
At the top of the homepage, there is a navigation menu that allows users to access
different sections of the application, including the furniture catalog, the furniture
recommender system, and the user profile section. The menu also includes a search
bar that enables users to search for specific furniture products or [Link] central
section of the homepage is dedicated to showcasing the latest furniture products and
promotions. Users can browse through different categories of furniture products, such
as sofas, chairs, tables, and beds, and select products to view more information and
details.
34
providing users with personalized recommendations based on their preferences and
previous interactions. Users can also save their favorite furniture products and view
their browsing history and order status in the user profile section.
Product Page
The product page of the Augmented Reality Furniture Application using Flutter and
ARCore is designed to provide users with comprehensive information and details about
each furniture product. The page is structured to showcase the product image, pricing,
description, and other relevant details in an organized and visually appealing manner.
The product page also includes a detailed product description that provides users
with information about the materials, dimensions, and other features of the product.
35
There is also a section that displays customer reviews and ratings for the product,
helping users make informed purchasing decisions. One of the key features of the
product page is the Augmented Reality View option, which allows users to visualize the
product in their own space using the AR technology. Users can view the product from
different angles and adjust its size and placement to fit their specific needs and
preferences.
Overall, the product page of the Augmented Reality Furniture Application is designed
to provide users with a comprehensive and engaging shopping experience, with
detailed information, customer reviews, and the ability to visualize the product in their
own space using AR technology.
Object Placement
The furniture in AR mode feature of our augmented reality furniture application allows
36
users to view and interact with virtual furniture in their real-life environment. By utilizing
AR technology, users can see how different furniture pieces would look and fit in their
home before making a purchase.
To use this feature, users simply select a furniture item from the app's catalog and
activate AR mode. The app then utilizes the camera on their device to generate a 3D
model of the furniture and superimpose it onto their surroundings. Users can then move
the furniture around, adjust its size and orientation, and view it from different angles to
get a sense of how it would look in their space.
This feature is especially useful for users who are hesitant about purchasing furniture
online without seeing it in person first. By using our app's AR mode, they can make
more informed decisions about which pieces to buy and how they would fit in their
home.
Augmented Object comparison
Our augmented reality furniture application takes the furniture object comparison
feature to the next level by allowing users to compare 3D models of furniture objects
37
with real-life furniture pieces they already have in their home. This feature is particularly
useful for users who are trying to decide whether a new furniture piece will match the
existing decor or complement the style of their other furniture.
To use this feature, users can activate AR mode and select the furniture object they
are interested in from the app's catalog. They can then place the 3D model of the object
next to a real-life furniture piece in their home, and adjust the size and orientation of
the 3D model to match the real object. This allows users to see how the new furniture
piece would look in their space and whether it would complement their existing
furniture.
This feature provides a more immersive and realistic experience for users, allowing
them to make more informed decisions about which furniture pieces to purchase. It also
saves users the hassle of purchasing furniture pieces that don't match their existing
decor or don't fit in their space. Overall, this feature helps users make better decisions
and creates a more seamless shopping experience.
38
CHAPTER 7
CONCLUSION
7.1 CONCLUSION
In conclusion, the augmented reality furniture application developed using Flutter and
ARCore provides an interactive and immersive experience for users to visualize and
compare furniture in a real-world environment. The application has been developed
and tested using an iterative software development process, and the implementation
has been validated through various testing methods such as unit testing, integration
testing, and performance testing.
Customers who are unclear about which pieces of furniture would be the most suitable
for their requirements might benefit tremendously from using the application's furniture
recommender function. The program is able to provide product recommendations for
the consumer based on their interests by using machine learning algorithms, which
results in a more individualized and enjoyable shopping experience.
Through the use of black box testing, white box testing, unit testing, integration testing
and functional testing, the application was able to achieve seamless integration and
smooth performance. This ensures that customers can use the application without
encountering any technical difficulties.
Overall, the augmented reality furniture application has the potential to revolutionize
the way we shop for furniture, providing a convenient and immersive experience for
customers.
Enhanced User Interface: Future work can focus on improving the user
interface of the application, making it more intuitive and user-friendly. This can
be achieved through the implementation of more interactive and engaging
features, such as animations and sound effects.
39
Advanced Object Detection and Recognition: The application can be further
improved by implementing more advanced object detection and recognition
algorithms. This can help to improve the accuracy and reliability of the
application, enabling it to better recognize and track objects in real-time.
Integration with Other Technologies: The application can be integrated with
other technologies, such as artificial intelligence, to enhance its functionality and
provide a more comprehensive user experience. For instance, AI can be used
to analyze user behavior and preferences, providing personalized
recommendations for furniture items.
Multi-Platform Support: Future work can focus on developing the application
for multiple platforms, such as iOS and web browsers. This can help to expand
the reach of the application and make it more accessible to a wider range of
users.
Collaborative Furniture Planning: Future work can also focus on developing
collaborative furniture planning features, allowing users to work together on
creating and designing their ideal living spaces. This can be achieved through
the implementation of features such as real-time chat and collaboration tools,
enabling users to work together seamlessly and efficiently.
Advanced gesture recognition: Advanced gesture recognition techniques
could be used to recognize more complex gestures like hand movements, which
could be used to control the AR application and interact with the virtual furniture.
3D model customization: The AR application could allow users to customize
their 3D furniture models by changing colors, textures, and materials, giving
them more control over the design process.
40
stability of tracking can be affected by factors such as lighting conditions,
reflective surfaces, and camera quality. Further research can be done to
improve the robustness and reliability of object tracking.
Developing more efficient rendering techniques: Rendering 3D models in
real-time on mobile devices can be resource-intensive, especially when dealing
with complex models and textures. To improve performance and reduce latency,
researchers can explore new rendering techniques such as real-time ray tracing,
occlusion culling, and texture streaming.
Enhancing user interactions with virtual objects: While ARCore allows
users to place and manipulate virtual objects in the real world, there is still a
lot of room for improvement in terms of user experience and interaction design.
Future research can focus on developing new interaction paradigms and tools
for users to engage with virtual objects more intuitively and seamlessly.
Integrating machine learning and computer vision: Machine learning and
computer vision techniques can be used to enhance the accuracy and
robustness of object recognition and tracking in AR applications. Future
research can explore how to integrate these techniques with ARCore and Flutter
to enable more advanced features such as automatic object recognition,
gesture recognition, and scene reconstruction.
Improving cross-platform compatibility: While Flutter allows for easy
development of cross-platform applications, there are still challenges when it
comes to implementing AR features across different operating systems and
devices. Future research can focus on developing new tools and standards for
cross-platform AR development, as well as exploring new ways to optimize AR
performance on different devices.
41
specifications, which may cause hardware compatibility issues. To address this
issue, developers need to test the application on a variety of devices to ensure
it works on most devices.
Performance Issues
Augmented reality furniture application heavily relies on the processing power
of the device, and there may be performance issues such as slow rendering or
laggy animations. Developers need to optimize the application's performance by
implementing efficient algorithms and code.
User Experience
AR furniture application must provide an intuitive and seamless user experience
to attract and retain users. Developers must ensure that the application has a
user-friendly interface and the AR experience is smooth and easy to use.
42
Compatibility with Different OS Versions
The application must work seamlessly on different operating systems, including
different versions of Android and iOS. Developers must test the application on
different OS versions to ensure it works correctly and optimize the application's
performance.
Scalability
The application must be designed to handle an increasing number of users and
traffic. Developers must ensure that the application's architecture can scale
efficiently and handle the additional traffic without affecting the user experience.
43
REFERENCES
1. Nowacki, Paweł & Woda, Marek. (2020). Capabilities of ARCore and ARKit
Platforms for AR/VR Applications. 10.1007/978-3-030-19501- 4_36.
2. CLOUD -COMPUTING: An Analysis of Threats and Securities . Sakshi Sharma
, Akshay Singh.2015 .2,s.l.: RJSET,2015, RESEARCH JOURNAL OF
SCIENCE ENGINEERING AND TECHNOLOGY ,Vol.5 [Link]
3. G. Eason, B. Noble, and I. N. Sneddon, “On certain integrals of Lipschitz- Hankel
type involving products of Bessel functions,” Phil. Trans. Roy. Soc. London, vol.
A247, pp. 529–551, April 1955.
4. Al Omran, Yasser & Abdall-Razak, Ali & Sohrabi, Catrin & Borg, Tiffanie-Marie
& Nadama, Hayat & Ghassemi, Nader & Oo, Khine & Ghanem, Ali. (2019).
Use of Augmented Reality in Reconstructive Microsurgery: A Systematic
Review and Development of the Augmented Reality Microsurgery Score.
Journal of Reconstructive Microsurgery. 36. 10.1055/s-0039-3401832.
5. Kola, Vasista. (2022). Augmented Reality Vs. Virtual Reality. 03. 1-4.
6. Alzahrani, Nouf. (2020). Augmented Reality: A Systematic Review of Its Benefits
and Challenges in E-Learning Contexts. Applied Sciences. 10. 5660.
10.3390/app10165660.
7. Viyanon, Waraporn et al. “AR Furniture: Integrating Augmented Reality
Technology to Enhance Interior Design using Marker and Markerless tracking.”
IIP'17 (2017).
8. Fox, Dylan & Li, Alyssa & Pandey, Anu & Kar, Rohan & Singh, Rajandeep.
(2019). Augmented Reality for Visually Impaired People (AR for VIPs).
10.13140/RG.2.2.30196.78723.
9. S. J. J. Kim, "A User Study Trends in Augmented Reality and Virtual Reality
Research: A Qualitative Study with the Past Three Years of the ISMAR and
IEEE VR Conference Papers," 2012 International Symposium on Ubiquitous
Virtual Reality, Daejeon, Korea (South), 2012, pp. 1-5, doi:
10.1109/ISUVR.2012.17.
10. Li, Xiao & Xu, Bo & Teng, Yue & Ren, Yi-tian & Hu, Zhu-min. (2014).
Comparative research of AR and VR technology based on user experience.
International Conference on Management Science and Engineering - Annual
Conference Proceedings. 1820-1827. 10.1109/ICMSE.2014.6930456.
11. Schaffernak, Harald & Mösl, Birgit & Vorraber, Wolfgang & Koglbauer, Ioana.
44
(2020). Potential Augmented Reality Application Areas for Pilot Education: An
Exploratory Study. Education Sciences. 10. 86. 10.3390/educsci10040086.
12. A. Correia and V. Conceição, "Survey on Augmented Reality Technologies for
Naval Training," 2019 14th Iberian Conference on Information Systems and
Technologies (CISTI), Coimbra, Portugal, 2019, pp. 1-6, doi:
10.23919/CISTI.2019.8760962.
13. Bimber, & Oliver, & Raskar, & Ramesh,. (2005). Spatial Augmented Reality
Merging Real and Virtual Worlds. 10.1201/b10624.
14. Klein, Georg, and David Murray. "Parallel tracking and mapping for small AR
workspaces." In 2007 6th IEEE and ACM international symposium on mixed and
augmented reality, pp. 225-234. IEEE, 2007.
15. H. Kato, M. Billinghurst, I. Poupyrev, K. Imamoto and K. Tachibana, "Virtual
object manipulation on a table-top AR environment," Proceedings IEEE and
ACM International Symposium on Augmented Reality (ISAR 2000), Munich,
Germany, 2000, pp. 111-119, doi: 10.1109/ISAR.2000.880934.
16. Sahu, C.K., Young, C. and Rai, R., 2021. Artificial intelligence (AI) in augmented
reality (AR)-assisted manufacturing applications: a review. International Journal
of Production Research, 59(16), pp.4903-4959.
17. XIA Bang-gui. A Mobile learning system based on Android [J]. Journal of
Xihua University (Natural Science), 2011, 30 (5): 81-84.
18. Mehta, Soham & Jain, Pratish & Vora, Aayushi & Joshi, Abhijit & Dalvi, Harshal.
(2017). Augmented Reality Books: An Immersive Approach to Learning.
19. ALHARBI, Basma & Aljojo, Nahla & Alshutayri, Areej & Banjar, Ameen &
ZAINOL, Azida & ALHARBI, Asmaa & ALGHANMI, Sanaa & MANSOUR, Shaza
& ALSHEHRI, Mram. (2021). The design and implementation of an interactive
mobile Augmented Reality application for an improved furniture shopping
experience. Revista Română de Informatică și Automatică. 31. 69- 80.
10.33436/v31i3y202106.
20. Reuksupasompon, Peeranut & Aruncharathorn, Maytichai & Vittayakorn, Sirion.
(2018). AR Development For Room Design. 1-6.
10.1109/JCSSE.2018.8457343.
21. R. Aggarwal and A. Singhal, "Augmented Reality and its effect on our life,"
45
2019 9th International Conference on Cloud Computing, Data Science &
Engineering (Confluence), Noida, India, 2019, pp. 510-515, doi:
10.1109/CONFLUENCE.2019.8776989.
22. V. Interrante, T. Höllerer and A. Lécuyer, "Virtual and Augmented Reality," in
IEEE Computer Graphics and Applications, vol. 38, no. 2, pp. 28-30, Mar./Apr.
2018, doi: 10.1109/MCG.2018.021951630.
23. L. Abazi-Bexheti, A. Kadriu and M. Apostolova, "Research on VR/AR integration
in education," 2022 45th Jubilee International Convention on Information,
Communication and Electronic Technology (MIPRO), Opatija, Croatia, 2022,
pp. 563-567, doi: 10.23919/MIPRO55190.2022.9803398.
46
Appendix:
A Source Code
buildscript {
ext {
compiler_version = '1.2.0'
compose_version = '1.2.1'
nav_version = "2.5.1"
live_data_version = "2.5.1"
retrofitVersion = "2.9.0"
okHttpVersion = "4.9.1"
dagger_version = "2.43.2"
coil_version = "2.1.0"
constraint_layout = "1.0.1"
accompanist_version = "0.26.1-alpha"
}
dependencies {
classpath '[Link]:gradle:7.1.0-alpha05'
classpath "[Link]:kotlin-gradle-plugin:1.5.10"
classpath '[Link]:hilt-android-gradle-plugin:2.43.2'
}
}
plugins {
id '[Link]' version '7.2.1' apply false
id '[Link]' version '7.2.1' apply false
id '[Link]' version '1.7.0' apply false
}
import [Link]
47
import [Link].AndroidJUnit4
import [Link]
import [Link]
import [Link].*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation]([Link]
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = [Link]().targetContext
assertEquals("[Link]", [Link])
}
}
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="[Link]
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
package `in`.[Link]
import [Link]
import [Link]
@Parcelize
data class FurnitureModel(
48
var name: String? = null,
val drawable: Int = 0,
val link: String? = null,
val price : Int? = 0,
val description : String ? = "",
val type:String? = ""
) : Parcelable
package `in`.[Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
49
import [Link]
import [Link]
import [Link]
import [Link]
@Composable
fun FurtureTheme(content: @Composable () -> Unit) {
LightColorPalette
MaterialTheme(
colors = colors,
typography = Typography,
shapes = Shapes,
content = content
)
}
package `in`.[Link]
import `in`.[Link].R
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
50
val Typography = Typography(
h1 = TextStyle(
fontFamily = gilroy(),
fontWeight = [Link],
fontSize = [Link],
color = colorBlack
),
body1= TextStyle(
fontFamily = gilroy(),
fontWeight = [Link],
fontSize = [Link],
color = colorBlack
),
body2 = TextStyle(
fontFamily = gilroy(),
fontWeight = [Link],
fontSize = [Link],
color = colorSecondaryText
),
defaultFontFamily = gilroy()
)
import [Link]
import [Link]
@HiltAndroidApp
51
class App : Application() {
override fun onCreate() {
[Link]()
instance = this
}
companion object {
lateinit var instance: App
}
}
package `in`.[Link]
import `in`.[Link].R
import `in`.[Link]
import [Link]
52
fun getChairs() = listOf(
FurnitureModel(
"Modern Chair",
[Link].chair_grey,
price = randomPrice(100, 200),
description = randomDescription("Modern Chair"),
link = "[Link]
Templates/master/Resources/chair/arm_chair furniture/[Link]",
type = "chair"
),
FurnitureModel(
"Manchester Chair",
[Link].chair_old,
price = randomPrice(100, 200),
description = randomDescription("Manchester Chair"),
link = "[Link]
Templates/master/Resources/the_matrix_red_chesterfield_chair/[Link]",
type = "chair"
),
FurnitureModel(
"Orange Sheen Chair",
[Link].chair_orange,
price = randomPrice(100, 200),
description = randomDescription("Orange Sheen Chair"),
link = "[Link]
Models/master/2.0/SheenChair/glTF/[Link]",
type = "chair"
),
FurnitureModel(
"Classic Chair",
[Link].chair_wood,
price = randomPrice(100, 200),
description = randomDescription("Classic Chair"),
link = "[Link]
53
Templates/master/Resources/chair/furniture_for_real-
time_visualization_engine/[Link]",
type = "chair"
)
)
54
FurnitureModel(
"Chesterfield Sofa",
[Link].sofa5,
price = randomPrice(400, 1000),
description = randomDescription("Chesterfield Sofa"),
type = "sofa",
link = "[Link]
Templates/master/Resources/sofa_02_4k.gltf/sofa_02_4k.gltf"
),
FurnitureModel(
"Modern Sofa",
[Link].sofa6,
price = randomPrice(400, 1000),
description = randomDescription("Modern Sofa"),
type = "sofa",
link = "[Link]
Templates/master/Resources/sofa_6/[Link]"
),
FurnitureModel(
"Lawson Sofa",
[Link].sofa8,
price = randomPrice(400, 1000),
description = randomDescription("Lawson Sofa"),
type = "sofa",
link = "[Link]
Templates/master/Resources/sofas/sofa/[Link]"
)
)
55
fun randomPrice(lowerPrice: Int, upperPrice: Int): Int {
return (lowerPrice..upperPrice).random()
}
56
fun getOffices() = listOf(
FurnitureModel(
"Gaming Chair",
[Link],
price = randomPrice(50, 80),
description = randomDescription("Gaming Chair"),
type = "office",
link = "[Link]
Templates/master/Resources/office%20essentials%20and%20cabinets/gaming_chai
r_1-_black/[Link]"
),
FurnitureModel(
"Classic chair ",
[Link].office_chair,
price = randomPrice(50, 80),
description = randomDescription("Classic chair "),
type = "office",
link = "[Link]
Templates/master/Resources/office%20essentials%20and%20cabinets/office_chair
%20(1)/[Link]"
),
FurnitureModel(
"Desk",
[Link].office_desk,
price = randomPrice(50, 80),
description = randomDescription("Desk"),
type = "office",
link = "[Link]
Templates/master/Resources/office%20essentials%20and%20cabinets/modern_tabl
e_set/[Link]"
)
)
57
fun getTables() = listOf(
FurnitureModel(
"Table",
[Link].table1,
price = randomPrice(50, 80),
description = randomDescription("Table"),
type = "table",
link = "[Link]
Templates/master/Resources/table/mahogany_table/[Link]"
),
FurnitureModel(
"Wooden Table",
[Link].table2,
price = randomPrice(50, 80),
description = randomDescription("Wooden Table"),
type = "table",
link = "[Link]
Templates/master/Resources/office%20essentials%20and%20cabinets/simple_desk
_free/[Link]"
),
FurnitureModel(
"Metal Table",
[Link].table3,
price = randomPrice(50, 80),
description = randomDescription("Metal Table"),
type = "table",
link = "[Link]
Templates/master/Resources/table/industrial_table/[Link]"
),
FurnitureModel(
"Classic Table",
[Link].table4,
price = randomPrice(50, 80),
description = randomDescription("Classic Table"),
58
type = "table",
link = "[Link]
Templates/master/Resources/table/victorian_coffee_table/[Link]"
)
)
import `in`.[Link]
import `in`.[Link]
import `in`.[Link]
import `in`.[Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
59
import [Link]
import [Link]
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
[Link](savedInstanceState)
setContent {
FurtureTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = [Link](),
color = [Link]
){
val navController = rememberNavController()
val viewModel = hiltViewModel<SharedViewModel>()
NavHost(navController = navController, startDestination = "splash") {
composable("home") { HomeScreen(navController, viewModel) }
composable("detail") {
DetailScreen(viewModel)
}
composable("splash") {
SplashScreen(navController = navController)
}
}
}
}
}
}
}
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name!")
60
}
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
FurtureTheme {
Greeting("Android")
}
}
package `in`.[Link]
import `in`.[Link]
import [Link]
import [Link]
import [Link]
@HiltViewModel
class SharedViewModel @Inject constructor() : ViewModel() {
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
xmlns:tools="[Link]
package="[Link]">
<application
android:allowBackup="true"
android:name=".[Link]"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
61
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/[Link]"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/[Link]">
<intent-filter>
<action android:name="[Link]" />
</manifest>
package `in`.[Link]
import [Link]
import [Link].*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation]([Link]
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
62
}
plugins {
id '[Link]'
id '[Link]'
id 'kotlin-kapt'
id '[Link]'
id 'kotlin-parcelize'
}
android {
compileSdk 33
defaultConfig {
applicationId "[Link]"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "[Link]"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('[Link]'),
'[Link]'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
63
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion compiler_version
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation '[Link]:core-ktx:1.8.0'
implementation "[Link]:ui:$compose_version"
implementation "[Link]:material:$compose_version"
implementation "[Link]:constraintlayout-
compose:$constraint_layout"
implementation "[Link]:ui-tooling-preview:$compose_version"
implementation '[Link]:lifecycle-runtime-ktx:2.5.1'
implementation '[Link]:activity-compose:1.5.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation '[Link]:junit:1.1.3'
androidTestImplementation '[Link]:espresso-core:3.4.0'
androidTestImplementation "[Link]:ui-test-
junit4:$compose_version"
debugImplementation "[Link]:ui-tooling:$compose_version"
64
debugImplementation "[Link]:ui-test-manifest:$compose_version"
// Coil
implementation("[Link]-kt:coil-compose:$coil_version")
implementation "[Link]:lifecycle-livedata-ktx:$live_data_version"
// dagger -hilt
implementation "[Link]:hilt-navigation-compose:1.0.0"
implementation "[Link]:hilt-android:$dagger_version"
kapt "[Link]:hilt-compiler:$dagger_version"
//Retrofit
implementation "[Link].retrofit2:retrofit:$retrofitVersion"
implementation "[Link].retrofit2:converter-gson:$retrofitVersion"
implementation "[Link].okhttp3:logging-interceptor:$okHttpVersion"
implementation "[Link].retrofit2:converter-scalars:$retrofitVersion"
implementation "[Link]:accompanist-navigation-
animation:$accompanist_version"
implementation "[Link]:accompanist-
webview:$accompanist_version"
implementation("[Link]:palette-v7:28.0.0")
// dagger -hilt
implementation "[Link]:hilt-navigation-compose:1.0.0"
implementation "[Link]:hilt-android:$dagger_version"
kapt "[Link]:hilt-compiler:$dagger_version"
def nav_version = "2.5.1"
implementation "[Link]:navigation-compose:$nav_version"
implementation '[Link]-telegram-bot:telegram:6.0.7'
}
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
65
dependencyResolutionManagement {
[Link](RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url "[Link] }
}
}
[Link] = "Furture"
include ':app'
[
{
"repositoryUrl": "[Link]
"artifacts": [
{
"groupId": "junit",
"artifactId": "junit",
"annotations": {
"[4.0, 5.0)": {
"groupId": "[Link]",
"artifactId": "junit",
"version": "4.12-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "hamcrest-core",
"annotations": {
"[1.0, 1.3)": {
"groupId": "[Link]",
"artifactId": "hamcrest-core",
"version": "1.3-an1"
}
66
}
},
{
"groupId": "[Link]",
"artifactId": "jackson-core",
"annotations": {
"[2.0, 3.0)": {
"groupId": "[Link]",
"artifactId": "jackson-core",
"version": "2.9.6-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "jackson-databind",
"annotations": {
"[2.0, 3.0)": {
"groupId": "[Link]",
"artifactId": "jackson-databind",
"version": "2.9.6-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "miglayout-swing",
"annotations": {
"[5.0, 5.1]": {
"groupId": "[Link]",
"artifactId": "miglayout-swing",
"version": "5.1-an1"
}
}
67
},
{
"groupId": "[Link]",
"artifactId": "netty-buffer",
"annotations": {
"[4.0, 4.2)": {
"groupId": "[Link]",
"artifactId": "netty-buffer",
"version": "[Link]-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "netty-common",
"annotations": {
"[4.0, 4.2)": {
"groupId": "[Link]",
"artifactId": "netty-common",
"version": "[Link]-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "netty-resolver",
"annotations": {
"[4.0, 4.2)": {
"groupId": "[Link]",
"artifactId": "netty-resolver",
"version": "[Link]-an1"
}
}
},
68
{
"groupId": "[Link]",
"artifactId": "netty-transport",
"annotations": {
"[4.0, 4.2)": {
"groupId": "[Link]",
"artifactId": "netty-transport",
"version": "[Link]-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "picocontainer",
"annotations": {
"[1.0, 1.2]": {
"groupId": "[Link]",
"artifactId": "picocontainer",
"version": "1.2-an1"
}
}
},
{
"groupId": "[Link]",
"artifactId": "snakeyaml",
"annotations": {
"[1.20, 1.3)": {
"groupId": "[Link]",
"artifactId": "snakeyaml",
"version": "1.23-an1"
}
}
}
]
69
B. SCREENSHOTS
70
71
72
73
74
75
76
77
C. RESEARCH PAPER
78
79
80
81