Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android Google Fit

642 views

Published on

It's the LT presentation for Potatotips that organized by Cookpad.
This time was hold by Goodpatch that is the prominent UI/UX design company in Japan, especially in Japan and Germany.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Android Google Fit

  1. 1. Google Fit FiNC.Inc Yuki Nanri
  2. 2. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  3. 3. Introduction • Yuki Nanri (@neonankiti) • Bison • FiNC Android Developer
  4. 4. What is FiNC Digital Healthcare Company We have various specialists such as doctors, pharmacists, personal trainers, nutritionists, researchers, and engineers
  5. 5. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  6. 6. What you can learn today Whole Picture of Google Fit
  7. 7. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  8. 8. What is Google Fit The Healthcare Platform Sharing Data Through APIs • aggregates Any Kind of Healthcare Data • shares Them with APIs • can Access from Multiple Platforms • keeps Some Records automatically
  9. 9. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  10. 10. How Google Fit Works reference: https://developers.google.com/fit/overview
  11. 11. Components • The Fitness Store • The Sensor Framework • Permissions and User Controls • Google Fit APIs Main Components of Google Fit
  12. 12. Points of Today Focus on Fitness APIs reference: https://developers.google.com/fit/android/ • Sensor API • Record API • History API • Session API • Others(BLE, Config APIs)
  13. 13. Before Discussing APIs There are 3 Fitness Data Types • Public Data Types • Private Custom Data Types • Shareable Data Types
  14. 14. Fitness APIs Sensor API reference: https://developers.google.com/fit/android/ • read Raw Sensor in Real Time • list Data Sources • use Listeners
  15. 15. Fitness APIs reference: https://developers.google.com/fit/android/ • store Data of Sensor by Subscriptions. • use Multiple Subscriptions at the same time • the Data Stored will be Here Used from History API Record API
  16. 16. Fitness APIs reference: https://developers.google.com/fit/android/ • can Use Reading, Inserting and Deleting Data • can Use Synchronously and Asynchronously • arrange Period Freely History API
  17. 17. Fitness APIs Session API reference: https://developers.google.com/fit/android/ • create Session with Record API • read Fitness Data Using Session • show Sessions in Other Apps • use Session Broadcast Intents
  18. 18. Preparation reference: https://developers.google.com/fit/android/ • Install Google Play Services • Get a Google Account • Create an OAuth Client ID • Register the Public Certificate • Add Google Play Service in Build Gradle • Enjoy Fit APIs !! All You Have to Do is
  19. 19. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  20. 20. Use Case in FiNC Many Tasks that Logs Users Health Weight Sleeping Time Food
  21. 21. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  22. 22. Steps Step2 Use Location API Step1 Create Google API Client • add API Types • add Scopes(Permission) • add Callbacks
  23. 23. Step1 Create Google API Client private void buildFitnessClient() {
 mClient = new GoogleApiClient.Builder(this)
 // can add multiple api types
 .addApi(Fitness.SENSORS_API)
 .addApi(Fitness.RECORDING_API)
 .addApi(Fitness.HISTORY_API)
 // can add multiple scopes
 .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
 .addScope(new Scope(Scopes.FITNESS_LOCATION_READ))
 .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
 .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE))
 //
 .addConnectionCallbacks(
 new GoogleApiClient.ConnectionCallbacks() {
 
 @Override
 public void onConnected(Bundle bundle) {
 Log.i(TAG, "Connected!!!");
 // use fitness apis freely!!
 }
 
 @Override
 public void onConnectionSuspended(int i) {
 }
 }
 )
 .addOnConnectionFailedListener(
 new GoogleApiClient.OnConnectionFailedListener() {
 // Called whenever the API client fails to connect.
 @Override
 public void onConnectionFailed(ConnectionResult result) {
 }
 }
 )
 .build();
 }

  24. 24. Step2 Use Location API Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
 // at least one datatype must be specified.
 .setDataTypes(DataType.TYPE_LOCATION_SAMPLE)
 .setDataSourceTypes(DataSource.TYPE_RAW)
 .build())
 .setResultCallback(new ResultCallback<DataSourcesResult>() {
 @Override
 public void onResult(DataSourcesResult dataSourcesResult) { 
 for (DataSource dataSource : dataSourcesResult.getDataSources()) {
 Log.i(TAG, "Data source found: " + dataSource.toString());
 Log.i(TAG, "Data Source type: " + dataSource.getDataType().getName());
 
 if (dataSource.getDataType().equals(DataType.TYPE_LOCATION_SAMPLE)
 && mListener == null) {
 Log.i(TAG, "Data source for LOCATION_SAMPLE found! Registering.");
 registerFitnessDataListener(dataSource, DataType.TYPE_LOCATION_SAMPLE);
 }
 } 
 }
 });
  25. 25. Step2 Use Location API private OnDataPointListener mListener; private float latitude, longitude, altitude, accuracy; 
 private void registerFitnessDataListener(DataSource dataSource, DataType dataType) {
 mListener = new OnDataPointListener() {
 @Override
 public void onDataPoint(DataPoint dataPoint) {
 for (Field field : dataPoint.getDataType().getFields()) {
 final Value val = dataPoint.getValue(field);
 Log.i(TAG, "Detected DataPoint field: " + field.getName());
 Log.i(TAG, "Detected DataPoint value: " + val);
 switch (field.getName()) {
 case "latitude":
 latitude = val.asFloat();
 break;
 case "longitude":
 longitude = val.asFloat();
 break;
 case "altitude":
 altitude = val.asFloat();
 break;
 case "accuracy":
 accuracy = val.asFloat();
 break;
 }
 }
 runOnUiThread(new Runnable() {
 @Override
 public void run() {
 latitudeView.setText(String.valueOf(latitude));
 longitudeView.setText(String.valueOf(longitude));
 altitudeView.setText(String.valueOf(altitude));
 accuracyView.setText(String.valueOf(accuracy));
 }
 });
 }
 };
 //register listener
  26. 26. Introduction What you can learn today What is Google Fit How Google Fit works Use Case in FiNC Implementation Recruitment
  27. 27. Recruitment ・Good knowledge of Android Application ・Strong Coding Skills and Computer Science  Fundamentals ・Experience Shipping Products
  28. 28. ç FiNC.Inc Yuki Nanri Thank You

×