Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android
Code

Google Fit cho Android: History API

This post is part of a series called Google Fit for Android.
Google Fit for Android: Recording API
Google Fit for Android: Sessions API

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Google Fit là một nền tảng cho phép các nhà phát triển xây dựng các ứng dụng tập trung vào dữ liệu sức khoẻ của người dùng. Một trong những công cụ mà Google đã cung cấp là Google Fit cho Android, nó tồn tại như là một gói nằm trong Google Play Services.

Trong hướng dẫn trước, chúng ta đã khám phá cách làm thế nào để sử dụng Recording API của Google Fit để lưu trữ dữ liệu sức khoẻ thông qua Google Play Services. Hướng dẫn này sẽ tiếp tục khám phá cách để truy cập và cập nhật dữ liệu được lưu trữ trong Google Fit sử dụng History API.

Những gì làm cho Google Fit mạnh mẽ là dữ liệu sức khoẻ được lưu trữ thông qua Google Cloud Services, cái mà cho phép nó được truy cập và phân tích tại một thời điểm sau đó. Trong khi Sensors APIRecording API tập trung vào việc thu thập dữ liệu sức khoẻ từ một thiết bị Android, thì History API là nhằm giúp cho các nhà phát triển dễ dàng truy cập vào dữ liệu được lưu trữ.

Bài này sẽ hướng dẫn bạn tìm hiểu một dự án mẫu minh hoạ cách làm việc với History API. Sản phẩm cuối cùng có thể được tải về từ GitHub.

1. Thiết lập dự án

Bước 1: Thiết lập Developer Console

Để sử dụng Google Fit, bạn cần phải tạo ra một client ID OAuth 2.0 và đăng ký ứng dụng của bạn thông qua Google Developer Console. Bạn có thể tìm thấy một bài giải thích chi tiết về cách thiết lập một dự án trong Google Developer Console trong hướng dẫn của tôi về Sensors API của Google Fit.

Bước 2: Tạo dự án Android

Một khi ứng dụng của bạn đã được cấu hình để xác thực trong Google Developer Console, thì sử dụng tên gói mà bạn đăng ký để tạo một ứng dụng Android mới với SDK tối thiểu là 9 và một Activity rỗng.

Với ứng dụng Android cơ bản đã được tạo ra, mở build.gradle và bao gồm Google Play Services ở dưới phần dependencies và đồng bộ ứng dụng của bạn.

Bây giờ bạn có thể bao gồm các lớp cần thiết của Google Play Services vào ứng dụng của bạn. Trước khi chúng ta đi sâu vào trong code Java cho hướng dẫn này, hãy mở activity_main.xml và sửa đổi nó để nó bao gồm năm phần tử Button mà chúng ta sẽ sử dụng để minh hoạt một số chức năng của History API.

Khi bạn chạy ứng dụng của bạn, giao diện người dùng sẽ trông giống như thế này:

Để tiếp tục thiết lập dự án, hãy mở MainActivity.java của bạn và cài đặt các hàm callback và các phương thức cần thiết sau đây:

  • GoogleApiClient.ConnectionCallbacks
  • GoogleAPiClient.OnConnectionFailedListener
  • View.OnClickListener

Bạn cũng cần phải thêm một biến thành viên cho GoogleApiClient và một tập hợp các tham chiếu đến các đối tượng Button của bạn, như hình dưới đây.

Điều cuối cùng bạn cần làm để thiết lập dự án mẫu của bạn là kết nối với Google Play Services. Điều này có thể được thực hiện ở cuối của phương thức onCreate().

Với đoạn code ở trên, chúng ta kết nối đến Google Play Services và yêu cầu truy cập vào History API trong Google Fit, cũng như quyền đọc và ghi dữ liệu hoạt động. Bằng cách thêm vào thuộc tính enableAutoManage, Google Play Services quản lý kết nối và ngắt kết nối một cách hợp lý.

2. Sử dụng History API của Google Fit

Sử dụng History API, bạn có thể truy xuất và tổng hợp dữ liệu, chèn các giá trị bạn đã tổng hợp trong ứng dụng của bạn hoặc xóa dữ liệu có thể đã được lưu trữ. Một điều quan trọng cần lưu ý là tất cả hoạt động của History API trong hướng dẫn này phải được thực hiện bên ngoài tiến trình chính. Nói cách khác, mỗi hoạt động diễn ra trong một AsyncTask:

Bước 1: Hiển thị dữ liệu theo thời gian

Một tác vụ mà bạn có thể muốn làm là sử dụng hoặc hiển thị dữ liệu đã được thu thập theo thời gian. Bạn có thể làm điều này bằng cách tạo ra một DataReadRequest mới cho một kiểu dữ liệu cụ thể phù hợp với một số tham số truy vấn.

Bạn có thể nhóm dữ liệu này lại với nhau trong các đối tượng Bucket theo thời gian hoặc các phiên. Đối với ví dụ này, bạn yêu cầu dữ liệu số bước đi được tổng hợp trong tuần và nhóm dữ liệu đó theo ngày.

