Thư viện load ảnh Glide

Một phần của tài liệu Xây dựng ứng dụng tìm phòng trên nền tảng android (Trang 116)

Hình 4.24. Thư viện load ảnh Glide

104

Glide là gì?

Thư viện Glide được phát hành bởi Bumptech dùng để load ảnh cho các ứng dụng android. Tại Thái Lan, Google giới thiệu Glide tại một hội nghị chỉ dành cho các Google Development và được Google đề xuất. Glide là một thư viện giúp các ứng dụng android load ảnh nhanh chóng và mượt mà hơn. Cách thêm thư viện ảnh Glide vào phần mềm Android studio.

Bước 1: Mở Android studio > project > build.gradle.

Bước 2: Thêm thư viện ảnh vào dòng cuối cùng của thư mục build.gradle.

Hình 4.26. Thêm thư viện ảnh glide vào Android studio

(Nguồn: Android Studio)

Bước 3: Tạo một java class đặt tên là GlideUnits.

Hình 4.25. Truy cập build.gradle trong Android studio

105

Hình 4.27. Tạo new java class

(Nguồn: Android Studio)

Bước 4: Cách sử dụng Glide.

Đối với một view đơn giản ta làm như sau:

Hình 4.28. Sử dụng glide đối với một view đơn giản

(Nguồn: Android Studio)

106

Hình 4.29. Sử dụng glide đổi với một list view

(Nguồn: Android Studio) Thư viện ảnh Glide giải quyết các vấn đề gì?

Hết bộ nhớ, ngốn bộ nhớ (out of memory)

Các ứng dụng chạy hệ điều hành Android đều được cấp một vùng nhớ nhất định để truy cập và lưu trữ các dữ liệu,… Ngoài dữ liệu, việc ứng dụng sử dụng quá nhiều hình ảnh sẽ dẫn tới hiện tượng đầy vùng nhớ từ đó dẫn tới ứng dụng bị đứng và thoát ra ngoài.

Để giải quyết vấn đề trên thư viện ảnh Glide sử dụng kỹ thuật

Downsampling. Downsampling hoạt động bằng cách scale kích thước ảnh gốc về nhỏ hơn kích thước view.

Tải ảnh chậm.

Việc load cùng lúc nhiều ảnh trên ứng dụng mất rất nhiều thời gian, ứng dụng cần thời gian để mã hóa code về ảnh, lấy ảnh từ server về,… Thư viện Glide sẽ giúp ứng dụng dừng load các tác vụ không cần thiết, chỉ tập trung vào load những ảnh đang hiển thị.

Sử dụng glide dựa vào câu lệnh sau.

Hình 4.30. Câu lệnh giúp load ảnh nhanh trên ứng dụng H-Covne

107 4.2.1.2. Retrofit

Theo định nghĩa của nhà phát triển Retrofit: “A TYPE-SAFE HTTP CLIENT FOR ANDROID AND JAVA”.

Retrofit giúp kết nối một dịch vụ Rest trở nên dễ dàng hơn bằng cách chuyển đổi API thành Java Interface trên ứng dụng android, hoặc trên web.

Hình 4.31. Retrofit trong Android studio

(Nguồn: Viblo.asia)

Thư viện mạnh mẽ này giúp bạn dễ dàng xử lý dữ liệu JSON hoặc XML sau đó phân tích cú pháp thành Plain Old Java Objects (POJOs). Tất cả các yêu cầu GET, POST, PUT, PATCH, và DELETE đều có thể được thực thi.

Hình 4.32. Thêm thư viện Retrofit trong Android studio

108

Hình 4.33. Retrofit client

(Nguồn: Android Studio)

4.2.1.3. Một số thư viện khác.

Thư viện Apollo hỗ trợ cho việc giao tiếp với GraphQL

Hình 4.34. Thư viện Apollo

(Nguồn: Tác giả xây dựng)

Event bus: Sự kiện cho Android

Hình 4.35. Nguyên lý hoạt động của Event Bus

109

Hình 4.36. Thêm sự kiện Event Bus cho ứng dụng

(Nguồn: Android Studio)

4.2.2. Tiến hành thiết kế giao diện cho ứng dụng.

Tại cửa số activity_main.xml sử dụng ngôn ngữ lập trình java để xây dựng giao diện cho ứng dụng. Thêm các button, textview, editview,… vào giao diện.

Các thành phần chính trong màn hình chính của ứng dụng như sau: Button: Home, quanh đây, Đăng tin, giao dịch, tài khoản.

Textview: choose your perfect room

<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="@string/choose_your_perfect_room" android:layout_marginLeft="@dimen/dp_20" android:gravity="center_vertical" />

