ส่งความคิดเห็น
สร้างไคลเอ็นต์ฟิตเนส API
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ตัวอย่างนี้แสดงวิธีสร้างไคลเอ็นต์ Fitness API
หมายเหตุ: ในตัวอย่างนี้ ระบบจะอ่านเฉพาะขั้นตอนรวมเท่านั้น จึงไม่มีสิทธิ์ Android
จำเป็น
สร้างไคลเอ็นต์ API ดังนี้
สร้างอินสแตนซ์ FitnessOptions
โดยประกาศ
ประเภทข้อมูล และประเภทการเข้าถึง (อ่านและ/หรือเขียน) แอปของคุณ
ความต้องการ:
เคล็ดลับ: เลือกประเภทข้อมูลอย่างมีความรับผิดชอบ สิ่งที่ไม่ควรทำ
ขอข้อมูลทุกประเภทเผื่อว่าแอปของคุณอาจต้องการข้อมูล ประเภทที่ระบุ
กําหนดขอบเขตที่ผู้ใช้จะได้รับแจ้งให้ให้สิทธิ์ เฉพาะ
ถามประเภทข้อมูลที่แอปของคุณต้องการ เพื่อให้ผู้ใช้มีแนวโน้มที่จะให้สิทธิ์
สิทธิ์การเข้าถึง ผู้ใช้พร้อมให้สิทธิ์ในการเข้าถึงที่จํากัด ซึ่งอธิบายไว้ชัดเจนมากขึ้น
ขอบเขต
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.build()
รับอินสแตนซ์ของออบเจ็กต์ Account
เพื่อใช้กับ API:
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
ตรวจสอบว่าผู้ใช้เคยให้สิทธิเข้าถึงข้อมูลที่จำเป็นหรือไม่ และ
ไม่ใช่ เริ่มต้นขั้นตอนการให้สิทธิ์:
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this, // your activity
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
account,
fitnessOptions)
} else {
accessGoogleFit()
}
หากต้องมีขั้นตอนการให้สิทธิ์ ให้จัดการคำตอบของผู้ใช้ดังนี้
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (resultCode) {
Activity.RESULT_OK -> when (requestCode) {
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE -> accessGoogleFit()
else -> {
// Result wasn't from Google Fit
}
}
else -> {
// Permission not granted
}
}
}
หลังจากผู้ใช้ให้สิทธิ์เข้าถึงข้อมูลที่ขอแล้ว ให้สร้างฟิตเนส
(เช่น HistoryClient
เพื่ออ่านและ/หรือเขียนข้อมูลการออกกำลังกายที่ผ่านมา
ข้อมูล) โดยพิจารณาจากวัตถุประสงค์และความต้องการของแอป ดังนี้
private fun accessGoogleFit() {
val end = LocalDateTime.now()
val start = end.minusYears(1)
val endSeconds = end.atZone(ZoneId.systemDefault()).toEpochSecond()
val startSeconds = start.atZone(ZoneId.systemDefault()).toEpochSecond()
val readRequest = DataReadRequest.Builder()
.aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
.setTimeRange(startSeconds, endSeconds, TimeUnit.SECONDS)
.bucketByTime(1, TimeUnit.DAYS)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
Fitness.getHistoryClient(this, account)
.readData(readRequest)
.addOnSuccessListener({ response ->
// Use response data here
Log.i(TAG, "OnSuccess()")
})
.addOnFailureListener({ e -> Log.d(TAG, "OnFailure()", e) })
}
ส่งความคิดเห็น
เนื้อหาของหน้าเว็บนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่ต้องระบุที่มาของครีเอทีฟคอมมอนส์ 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 เว้นแต่จะระบุไว้เป็นอย่างอื่น โปรดดูรายละเอียดที่นโยบายเว็บไซต์ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2024-08-21 UTC
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"ไม่มีข้อมูลที่ฉันต้องการ"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"ล้าสมัย"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"ปัญหาเกี่ยวกับการแปล"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"อื่นๆ"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"เข้าใจง่าย"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"แก้ปัญหาของฉันได้"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"อื่นๆ"
}]
หากต้องการบอกให้เราทราบเพิ่มเติม
{"lastModified": "\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 2024-08-21 UTC"}
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2024-08-21 UTC"]]