Một khi bạn đã tạo DataReadRequest của bạn, bạn có thể yêu cầu dữ liệu từ GoogleApiClient bằng cách sử dụng câu lệnh Fitness.HistoryApi.readData. Bạn đồng thời gọi await trên client API để tiến trình ngưng chạy trong một phút trong khi chờ đợi truy vấn. Nếu có điều gì sai sót, tiến trình tiếp tục sau phút đó.

Nếu trả về thành công, bạn có thể truy cập dữ liệu sức khoẻ của người dùng từ đối tượng DataReadResult. Yêu cầu dữ liệu bước đi của bạn sẽ được trả về trong các đối tượng Bucket, mặc dù các loại dữ liệu khác được trả về như một List các đối tượng DataSet. Tùy thuộc vào kiểu dữ liệu trả về, bạn có thể truy cập nó bằng đoạn code sau:

Sau đó bạn có thể lấy mỗi Datapoint từ các đối tượng DataSet đã được trả về.

Nếu một ứng dụng trên thiết bị của người dùng đã bật Recording API trong tuần trước đó, thì bạn nhận được dữ liệu cho mỗi ngày mà nó hoạt động. Các bản ghi từ các code ở trên sẽ trông như thế này:

Bước 2: Hiển thị dữ liệu cho hôm nay

Bây giờ bạn đã biết cách làm thế nào để lấy dữ liệu Google Fit dựa trên một khung thời gian. Một trường hợp sử dụng mà các nhà phát triển thường gặp là cần dữ liệu cho ngày hiện tại. May mắn thay, Google đã làm cho điều này trở nên dễ dàng bằng cách gọi Fitness.HistoryApi.readDailyTotal, nó tạo ra một đối tượng DailyTotalResult chứa dữ liệu thu thập được trong ngày.

Đoạn code ở trên ghi lại dữ liệu bước đi của người dùng trong ngày.

Bước 3: Chèn dữ liệu vào Google Fit

Khả năng đọc dữ liệu từ Google Fit là quan trọng, nhưng có thể đôi khi bạn cần phải thêm dữ liệu thu thập được của riêng bạn vào dữ liệu lưu trữ của Google Fit. Để làm điều này, bạn chọn một khoảng thời gian cho dữ liệu và tạo ra một đối tượng DataSource đại diện cho các loại thông tin mà bạn đưa vào Google Fit. Tiếp theo, bạn tạo một đối tượng DataSet và đặt một Datapoint mới vào đó cho hoạt động chèn.

Đối với ví dụ này, chúng ta sẽ giả sử người dùng đã đi bộ một triệu bước, hoặc khoảng 500 dặm, và chèn dữ liệu bước đi thô đó vào giờ cuối cùng của hoạt động của người dùng.

Điều quan trọng cần lưu ý là nếu bạn chọn một khoảng thời gian kéo dài nhiều ngày, số lượng các bước đi mà bạn chèn được phân bố đều trong những ngày đó.

Sau khi tạo đối tượng DataSet, bạn có thể chèn nó vào kho dữ liệu của Google Fit bằng cách gọi insertData của History API.

Nếu bạn chèn số bước đi của người dùng và sau đó đọc nhật ký hoạt động, bạn sẽ thấy một điều tương tự như sau:

Bước 4: Cập nhật dữ liệu trên Google Fit

Khi bạn đã chèn dữ liệu vào trong Google Fit, bạn không thể chèn thêm bất kỳ dữ liệu nào của kiểu dữ liệu đó nếu nó trùng với dữ liệu hiện có. Điều này có thể gây ra vấn đề nếu người dùng đã đi 500 dặm và sau đó đi hơn 500.

Để giải quyết điều này, bạn cần gọi UpdateData. May mắn thay, việc cập nhật dữ liệu là gần như tương tự việc chèn dữ liệu mới, ngoại trừ việc bạn tạo ra một DataUpdateRequest để thay thế.

Nếu bạn đã ghi lại các bước của người dùng cho những ngày sau khi chạy bộ ở trên, bạn sẽ thấy hơn hai triệu bước.

Bước 5: Xóa dữ liệu khỏi Google Fit

Hoạt động sau cùng có sẵn thông qua History API của Google Fit là khả năng xóa dữ liệu mà bạn đã lưu trong Google Fit. Điều này có thể được thực hiện bằng cách chọn một phạm vi ngày, tạo ra một đối tượng DataDeleteRequest, và gọi deleteData từ History API. Mặc dù bạn có thể xóa dữ liệu được chèn của riêng bạn, nhưng dữ liệu được lưu trữ bởi Google Fit thì không được loại bỏ.

Tổng kết

Như bạn đã thấy, History API là một công cụ rất mạnh mẽ để truy cập và thao tác với kho lưu trữ dữ liệu của Google Fit. Trong khi các API khác của Google Fit nhằm mục đích thu thập dữ liệu, thì History API cho phép bạn duy trì và truy cập dữ liệu để phân tích. Bây giờ bạn sẽ có thể tạo ra các ứng dụng tuyệt vời tận dụng lợi thế của tính năng này.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.