Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Primeiros Passos com Google Fit
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Douglas Kayama
May 07, 2016
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Primeiros Passos com Google Fit
3 anos de Android Meetup – GDG São Paulo
Douglas Kayama
May 07, 2016
More Decks by Douglas Kayama
See All by Douglas Kayama
TensorFlow no Android – v2
douglasdrumond
0
56
BLE
douglasdrumond
0
38
TensorFlow no Android
douglasdrumond
0
40
Firebase or Realm?
douglasdrumond
0
86
Rio Dev Day – Introdução ao Android
douglasdrumond
0
110
Google I/O
douglasdrumond
0
74
Criando apps com alto nível de qualidade (versão longa)
douglasdrumond
0
52
Criando apps com alto nível de qualidade (versão curta)
douglasdrumond
0
38
RxJava
douglasdrumond
5
580
Other Decks in Technology
See All in Technology
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
2k
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
400
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
550
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
370
Incremental HTTP
kazuho
5
1.9k
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
200
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
180
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
500
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
120
企業の現実世界をグラフで写し取る
sansantech
PRO
0
230
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How to build a perfect <img>
jonoalderson
1
6.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
How to Ace a Technical Interview
jacobian
280
24k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
The Cost Of JavaScript in 2023
addyosmani
55
10k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Building the Perfect Custom Keyboard
takai
2
890
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Transcript
Primeiros Passos com Google Fit Douglas Drumond @douglasdrumond
@douglasdrumond O que é o Google Fit?
@douglasdrumond Sensors Activity History
@douglasdrumond Sugestões de apps • Health/Fitness • Wearable sensor based
• Personal analytics (quantified self)
@douglasdrumond Capacidades • Activity • Heart rate • Location •
Nutrition • Power • Speed • Weight • Workout • Strength • Weight Lift • Crossfit • Interval Training • High Intensity Interval Training
@douglasdrumond 3rd party • Nike Fuel • Adidas • Jump
• Hustle • Quickness
@douglasdrumond IMPORTANTE!
@douglasdrumond Seja responsável • Terms and conditions bla bla bla
• RESPEITE O USUÁRIO
@douglasdrumond ARQUITETURA
@douglasdrumond Arquitetura
@douglasdrumond Arquitetura
@douglasdrumond Fitness store • Cloud • Apps em plataformas diferentes
• Apps diferentes
@douglasdrumond Arquitetura
@douglasdrumond Vamos detalhar?
@douglasdrumond Sensor framework • Data sources • Data types •
Data points • Datasets • Sessions
@douglasdrumond Data sources • Sensores • Hardware ou software
@douglasdrumond Data type • Tipos de dados, ex: passos, bpm,
localização • Define um schema • Nome e lista de campos
@douglasdrumond Data points • Array de valores • Timestamp ou
time range
@douglasdrumond Datasets • Conjunto de data points • Mesmo tipo
• Queries (respostas)
@douglasdrumond Sessions • Intervalo de tempo • Organização de dados
@douglasdrumond #soudev
@douglasdrumond Setup
@douglasdrumond Console do Google • Pegar o SHA1 via keytool
• Cadastrar novo client ID • Depende do nome do pacote e assinatura
@douglasdrumond Gradle dependencies { compile 'com.google.android.gms:play-services-fitness:8.4.0' }
@douglasdrumond Construa o client mClient = new GoogleApiClient.Builder(this) .addApi(Fitness.SENSORS_API) .addScope(new
Scope(Scopes.FITNESS_LOCATION_READ)) .addConnectionCallbacks(…) .build();
@douglasdrumond Leia dados Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder() .setDataTypes(DataType.TYPE_LOCATION_SAMPLE) .setDataSourceTypes(DataSource.TYPE_RAW) .build()) .setResultCallback(new
ResultCallback<…>() … for (DataSource dataSource : dataSourcesResult.getDataSources()) { registerFitnessDataListener(dataSource, DataType.TYPE_LOCATION_SAMPLE); } } } });
@douglasdrumond registerFitnessDataListener mListener = new OnDataPointListener() { public void onDataPoint(DataPoint
dataPoint) { for (Field field : dataPoint.getDataType().getFields()) { Value val = dataPoint.getValue(field); Log.i(TAG, "Detected DataPoint field: " + field.getName()); Log.i(TAG, "Detected DataPoint value: " + val); } } };
@douglasdrumond registerFitnessDataListener Fitness.SensorsApi.add(mClient, new SensorRequest.Builder() .setDataSource(dataSource).setDataType(dataType) .setSamplingRate(10, TimeUnit.SECONDS).build(), mListener) .setResultCallback(new
ResultCallback<Status>() { @Override public void onResult(Status status) { if (status.isSuccess()) {Log.i(TAG, "Listener registered!”); } else { Log.i(TAG, "Listener not registered.”); } } });
@douglasdrumond Alguns exemplos DataSource nutritionSource = new DataSource.Builder() .setDataType(DataType.TYPE_NUTRITION) ...
.build(); DataPoint banana = DataPoint.create(nutritionSource); banana.setTimestamp(now.getMillis(), TimeUnit.MILLISECONDS); banana.getValue(Field.FIELD_FOOD_ITEM).setString("banana"); banana.getValue(Field.FIELD_MEAL_TYPE).setInt(Field.MEAL_TYPE_SNACK); banana.getValue(Field.FIELD_NUTRIENTS).setKeyValue(Field.NUTRIENT_POT ASSIUM, 422f)
@douglasdrumond Tópicos não cobertos • Recording API • History API
• Sessions API • BLE API • Config API (Custom Data Types)
@douglasdrumond Samples • https://github.com/googlesamples/android-fit
@douglasdrumond Quero Saber Mais • https://developers.google.com/fit/ • slack.androiddevbr.org
@douglasdrumond Obrigado! •
[email protected]
• @douglasdrumond • +DouglasDrumond • www.cafelinear.com