在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):StasDoskalenko/react-native-google-fit开源软件地址(OpenSource Url):https://github.com/StasDoskalenko/react-native-google-fit开源编程语言(OpenSource Language):Java 81.1%开源软件介绍(OpenSource Introduction):react-native-google-fitGitter Group - ask questions, answer questions! A React Native bridge module for interacting with Google Fit Quick LinksRequirementIf you didn't set Android 11For Android 11, If you want to interact with <queries>
<package android:name="com.google.android.apps.fitness" />
</queries> USAGE
2. Authorize:To check whethere GoogleFit is already authorized, simply use a function, then you can refer to the static property GoogleFit.isAuthorized GoogleFit.checkIsAuthorized().then(() => {
console.log(GoogleFit.isAuthorized) // Then you can simply refer to `GoogleFit.isAuthorized` boolean.
}) or with async/await syntax await checkIsAuthorized();
console.log(GoogleFit.isAuthorized); // The list of available scopes inside of src/scopes.js file
const options = {
scopes: [
Scopes.FITNESS_ACTIVITY_READ,
Scopes.FITNESS_ACTIVITY_WRITE,
Scopes.FITNESS_BODY_READ,
Scopes.FITNESS_BODY_WRITE,
],
}
GoogleFit.authorize(options)
.then(authResult => {
if (authResult.success) {
dispatch("AUTH_SUCCESS");
} else {
dispatch("AUTH_DENIED", authResult.message);
}
})
.catch(() => {
dispatch("AUTH_ERROR");
})
// ...
// Call when authorized
GoogleFit.startRecording((callback) => {
// Process data from Google Fit Recording API (no google fit app needed)
}); Note: If you are using the recording API for location/ distance data, you have to request the Alternatively you can use event listeners (deprecated) GoogleFit.onAuthorize(() => {
dispatch('AUTH SUCCESS')
})
GoogleFit.onAuthorizeFailure(() => {
dispatch('AUTH ERROR')
}) 3. Retrieve Steps For Periodconst opt = {
startDate: "2017-01-01T00:00:17.971Z", // required ISO8601Timestamp
endDate: new Date().toISOString(), // required ISO8601Timestamp
bucketUnit: BucketUnit.DAY, // optional - default "DAY". Valid values: "NANOSECOND" | "MICROSECOND" | "MILLISECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY"
bucketInterval: 1, // optional - default 1.
};
GoogleFit.getDailyStepCountSamples(opt)
.then((res) => {
console.log('Daily steps >>> ', res)
})
.catch((err) => {console.warn(err)});
// or with async/await syntax
async function fetchData() {
const res = await GoogleFit.getDailyStepCountSamples(opt);
console.log(res);
}
// shortcut functions,
// return weekly or daily steps of given date
// all params are optional, using new Date() without given date,
// adjustment is 0 by default, determine the first day of week, 0 == Sunday, 1==Monday, etc.
GoogleFit.getDailySteps(date).then().catch()
GoogleFit.getWeeklySteps(date, adjustment).then().catch() Response: [
{ source: "com.google.android.gms:estimated_steps", steps: [
{
"date":"2019-06-29","value":2328
},
{
"date":"2019-06-30","value":8010
}
]
},
{ source: "com.google.android.gms:merge_step_deltas", steps: [
{
"date":"2019-06-29","value":2328
},
{
"date":"2019-06-30","value":8010
}
]
},
{ source: "com.xiaomi.hm.health", steps: [] }
]; Note: bucket Config for step reflects on Response: // {bucketInterval: 15, bucketUnit: BucketUnit.MINUTE}
[
{ source: "com.google.android.gms:estimated_steps",
steps: [
{
"date":"2019-07-06","value": 135
},
],
rawSteps: [
{"endDate": 1594012101944, "startDate": 1594012041944, "steps": 13},
{"endDate": 1594020600000, "startDate": 1594020596034, "steps": 0},
{"endDate": 1594020693175, "startDate": 1594020600000, "steps": 24},
{"endDate": 1594068898912, "startDate": 1594068777409, "steps": 53},
{"endDate": 1594073158830, "startDate": 1594073066166, "steps": 45}
]
},
]
// {bucketInterval: 1, bucketUnit: BucketUnit.DAY}
[
{ source: "com.google.android.gms:estimated_steps",
...
rawSteps: [
{"endDate": 1594073158830, "startDate": 1594012041944, "steps": 135}
]
}
] 4. Retrieve Weightsconst opt = {
unit: "pound", // required; default 'kg'
startDate: "2017-01-01T00:00:17.971Z", // required
endDate: new Date().toISOString(), // required
bucketUnit: BucketUnit.DAY, // optional - default "DAY". Valid values: "NANOSECOND" | "MICROSECOND" | "MILLISECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY"
bucketInterval: 1, // optional - default 1.
ascending: false // optional; default false
};
GoogleFit.getWeightSamples(opt).then((res)=> {
console.log(res)
});
// or with async/await syntax
async function fetchData() {
const res = await GoogleFit.getWeightSamples(opt);
console.log(res);
} Response: [
{
"addedBy": "app_package_name",
"value":72,
"endDate":"2019-06-29T15:02:23.413Z",
"startDate":"2019-06-29T15:02:23.413Z",
"day":"Sat"
},
{
"addedBy": "app_package_name",
"value":72.4000015258789,
"endDate":"2019-07-26T08:06:42.903Z",
"startDate":"2019-07-26T08:06:42.903Z",
"day":"Fri"
}
] 5. Retrieve Heightsconst opt = {
startDate: "2017-01-01T00:00:17.971Z", // required
endDate: new Date().toISOString(), // required
};
GoogleFit.getHeightSamples(opt).then((res)=> {
console.log(res);
}); Response: [
{
"addedBy": "app_package_name",
"value":1.7699999809265137, // Meter
"endDate":"2019-06-29T15:02:23.409Z",
"startDate":"2019-06-29T15:02:23.409Z",
"day":"Sat"
}
] 6. Save Weightsconst opt = {
value: 200,
date: new Date().toISOString(),
unit: "pound"
};
GoogleFit.saveWeight(opt, (err, res) => {
if (err) throw "Cant save data to the Google Fit";
}); 7. Blood pressure and Heart rate methods (since version 0.8)Heartrate Scopes:
[
Scopes.FITNESS_ACTIVITY_READ,
Scopes.FITNESS_ACTIVITY_WRITE,
Scopes.FITNESS_HEART_RATE_READ,
Scopes.FITNESS_HEART_RATE_WRITE,
];
Blood pressure:
[
FITNESS_BLOOD_PRESSURE_READ,
FITNESS_BLOOD_PRESSURE_WRITE,
FITNESS_BLOOD_GLUCOSE_READ,
FITNESS_BLOOD_GLUCOSE_WRITE,
]; const options = {
startDate: "2017-01-01T00:00:17.971Z", // required
endDate: new Date().toISOString(), // required
bucketUnit: BucketUnit.DAY, // optional - default "DAY". Valid values: "NANOSECOND" | "MICROSECOND" | "MILLISECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY"
bucketInterval: 1, // optional - default 1.
}
async function fetchData() {
const heartrate = await GoogleFit.getHeartRateSamples(opt);
console.log(heartrate);
const bloodpressure = await GoogleFit.getBloodPressureSamples(opt);
console.log(bloodpressure);
} Response: // heart rate
[
{
"value":80,
"endDate":"2019-07-26T10:19:21.348Z",
"startDate":"2019-07-26T10:19:21.348Z",
"day":"Fri"
}
]
// blood pressure
[
{
"systolic":120,
"diastolic":80,
"endDate":"2019-07-26T08:39:28.493Z",
"startDate":"1970-01-01T00:00:00.000Z",
"day":"Thu"
}
] 8. Get all activities
let opt = {
startDate: "2017-01-01T00:00:17.971Z", // required
endDate: new Date().toISOString(), // required
bucketUnit: BucketUnit.DAY, // optional - default "DAY". Valid values: "NANOSECOND" | "MICROSECOND" | "MILLISECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY"
bucketInterval: 1, // optional - default 1.
};
GoogleFit.getActivitySamples(opt).then((res)=> {
console.log(res)
});
// or with async/await syntax
async function fetchData() {
const res = await GoogleFit.getActivitySamples(opt);
console.log(res);
} Response: [ {
sourceName: 'Android',
device: 'Android',
sourceId: 'com.google.android.gms',
calories: 764.189208984375,
quantity: 6,
end: 1539774300992,
tracked: true,
activityName: 'still',
start: 1539727200000 },
{ sourceName: 'Android',
device: 'Android',
sourceId: 'com.google.android.gms',
calories: 10.351096153259277,
quantity: 138,
end: 1539774486088,
tracked: true,
distance: 88.09545135498047,
activityName: 'walking',
}] Where:
Note that optional parametrs are not presented in all activities - only where google fit return some results for this field. Like no distance for still activity. 9. Retrieve Calories For Period const opt = {
startDate: "2017-01-01T00:00:17.971Z", // required
endDate: new Date().toISOString(), // required
basalCalculation: true, // optional, to calculate or not basalAVG over the week
bucketUnit: BucketUnit.DAY, // optional - default "DAY". Valid values: "NANOSECOND" | "MICROSECOND" | "MILLISECOND" | "SECOND" | "MINUTE" | "HOUR" | "DAY"
bucketInterval: 1, // optional - default 1.
};
GoogleFit.getDailyCalorieSamples(opt).then((res) => {
console.log(res);
}); Response: [
{
"calorie":1721.948974609375,
"endDate":"2019-06-27T15:13:27.000Z",
"startDate":"2019-06-27T15:02:23.409Z",
"day":"Thu"
},
{
"calorie":1598.25,
"endDate":"2019-06-28T15:13:27.000Z",
"startDate":"2019-06-27T15:13:27.000Z",
"day":"Thu"
}
] 10. Retrieve Distance For Period:全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论