Relativelayout: Gồm các slide ảnh banner.

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent"> <androidx.viewpager.widget.ViewPager android:id="@+id/slidingImageViewPager" android:layout_width="match_parent" android:layout_height="@dimen/dp_230" /> <me.relex.circleindicator.CircleIndicator android:id="@+id/circleIndicator"

110 android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/slidingImageViewPager" android:layout_centerHorizontal="true" android:padding="16dp" /> </RelativeLayout>

Recyclerview: Gồm các danh sách phòng nổi bật.

<androidx.recyclerview.widget.RecyclerView android:id="@+id/homeRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent" />

Hình 4.37. Màn hình thiết kế giao diện ứng dụng

(Nguồn: Android Studio)

Tích hợp google map vào ứng dụng để tìm các phòng trọ xung quanh người dùng

111

Hình 4.38. Giao diện tích hợp google map vào ứng dụng

(Nguồn: Android Studio)

4.3. Xây dựng và quản lý cơ sử dữ liệu bằng MongoDB

4.3.1. MongoDB là gì?

MongoDB là CSDL mã nguồn mở được viết bằng C++, là một trong những kiến trúc CSDL dùng để lưu trữ dữ liệu lớn (Big Data), hỗ trợ phân tán, dễ dàng co giãn mở rộng, tốc độ truy cập nhanh, không có ràng buộc quan hệ gì giữa các bảng.

Mỗi Server được gọi là 1 Cluster, 1 Cluster có nhiều Cơ sở dữ liệu, mỗi cơ sở dữ liệu có nhiều Collection (bảng), mỗi Collection có nhiều Document (dòng). Document là đối tượng Json, tùy biến theo người thiết kế.

112

Hình 4.39. System Architecture

(Nguồn: duythanhese.wordpress.com)

4.3.2. Tạo cơ sở dữ liệu

Để tạo cơ sở dữ liệu, ta bấm vào mục “Create Database” sau đó đặt tên cho Database và Collection.

113

Hình 4.40. Giao diện create database

(Nguồn: Tác giả tự xây dựng)

Khi đã có cơ sở dữ liệu ta tạo thêm các collection.

Hình 4.41. Tạo các Collection

(Nguồn: Tác giả xây dựng)

Insert Document, mỗi Document mặc định sẽ được Mongo tạo một _id khác nhau, id có nhiệm vụ như một khóa chính.

114

Hình 4.42. Insert Document

(Nguồn: Tác giả xây dựng)

4.3.3. Cách kết nối Android với MongoDB

Trong NodeJs tại thư mục “room.js” tạo các giao thức, phương thức kết nối giữa Android Studio với NodeJs.

Hình 4.43. Tạo các giao thức, phương thức kết nối giữa Android với NodeJs (Nguồn: Tác giả xây dựng)

Trong Android Studio tạo một Interface RoomAPI, từ RomAPI gọi API lên NodeJS.

115

Hình 4.44. Tạo các Interface trong Android Studio

(Nguồn: Tác giả xây dựng)

Cuối cùng kết nối NodeJs với MongoDb bằng 2 dòng lệnh sau: var connectionString =

MongoClientURI("mongodb://172.16.96.173:27017") var mongoClient = MongoClient(connectionString)

Lệnh thứ nhất dùng để kết nối MongoDb với NodeJs và dòng lệnh thứ hai dùng để truy xuất dữ liệu trong bảng Room để hiển thị giao diện listview.

4.4. Bảo mật cơ sở dữ liệu.

4.4.1 Bảo mật trên file ứng dụng apk.

Việc lưu trữ dữ liệu là hết sức quan trọng đối với một lập trình viên trong quá trình xây dựng và phát triển một ứng dụng Android. Dữ liệu cần lưu trữ của ứng dụng tìm phòng trọ H-Conve chính là thông tin của khách hàng, bao gồm: Username, password, address hay là một token.

Ứng dụng tìm phòng trọ H-Conve sử dụng chức năng có sẵn Android keystore để mã hóa và bảo mật ứng dụng.

116

Hình 4.45. Tạo new keystore cho file apk của ứng dụng

(Nguồn: Tác giả tự xây dựng)

Tạo keystore và mỗi key sẽ có một alias (bí danh) riêng và duy nhất. Set giá trị cho key là 25 năm, key sẽ mất khi file JKS mất.

4.4.2. Bảo mật code trong Android studio

Tại thư mục build.gradle tìm đến minifyEnabled và thay đổi giá trị từ false thành true.

