Ứng dụng di động đa nền tảng dự báo thời tiết bằng Xamarin Forms
- PhongPX
- Jan 17, 2020
- 5 min read
Updated: Jan 24, 2020
I. Lý do chọn đề tài
Đây là Project mà mình làm một mình, tại vì mục tiêu ban đầu cũng không phải là một ứng dụng to lớn như app bán hàng hay tin tức mà mục đích đặt ra cho môn học này rất đơn giản:
Nắm được các kỹ thuật cơ bản của lập trình trên ứng dụng di động đa nền tảng
Hiểu được Data Flow trong toàn bộ mô hình tổ chức Code
Cuối cùng và quan trọng nhất là "Qua Môn"

II. Triển khai các nguồn tham khảo và công cụ kỹ thuật trước khi làm
Để xây dựng một ứng dụng dự báo thời thiết - Weather Application thì trước tiên cần xác định được nguồn dữ liệu hay nói cách khác chính là thông tin thời tiết bạn lấy từ đâu. Hiện nay có một số nguồn cung cấp các thông tin thời tiết uy tín và rất dễ sử dụng như OpenWeatherMap, Weatherbit, AccuWeather, Dark Sky, Weather2020... Chi tiết về các nguồn này thì bạn có thể tham khảo ở Link dưới đây:
Do đã đọc được một vài tài liệu nên ở Project này, mình sử dụng OpenWeatherMap thông qua một API nó cung cấp sẵn.
Các yếu tố được mình quan tâm khi xây dựng một ứng dụng dự báo thời tiết đó là:
+ Hướng đến một đề tài có tính thực tiễn
+ Kết hợp được những tính năng cơ bản của một ứng dụng dự báo thời tiết
+ Lấy thông tin dự báo thời tiết hiện tại và dự báo được nhiệt độ cho 4 ngày tiếp theo trong tương lai
+ Thay đổi BackGround dựa vào địa điểm nhập vào
+ Cho phép nhập tên thành phố vào và hiển thị nó thành một danh sách, đồng thời cho phép thêm xóa
+ Tạo các phương thức liên hệ với tác giả như PhoneCall, Message, Email.
III, Bắt tay vào code thôi
Toàn bộ code thì nếu muốn tham khảo thì có thể tham khảo ở Link sau:
1. Hiển thị các thông số tại thời tiết trong ngày hiện tại
Các thông số thời tiết này bao gồm các chỉ số về Humidity - Độ ẩm, Wind - Gió, Pressure - Áp suất, Cloudiness - Mây và Temprature - Nhiệt độ, Cụ thể về các trường giá trị và độ đo các thông số đó như sau:
Temprature: Giá trị nhiệt độ tại thời điểm hiện tại, được đo bằng đơn vị là độ C.
Humidity: Giá trị độ ẩm trong ngày , được đo bằng %.
Wind: Sức gió trong ngày, được đo bằng đơn vị m/s.
Pressure: Áp suất khí quyển trong ngày, được đo bằng đơn vị hpa
Cloudiness: Lượng mây trong ngày, đo bằng đơn vị %.
Để làm cho ứng dụng thêm phần sinh động thì mình có thêm các icon liên quan đến các kiểu thời tiết như nắng, mưa, mây, gió, tuyết
2. Tính năng định vị vị trí theo GPS để lấy dữ liệu thời tiết
Có thể nói đây là tính năng mà bắt buộc ứng dụng dự báo thời tiết nào cũng phải có.
Để có thể sử dụng tính năng này thì bạn phải cấp quyền cho phép truy cập thiết bị cụ thể khi code thì bạn phải khai báo những ràng buộc như sau:

* Lưu ý: Những cài đặt này mình đang cài đặt bên thiết bị Android trong file AndroidManifest.xml
3. Tính năng thay đổi Background dựa theo tên địa điểm nhập vào
Việc lựa chọn Background Image là ngẫu nhiên dựa vào một nguồn API có sẵn là Pexels, cụ thể đây là gì thì mình sẽ trình bày cụ thể ở phần tiếp theo trong mục các kỹ thuật áp dụng. Hiểu một cách sơ bộ thì đây chính là lấy một hình ảnh ngẫu nhiên dựa theo truy vấn chính là tên của địa điểm đó trên thanh công cụ tìm kiếm của API đó. Hình bên dưới thể hiện sự thay đổi Background của 2 địa điểm là thành phố Hồ Chí Minh và New York. Có một điều cần chú ý đó chính là kích cỡ của các hình ảnh này được chia thành nhiều cấp độ và kích thước hình ảnh phù hợp để hiển thị trên thiết bị di động đó chính là Medium.


4. Tính năng quản lý danh sách tên địa điểm nhập vào.
Sau khi tìm hiểu các ứng dụng liên quan thì tôi thấy việc quản lý tên các địa điểm này là một tinh năng thực sự giúp người sử dụng nhanh chóng và dễ dàng kiểm tra thông tin thời tiết của bất cứ địa điểm nào mà họ muốn. Những tinh năng này hợp cho những quản lý từ xa. Ví dụ như bạn đi làm việc ở nước ngoài nhưng muốn biết thông tin thời tiết ở Việt Nam thì bạn có thể nhập tên thành phố ở Việt Nam và lưu nó lại cho lần kiểm tra thông tin thời tiết sau.
Có tất cả là 3 lựa chọn cho tinh năng này bao gồm là Check, Insert và Delete. Cụ thể ý nghĩa của các button đó như sau:
Đầu tiên là Check sẽ giúp bạn kiểm tra trực tiếp thông tin thời tiết của địa điểm đó mà không cần lưu vô danh sách. Tuy nhiên nếu bạn vẫn muốn tiếp tục kiểm tra thông tin thời tiết ở nơi đó cho lần tiếp theo thì có thể nhấn button Insert thì tên địa điểm đó sẽ được lưu thành một danh sách cho phép bạn chọn. Khi chọn thì tên của địa điểm đó sẽ được hiển thị lên lại và bạn chỉ cần nhấn Check là được.
Button Delete chịu trách nhiệm xóa tên địa điểm đó ra khỏi danh sách nếu bạn không muốn lưu thông tin đó lại nữa.

5. Tính năng liên hệ
Do chưa phát triển hoàn thiện nên tinh năng này mình đang phát triển dựa vào 3 phương thức chính đó là Gọi điện, Nhắn tin và Gửi Mail.
Mỗi lần người dụng chọn một phương thức liên hệ có nghĩa là cấp quyền cho ứng dụng truy cập vào hệ thống trong máy điện thoại, nó có thể là Call, Message hay là một ứng dụng khác như Email.

6. Tính năng màn hình khởi động
Đây là một kỹ thuật nhỏ có mục đích khiến cho người sử dụng hiểu sơ qua ứng dụng có mục đích và nội dung như thế nào.
Có 2 bước chính để có thể xây dựng màn hình khởi động này:
+ Bước 1: Khởi tạo file XML trong đó khai báo các tài nguyên (Lưu trữ trong thư mục Drawable )
+ Bước 2: Viết class Activity cho file XML đó (Lưu trữ trong thư mục Activities)

Comments