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 khẻo của người dùng. Một trong những công cụ mà Google đã cung cấp là Google Fit cho Android, trong đó tồn tại như là một gói nằm trong Google Play Services.
Mặc dù có rất nhiều các API khác nhau có sẵn cho Google Fit, như đã thảo luận trong bài viết tổng quan này trên Envato Tuts+, nhưng hướng dẫn này tập trung vào việc thiết lập và sử dụng Google Fit để đọc dữ liệu cảm biến trên một thiết bị Android. Một dự án mẫu cho hướng dẫn này có thể được tìm thấy trên GitHub.
kết nối với Fitness API trong ứng dụng Android của bạn
Phần này hướng dẫn bạn cách làm thế nào để thiết lập ứng dụng Android của bạn và Fitness API. Bạn có thể bắt đầu bằng cách truy cập Google Developers Console. Nếu bạn đã làm việc với một dự án, bạn có thể bỏ qua bước tiếp theo. Nếu không, hãy làm theo chúng và tạo ra một dự án mới cho ứng dụng Google Fit của bạn.
Bước 1: Tạo một dự án
Để tạo một dự án mới, nhấp vào nút Create Project màu xanh ở góc trên bên trái của màn hình.
Điều này trình bày cho bạn một hộp thoại yêu cầu nhập tên dự án. Đối với hướng dẫn này, tôi đã tạo ra một dự án và đặt tên nó là TutsPlusGoogleFit. Có một số giới hạn về cách đặt tên cho dự án của bạn. Chỉ có chữ cái, số, dấu ngoặc kép, dấu gạch ngang, khoảng trắng, và dấu chấm than là được phép.
Khi bạn nhấn Create, một hộp thoại xuất hiện ở góc dưới bên phải của trang, cho thấy dự án đang được tạo ra.
Bước 2: Kích hoạt Google Fit API
Với dự án đã được thiết lập, bạn sẽ được dẫn đến trang Tổng quan của dự án. Cách dễ nhất để tìm Google Fit API là bằng cách tìm kiếm từ khóa "fit". Chọn Fitness API từ kết quả hiện ra.
Bấm vào Enable API để kích hoạt Fitness API.
Sau khi kích hoạt Fitness API, bạn nhận được một cảnh báo cho bạn biết rằng bạn cũng cần tạo ra các chứng chỉ để sử dụng Fitness API. May mắn thay, cảnh báo bao gồm một nút đưa chúng ta đến trang Credentials.
Bước 3: Tạo chứng chỉ
Trên trang Credentials, bạn cần cung cấp một số thông tin chung về ứng dụng của bạn trong Credentials Wizard. Xác định rằng bạn đang sử dụng Fitness API, rằng API được gọi từ một ứng dụng Android, và ứng dụng cần truy cập vào dữ liệu người dùng.
Tiếp theo, nhấp vào What credentials do I need? ở phía dưới để tiếp tục và tạo ra một client ID OAuth 2.0 cho ứng dụng Android của bạn. Bạn cần hai mẫu thông tin quan trọng cho bước này:
signing-certificate fingerprint
Tên gói cho ứng dụng
Bạn có thể nhận được signing-certificate fingerprint bằng cách mở một Terminal hoặc giao diện dòng lệnh, và điều hướng đến vị trí signing-certificate của ứng dụng. Đây có thể là khoá phát hành của bạn hoặc chứng chỉ debug.keystore mặc định mà Android Studio sử dụng. Một khi bạn đã chuyển đến keystore của bạn, bạn có thể tạo ra SHA1 cần thiết với lệnh sau, trong đó debug.keystore là tên của signing-certificate.
1
keytool -list-v-keystore debug.keystore
Dán khoá SHA1 vào trường SHA1 và nhập com.tutsplus.googlefit vào trường Package name.
Cuối cùng, bạn cần phải cấu hình màn hình thoả thuận OAuth 2.0. Đây là màn hình được hiển thị cho người dùng để họ có thể cấp quyền cho ứng dụng của bạn để sử dụng dữ liệu sức khoẻ của họ. Bước này đòi hỏi email và tên sản phẩm để hiển thị cho người dùng. Đối với hướng dẫn này, tôi đã nhập Tuts+ Google Fit.
Nhấp vào Continue và, trên trang tiếp theo, nhấp Done để kết thúc quá trình thiết lập.
Bước 4: Thiết lập dự án Android
Với dự án của bạn đã được thiết lập và cấu hình trên Google Developer Console, bạn có thể bắt đầu tạo một dự án Android mới. Hãy chắc chắn rằng tên gói trùng với cái mà bạn đã nhập trong Google Developer Console và thiết lập ứng dụng sử dụng các nền tảng Phone and Tablet với một phiên bản SDK tối thiểu là 14. Level API tối thiểu cho Google Fit là 9. Tạo một Activity rỗng để giữ cho dự án cơ bản sạch sẽ để bạn có thể tập trung vào Google Fit API trong hướng dẫn này.
Sau khi thiết lập dự án, mở tập tin build.gradle của dự án và nhập gói fitness từ Google Play Services bằng cách thêm dòng sau vào dependencies.
Cuối cùng nhưng không kém phần quan trọng, tạo ra các biến thành viên mà bạn sẽ sử dụng cho hướng dẫn này. Bạn có thể sao chép những dòng sau vào trên cùng của lớp:
Trong bước tiếp theo, bạn sẽ kết nối đến Google Play Services và học cách truy cập dữ liệu sức khoẻ của người dùng trong ứng dụng của bạn.
2. Sử dụng Fitness API
Bước 1: Kết nối đến Google Play Services
Với dự án đã được thiết lập trong Android Studio và Google Developer Console, đã đến lúc để đi sâu vào Fitness API. Trong phương thức onCreate(), bạn hãy kiểm tra xem ứng dụng của bạn đã cố gắng để được cấp phép Fitness API hay chưa. Sau đó bạn khởi tạo đối tượng GoogleApiClient bằng cách thêm Fitness Sensors API, xác định phạm vi và đăng ký các hàm callback trong ứng dụng. Nếu bạn không yêu cầu một phạm vi, ứng dụng của bạn sẽ không được cấp quyền đối với Fitness Sensors API.
Sau khi khởi tạo đối tượng GoogleApiClient, bạn cần phải làm cho nó kết nối với back-end của Google. Bạn có thể làm điều này trong onStart().
1
@Override
2
protectedvoidonStart(){
3
super.onStart();
4
mApiClient.connect();
5
}
Lần đầu tiên người dùng chạy ứng dụng, kết nối với Fitness API sẽ thất bại bởi vì người dùng phải cấp quyền cho ứng dụng của bạn để truy cập vào dữ liệu sức khoẻ của họ. Bạn có thể lắng nghe sự kiện này trong onConnectionFailed() và phản ứng phù hợp bằng cách kiểm tra xem việc cấp quyền có được tiến hành hay chưa. Nếu có, hãy gọi startResolutionForResult() để cho Google Play Services có thể xử lý quyền được người dùng cấp để sử dụng những thông tin của họ.
Nếu bạn chạy ứng dụng của bạn ngay bây giờ, bạn có thể thấy một hộp thoại yêu cầu bạn chọn một tài khoản Google để sử dụng nếu bạn đã sử dụng nhiều tài khoản trên thiết bị của bạn.
Khi hệ điều hành biết tài khoản để sử dụng, ứng dụng của bạn sẽ đưa ra một hộp thoại mới yêu cầu người dùng cấp phép cho ứng dụng đọc dữ liệu sức khoẻ.
Ở giai đoạn này, người dùng hoặc cấp phép ứng dụng của bạn để sử dụng dữ liệu của họ hoặc họ đóng hộp thoại lại, hủy bỏ quá trình này. Bạn có thể lắng nghe cả hai sự kiện trong onActivityResult() và xử lý kết quả. Nếu người dùng cấp phép cho ứng dụng của bạn, thì ứng dụng của bạn nhận được một phản hồi RESULT_OK và sau đó nó có thể cố gắng để kết nối với client Google API.
Log.e("GoogleFit","requestCode NOT request_oauth");
14
}
15
}
Ứng dụng của bạn bây giờ có thể kết nối thành công tới Google Play Services. Với những gì đã có, bạn có thể bắt đầu tập trung vào Fitness API.
Bước 2: Truy cập vào dữ liệu số bước đi Với Fitness API
Khi đối tượng GoogleApiClient của bạn đã kết nối với Google, hàm callback onConnected() được kích hoạt. Trong hàm callback này, bạn cần phải tạo ra một đối tượng DataSourcesRequest mới định nghĩa các kiểu dữ liệu mà ứng dụng của bạn quan tâm đến. Bạn cũng cần phải tạo ra một ResultCallback để xử lý những gì mà ứng dụng nên làm nếu số bước chân có thể được lấy từ thiết bị. Với các đối tượng được tạo ra, hãy gọi Fitness.SensorsApi.findDataSources() để bắt đầu tìm kiếm một nguồn dữ liệu số bước chân hợp lệ.
Bạn có thể thấy rằng phương thức registerFitnessDataListener() không thực sự tồn tại. Đây là một phương thức trợ giúp được gọi khi nguồn dữ liệu cho số bước chân được tìm thấy, sau đó tạo ra một đối tượng SensorRequest cho việc yêu cầu dữ liệu từ cảm biến đếm bước chân.
Trong đoạn code sau đây, đối tượng SensorRequest cố gắng để tìm ra số bước chân mỗi ba giây. Fitness.SensorApi sau đó thêm yêu cầu với một OnDataPointListener mới, do đó, khi dữ liệu mới sẵn có, listener được kích hoạt. Nếu không có dữ liệu mới được tìm thấy, OnDataPointListener không được kích hoạt và Fitness API chờ thêm ba giây trước khi kiểm tra một lần nữa.
Khi một sự thay đổi trong việc đếm số bước chân được phát hiện, thì onDataPoint() được gọi. Trong phương thức này, bạn lặp qua các trường trong tham số DataPoint và hiển thị một thông báo Toast với tên trường và giá trị. Trong ví dụ này, đó sẽ là đếm số bước chân. Trong các ứng dụng của riêng bạn, bạn sẽ sử dụng logic thích hợp hơn để thực hiện nhiệm vụ của mình. Bạn sẽ nhận thấy rằng lệnh Toast được gói trong một Runnable được truyền vào runOnUiThread. Điều này là bởi vì hàm callback không được kích hoạt trên tiến trình UI.
Có hai điều bạn cần phải làm cho ví dụ này. Việc đầu tiên là ngắt kết nối khỏi SensorApi và Google Play Services khi bạn sử dụng xong chúng. Trong ví dụ này, bạn làm điều đó khi onStop() được gọi. Việc thứ hai là lưu trữ các giá trị authInProgress mà được kiểm tra bằng phương thức onCreate() trong onSavedInstanceState().
1
@Override
2
protectedvoidonStop(){
3
super.onStop();
4
5
Fitness.SensorsApi.remove(mApiClient,this)
6
.setResultCallback(newResultCallback<Status>(){
7
@Override
8
publicvoidonResult(Statusstatus){
9
if(status.isSuccess()){
10
mApiClient.disconnect();
11
}
12
}
13
});
14
}
15
16
@Override
17
protectedvoidonSaveInstanceState(BundleoutState){
18
super.onSaveInstanceState(outState);
19
outState.putBoolean(AUTH_PENDING,authInProgress);
20
}
Tổng kết
Trong hướng dẫn này, bạn đã học được cách làm thế nào để kết nối tới Fitness API của Google Play Services và đọc dữ liệu cảm biến theo dõi sức khoẻ từ thiết bị của người dùng. Ngay cả một thứ gì đó đơn giản như dữ liệu số bước đi cho người dùng của bạn có thể minh chứng đây là điều vô cùng quý giá đối với các ứng dụng như mặt đồng hồ Android Wear hay theo dõi mục tiêu. Có hàng tá các loại nguồn dữ liệu khác nhau mà bạn có thể sử dụng và nhiều hàm API khác trong Google Fit để làm cho ứng dụng của bạn tốt hơn.
I'm an Android developer out of Denver, Colorado in the USA. My main interests in development are wearables, media and Internet of Things. I have published a book on Android TV development (http://www.apress.com/9781484217832) and build devices whenever possible, even if those devices aren't the most useful :) Outside of work and development, I have a passion for building Star Wars LEGO sets, playing Ingress/Pokemon Go and reading. I also use to work as a zookeeper, so if you have any burning questions about giraffes, I'm the guy to ask.