top of page

Ứng dụng di động đa nền tảng dự báo thời tiết bằng Xamarin Forms

  • Writer: PhongPX
    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"


ree




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:

  1. Temprature: Giá trị nhiệt độ tại thời điểm hiện tại, được đo bằng đơn vị là độ C.

  2. Humidity: Giá trị độ ẩm trong ngày , được đo bằng %.

  3. Wind: Sức gió trong ngày, được đo bằng đơn vị m/s.

  4. Pressure: Áp suất khí quyển trong ngày, được đo bằng đơn vị hpa

  5. 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:

ree

* 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.


ree
ree

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.


ree

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.


ree

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)


ree


Comments


Liên lạc tôi bằng cách dưới đây nha !

Thanks for submitting!

bottom of page