buildTypes { release {

117

minifyEnabled true

proguardFiles getDefaultProguardFile('proguard-android- optimize.txt'), 'proguard-rules.pro'

Sau đó định nghĩa quy tắc proguard trong file: proguard-project.txt hoặc proguard-rules.pro.

4.5. Hạn chế

Nhiều tính năng chưa thực sự hoàn chỉnh như: chưa tích hợp được đăng nhập bằng google, facebook; bộ lọc chưa hoàn chỉnh; chưa có chức năng thanh toán; cơ sở dữ liệu chưa tối ưu; thời gian load ứng dụng chậm.

Nguồn tài chính hạn hẹp nên chưa đẩy mạnh hoạt động marketing quảng cáo, tuy đã áp dụng nhiều chiến lược marketing trên các nền tảng nhưng số người tiếp cận còn thấp.

Nguồn nhân lực chính là các thành viên trong nhóm nên còn gặp nhiều khó khăn trong vấn đề phát hiện và sửa lỗi trong hệ thống. Do vậy, khi ứng dụng tìm trọ H-conve gặp sự cố thì mất nhiều thời gian để khắc phục.

Áp lực cạnh tranh với các đối thủ đã có thương hiệu như: Ohana, tìm trọ 360,… nên thương hiệu H-conve chưa chiếm được lòng tin khách hàng.

Ứng dụng chỉ dành cho khách hàng dùng hệ điều hành Android nên chưa khai thác được nhóm khách hàng sử dụng hệ điều hành khác.

Phạm vi hoạt động còn hạn chế, chỉ tập trung quanh khu vực Đại học Sư Phạm Kỹ Thuật là chủ yếu, chưa phát triển mạnh sang các quận, các tỉnh khác.

4.6. Định hướng phát triển ứng dụng trong tương lai

Tập trung đẩy mạnh nhiều chiến dịch quảng cáo kèm theo nhiều gói ưu đãi đẩy tin hấp dẫn để thu hút khách hàng tiềm năng

118

Tạo ra phiên bản mới mạnh mẽ, mượt mà hơn, hoàn thiện tính năng còn thiếu sót. Tích hợp trí thông minh nhân tạo AI, theo dõi và học hỏi hoạt động người dùng từ đó đưa ra kết quả tìm kiếm chính xác hơn.

Mở rộng và hợp tác với các đối tác tỉnh thành khác để mở rộng quy mô hoạt động của ứng dụng.

Xây dựng hệ sinh thái đa dạng bao gồm dịch vụ vận chuyển nhà, đại lý cung cấp trang thiết bị nhà cửa, đơn vị bảo trì, …

119 KẾT LUẬN

Qua nhiều thời gian nghiên cứu, lên kế hoạch tìm hiểu xây dựng ứng dụng tìm phòng H-Conve. Tuy thời gian thực hiện bị hạn chế, còn nhiều khó khăn thiếu sót trong việc xây dựng chức năng cho ứng dụng. Nhưng được sự định hướng hỗ trợ tận tình của giảng viên hướng dẫn, cuối cùng dự án cũng đã hoàn thành đúng tiến độ đề ra. Việc hoàn thiện chức năng, giao diện, công cụ tìm kiếm đã đánh dấu mốc quan trọng cho nhóm tiếp tục hoàn thiện thêm nhiều tính năng nâng cao hơn trước khi phát hành ứng dụng tiện lợi này lên Google Store để mọi người được sử dụng.

Trong quá trình xây dựng ứng dụng tìm phòng H-Conve, dự án đã đạt được một số kết quả ấn tượng không chỉ về số liệu thực tế mà còn là sự thành công trong việc tiếp cận nhiều ngôn ngữ lập trình phổ biến, áp dụng kiến thức chuyên môn của 4 năm đại học vào dự án quan trọng cuối cùng này.

Về kết quả đạt được:

Tuy chưa ra mắt nhưng dự án đã tiếp cận và được nhiều người dùng tò mò quan tâm sâu sắc trên các trang mạng xã hội như Facebook, Instagram, Twitter, Pinterest, Tiktok,… Tiếp cận 1850 người, 553 lượt like, 24 lượt chia sẻ và nhiều bình luận tích cực trên Facebook; 122 lượt subcriber, 422 lượt view, 71 lượt like của video trên kênh Youtube.

Dự án là một đề tài mang tính thực tế, triển khai và phổ biến rộng rãi khi ứng dụng hoàn thiện giúp người dùng (đặc biệt là sinh viên) dễ dàng tìm kiếm phòng trọ phù hợp với nhu cầu. Tận dụng sức mạnh công nghệ để tạo ra một dự án thiết thực, nâng cao kỹ năng, kiến thức, quản lý thời gian, khả năng làm việc nhóm.

Bên cạnh những thành tựu đạt được, H-Conve vẫn còn nhiều hạn chế:

Dự án chưa đi vào hoạt động thực tế nên nhiều số liệu thống kê về doanh thu, lợi nhuận, chi phí chưa có. Đây là mối quan tâm hàng đầu khi thực hiện hoạt động kinh doanh thương mại hiện nay. Tuy nhiên với sự chuẩn bị kỹ lưỡng chi tiết, kế

120

hoạch chiến lược phát triển dự án trong tương lai, nhóm tin rằng dự án sẽ mang lại nhiều lợi ích và thăng tiến mạnh mẽ khi được công bố.

Nguồn vốn đầu tư ban đầu còn thấp mà chi phí duy trì dự án quá lớn. Dự án thiếu nguồn nhân sự có chuyên môn để phát triển các tính năng nổi bật, quản lý hoạt động ứng dụng nhằm đám ứng tốt nhất sự trải nghiệm của người dùng.

Định hướng phát triển trong tương lai của H-Conve:

Đánh giá và kiểm tra kỹ càng quy trình hoạt động của các chức năng của ứng dụng để đưa ra điều chỉnh phù hợp.

Xây dựng website giúp người dùng có thể tìm kiếm phòng trên các thiết bị khác như máy tính, laptop… Đồng thời dễ dàng hỗ trợ tư vấn, chăm sóc khách hàng khi có nhu cầu.

Tìm kiếm thêm nhiều đối tác nhu cầu đầu tư vào ứng dụng, cộng sự có chung chí hướng để phát triển ứng dụng tốt hơn.

Nâng cao độ phổ biến của ứng dụng tìm phòng H-Conve trên mạng internet thông qua việc đẩy mạnh quảng cáo Google, Facebook, Youtube để tiếp cận nhiều khách hàng có nhu cầu tìm kiếm chỗ ở.

Thông qua bài báo cáo tốt nghiệp, nhóm đã mở rộng kiến thức nâng cao khả năng làm việc nhóm, vận dụng kiến thức kỹ năng trong quá trình học tập và kinh nghiệm tích lũy từ dự án. Thời gian thực hiện còn hạn chế cùng với kiến thức hạn hẹp nên sẽ không tránh khỏi thiếu sót trong quá trình thực hiện. Nhóm mong muốn nhận được sự nhận xét đóng góp ý kiến của Quý thầy cô trong hội đồng đặc biệt là giảng viên hướng dẫn thầy Nguyễn Phan Anh Huy để bài báo cáo được hoàn thiện hơn.

121 TÀI LIỆU THAM KHẢO

1. Harvard, B.R.P (2018). HBR - On Strategy - Chiến Lược. Hà Nội: NXB Công thương.

2. Lâm, L.B. (2017). Sự tác động của môi trường bên trong. Kinh tế vi mô. HCM:

NXB Kinh Tế TPHCM.

3.MediaZ. (2017) Facebook Marketing Từ A Đến Z Version 2.0. American: NXB Thế giới.

4. Huyên, T.T. (2015). 6 chiến thuật tiếp thị bằng video trên Youtube. Truy cập: 13/04/2020, từ https://www.brandsvietnam.com/7339-6-chien-thuat-tiep-thi-bang- video-tren-Youtube

5. Tâm, T. (2019). Mô hình PESTEL là gì? – Tất tần tật về công cụ phân tích kinh

doanh không thể thiếu. Truy cập: 15/03/2020, từ https://atpsoftware.vn/mo-hinh-

pestel-la-gi-tat-tan-tat-ve-cong-cu-phan-tich-kinh-doanh-khong-the-thieu.html

6. Thanh, T.V. (2018). MongoDB là gì? Cơ sở dữ liệu phi quan hệ. Truy cập: 23/04/2020, từ https://viblo.asia/p/mongodb-la-gi-co-so-du-lieu-phi-quan-he- bJzKmgoPl9N

7. Wearesocial. (2020). Digital 2020 – Wearesocial. Truy cập: 20/02/2020,từ

https://wearesocial.com/digital-2020

8. Wikipedia. (2020). Android (hệ điều hành).Truy cập: 14/03/2020, từ

https://vi.wikipedia.org/wiki/Android_(h%E1%BB%87_%C4%91i%E1%BB%81u_ h%C3%A0nh)

9. Thanh, T. (2019). 6 bước chạy quảng cáo trên Facebook hiệu quả năm 2020.

Truy cập: 12/02/2020, từ https://thanhthinhbui.com/cach-chay-quang-cao-tren- facebook-hieu-qua/

122 11. Fanpage Facebook: https://www.facebook.com/h.conve/?modal=admin_todo_tour 12. Youtube: https://www.youtube.com/channel/UCDcs14nS_VqrPrOHpjTdlYA?view_as=subsc riber 13. Pinterest: https://www.pinterest.com/convenienthome/pins/

123 PHỤ LỤC

126

Một phần của tài liệu Xây dựng ứng dụng tìm phòng trên nền tảng android (Trang 116)