Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Primeiros Passos com Google Fit
Search
Douglas Kayama
May 07, 2016
Technology
0
180
Primeiros Passos com Google Fit
3 anos de Android Meetup – GDG São Paulo
Douglas Kayama
May 07, 2016
Tweet
Share
More Decks by Douglas Kayama
See All by Douglas Kayama
TensorFlow no Android – v2
douglasdrumond
0
28
BLE
douglasdrumond
0
23
TensorFlow no Android
douglasdrumond
0
18
Firebase or Realm?
douglasdrumond
0
74
Rio Dev Day – Introdução ao Android
douglasdrumond
0
93
Google I/O
douglasdrumond
0
56
Criando apps com alto nível de qualidade (versão longa)
douglasdrumond
0
36
Criando apps com alto nível de qualidade (versão curta)
douglasdrumond
0
25
RxJava
douglasdrumond
5
540
Other Decks in Technology
See All in Technology
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
390
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.4k
JSON攻略法.pdf
miyakemito
8
5.1k
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
530
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
230
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
630
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
0
300
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
380
Azureの基本的な権限管理の勉強会
yhana
0
580
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
300
ChatGPT for IT Service Management (IT Pro)
dahatake
7
1.6k
Featured
See All Featured
Infographics Made Easy
chrislema
238
18k
Practical Orchestrator
shlominoach
182
9.7k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Into the Great Unknown - MozCon
thekraken
10
990
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Rebuilding a faster, lazier Slack
samanthasiow
73
8.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
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