কিভাবে একটি ওয়ার্কআউট রেকর্ড

এই নথিটি বর্ণনা করে যে কীভাবে ফিটনেস REST API ব্যবহার করে একটি ওয়ার্কআউট রেকর্ড করতে হয়।

ধাপ 1: একটি প্রকল্প সেট আপ করুন

আপনাকে Google API কনসোলে একটি প্রকল্প সেট আপ করতে হবে এবং Fitness REST API-এ অ্যাক্সেস সক্রিয় করতে হবে, যেমন শুরু করা হয়েছে।

ধাপ 2: আপনার অ্যাপ প্রমাণীকরণ করুন

আপনার অ্যাপটিকে একটি অ্যাক্সেস টোকেন ব্যবহার করে Fitness API-তে অনুরোধগুলি প্রমাণীকরণ করতে হবে। অ্যাক্সেস টোকেন পেতে, আপনার অ্যাপটিতে ক্লায়েন্ট-নির্দিষ্ট শংসাপত্র এবং অ্যাক্সেসের সুযোগ রয়েছে, যেমনটি অনুমোদনের অনুরোধে বর্ণিত হয়েছে।

ধাপ 3: একটি ডেটা উৎস তৈরি করুন

একটি ডেটা উত্স একটি নির্দিষ্ট ধরণের সেন্সর ডেটার উত্স উপস্থাপন করে। ফিটনেস স্টোরে ঢোকানো সমস্ত ডেটা অবশ্যই ডেটা উত্সের সাথে যুক্ত হতে হবে। আপনি একবার ডেটা উত্স তৈরি করতে পারেন এবং ভবিষ্যতের সেশনের জন্য সেগুলি পুনরায় ব্যবহার করতে পারেন।

একটি ডেটা উত্স তৈরি করতে, এই পরামিতিগুলির সাথে একটি প্রমাণীকৃত HTTP অনুরোধ জমা দিন:

HTTP পদ্ধতি
পোস্ট
সম্পদ

https://www.googleapis.com/fitness/v1/users/me/dataSources

me ইউজার আইডি সেই ব্যবহারকারীকে বোঝায় যার অ্যাক্সেস টোকেন অনুরোধ অনুমোদন করে।

শরীরের অনুরোধ
{
"name": "example-fit-heart-rate",
"dataStreamId":
    "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456",
"dataType": {
    "field": [{
        "name": "bpm",
        "format": "floatPoint"
    }],
    "name": "com.google.heart_rate.bpm"
},
"application": {
    "packageName": "com.example.fit.someapp",
    "version": "1.0"
},
"device": {
    "model": "example-fit-hrm-1",
    "version": "1",
    "type": "watch",
    "uid": "123456",
    "manufacturer":"Example Fit"
},
"type": "raw"
}

এই অনুরোধটি একটি ডেটা উত্স তৈরি করে যা একটি হার্ট রেট মনিটরের প্রতিনিধিত্ব করে যা com.google.heart_rate.bpm ধরণের ফিটনেস ডেটা সরবরাহ করে। আপনাকে অবশ্যই ডেটা উৎসের আইডি নির্দিষ্ট করতে হবে এবং এটি যেকোনো মান হতে পারে। এই উদাহরণে ডেটা উৎস আইডি একটি যুক্তিসঙ্গত নামকরণের নিয়ম অনুসরণ করে যা আপনি গ্রহণ করতে পারেন। ডিভাইস উপাদান ঐচ্ছিক যদি ডেটা শুধুমাত্র একটি অ্যাপ দ্বারা তৈরি করা হয়।

অনুরোধটি সফল হলে, প্রতিক্রিয়া হল একটি 200 OK স্ট্যাটাস কোড।

ডেটা উত্স সম্পর্কে আরও তথ্যের জন্য, Users.dataSources সম্পদের API রেফারেন্স দেখুন৷

ধাপ 4: ডেটা পয়েন্ট যোগ করুন

আপনি ফিটনেস স্টোরে ডেটা পয়েন্ট সন্নিবেশ করতে ডেটাসেট ব্যবহার করেন। একটি ডেটাসেট হল সময়ের দ্বারা আবদ্ধ একটি একক ডেটা উৎস থেকে ডেটা পয়েন্টের সংগ্রহ।

একটি ডেটাসেট তৈরি করতে এবং এতে পয়েন্ট যোগ করতে, এই পরামিতিগুলির সাথে একটি প্রমাণীকৃত HTTP অনুরোধ জমা দিন:

HTTP পদ্ধতি
প্যাচ
সম্পদ

https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.heart_rate.bpm:1234567890:Example%20Fit:example-fit-hrm-1:123456/datasets/1411053997000000000-1411057556000000000

ইউআরএলে ডেটা সোর্স আইডি এবং ন্যানোসেকেন্ডে ডেটাসেটের শুরু ও শেষের সময় অন্তর্ভুক্ত থাকে।

শরীরের অনুরোধ
{
"minStartTimeNs": 1411053997000000000,
"maxEndTimeNs": 1411057556000000000,
"dataSourceId":
  "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456",
"point": [
{
  "startTimeNanos": 1411053997000000000,
  "endTimeNanos": 1411053997000000000,
  "dataTypeName": "com.google.heart_rate.bpm",
  "value": [
    {
      "fpVal": 78.8
    }
  ]
},
{
  "startTimeNanos": 1411055000000000000,
  "endTimeNanos": 1411055000000000000,
  "dataTypeName": "com.google.heart_rate.bpm",
  "value": [
    {
      "fpVal": 89.1
    }
  ]
},
{
  "startTimeNanos": 1411057556000000000,
  "endTimeNanos": 1411057556000000000,
  "dataTypeName": "com.google.heart_rate.bpm",
  "value": [
    {
      "fpVal": 62.45
    }
  ]
}
]
}

এই অনুরোধটি পূর্ববর্তী ধাপে ডেটা উৎসের জন্য এক ঘন্টার মধ্যে তিনটি হার্ট রেট ডেটা পয়েন্ট সহ একটি ডেটাসেট তৈরি করে৷

অনুরোধটি সফল হলে, প্রতিক্রিয়া হল একটি 200 OK স্ট্যাটাস কোড।

ডেটাসেট সম্পর্কে আরও তথ্যের জন্য, Users.dataSources.datasets রিসোর্সের API রেফারেন্স দেখুন।

বৈধ টাইমস্ট্যাম্প তৈরি করুন

উপরের উদাহরণে টাইমস্ট্যাম্পগুলি ন্যানোসেকেন্ডে। বৈধ টাইমস্ট্যাম্প তৈরি করতে, আপনি নিম্নলিখিত পাইথন স্ক্রিপ্ট ব্যবহার করতে পারেন:

from datetime import datetime, timedelta
import calendar

def date_to_nano(ts):
    """
    Takes a datetime object and returns POSIX UTC in nanoseconds
    """
    return calendar.timegm(ts.utctimetuple()) * int(1e9)

if __name__ == '__main__':
    print 'Current time is %d' % date_to_nano(datetime.now())
    print 'Time 1 hour ago was %d' % date_to_nano(datetime.now() +
       timedelta(hours=-1))

ধাপ 5: একটি সেশন তৈরি করুন

এখন আপনি ফিটনেস স্টোরে ডেটা ঢোকিয়েছেন, আপনি এই ওয়ার্কআউটের জন্য অতিরিক্ত মেটাডেটা প্রদান করতে একটি সেশন সন্নিবেশ করতে পারেন। সেশনগুলি একটি সময়ের ব্যবধানের প্রতিনিধিত্ব করে যার সময় ব্যবহারকারীরা একটি ফিটনেস কার্যকলাপ সম্পাদন করে।

এই ওয়ার্কআউটের জন্য একটি সেশন তৈরি করতে, এই পরামিতিগুলির সাথে একটি প্রমাণীকৃত HTTP অনুরোধ জমা দিন:

HTTP পদ্ধতি
PUT
সম্পদ

https://www.googleapis.com/fitness/v1/users/me/sessions/ sessionId

sessionId নির্বিচারে এবং প্রমাণীকৃত ব্যবহারকারীর সাথে যুক্ত সমস্ত সেশনের জন্য অনন্য হতে হবে।

শরীরের অনুরোধ
{
"id": "example-fit-1411053997",
"name": "Example Fit Run on Sunday Afternoon",
"description": "Example Fit Running Session",
"startTimeMillis": 1411053997000,
"endTimeMillis": 1411057556000,
"application": {
"name": "Foo Example App",
"version": "1.0"
},
"activityType": 8
}

একটি সেশনের নাম চয়ন করুন যা মানব-পাঠযোগ্য এবং বর্ণনামূলক, যেহেতু এটি সেশনের সংক্ষিপ্তসারের জন্য অন্যান্য অ্যাপ ব্যবহার করতে পারে। সেশনের শুরু এবং শেষের সময় মিলিসেকেন্ডে (ন্যানোসেকেন্ড নয়)। আপনার সেশন এবং আপনার ডেটা উত্সের জন্য একই প্যাকেজ নাম ব্যবহার করুন; এটি ডেটাকে আরও সামঞ্জস্যপূর্ণ করে তোলে এবং নিশ্চিত করে যে ডেটা অ্যাট্রিবিউশন আপনার অ্যাপের সাথে লিঙ্ক করা হবে।

এই সেশনে নির্দিষ্ট সময়ের ব্যবধানটি আগে ঢোকানো হার্ট রেট ডেটা কভার করে, তাই Google ফিট এই সেশনের সাথে সেই ডেটা পয়েন্টগুলিকে সংযুক্ত করে৷

সেশন সম্পর্কে আরও তথ্যের জন্য, Users.sessions রিসোর্সের API রেফারেন্স দেখুন।

ধাপ 6: কার্যকলাপ বিভাগ তৈরি করুন

কার্যকলাপ বিভাগ আপনাকে একটি সেশনের মধ্যে বিভিন্ন কার্যকলাপ প্রতিনিধিত্ব করতে সাহায্য করে। একটি কার্যকলাপ বিভাগ হল একটি সময় বিভাগ যা একটি একক কার্যকলাপ কভার করে। উদাহরণস্বরূপ, যদি একজন ব্যবহারকারী এক ঘন্টা running যান, আপনি পুরো ঘন্টার জন্য (8) টাইপের একটি কার্যকলাপ বিভাগ তৈরি করতে পারেন। যদি একজন ব্যবহারকারী 25 মিনিটের জন্য দৌড়ায়, 5-এর জন্য বিরতি নেয়, তারপরে আরও আধা ঘন্টা চালায়, আপনি যথাক্রমে running , unknown , এবং running ধরণের তিনটি ধারাবাহিক কার্যকলাপ বিভাগ তৈরি করতে পারেন৷

একটি কার্যকলাপ বিভাগ তৈরি করা অন্য কোনো ডেটা পয়েন্ট যোগ করার মতই। অ্যাক্টিভিটি সেগমেন্ট তৈরি করতে, প্রথমে একটি অ্যাক্টিভিটি সেগমেন্ট ডেটা সোর্স তৈরি করুন, তারপর একটি ডেটাসেট তৈরি করুন এবং এতে অ্যাক্টিভিটি সেগমেন্ট ডেটা পয়েন্ট যোগ করুন।

নিম্নোক্ত উদাহরণটি হার্ট রেট রিডিংয়ের মতো একই টাইমফ্রেমে তিনটি সেগমেন্ট (চালানো, বিশ্রাম নেওয়া এবং দৌড়ানো) তৈরি করে, ধরে নিচ্ছি যে আপনি ইতিমধ্যেই একটি অ্যাক্টিভিটি সেগমেন্ট ডেটা সোর্স তৈরি করেছেন এবং ডেটা সোর্স আইডি হল "raw:com.google.activity.segment: 1234567890:Example Fit:example-fit-hrm-1:123456":

HTTP পদ্ধতি
প্যাচ
সম্পদ
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
শরীরের অনুরোধ
{
"minStartTimeNs": 1411053997000000000,
"maxEndTimeNs": 1411057556000000000,
"dataSourceId":
  "raw:com.google.activity.segment:1234567890",
"point": [
{
  "startTimeNanos": 1411053997000000000,
  "endTimeNanos": 1411053997000000000,
  "dataTypeName": "com.google.activity.segment",
  "value": [
    {
      "intVal": 8
    }
  ]
},
{
  "startTimeNanos": 1411055000000000000,
  "endTimeNanos": 1411055000000000000,
  "dataTypeName": "com.google.activity.segment",
  "value": [
    {
      "intVal": 4
    }
  ]
},
{
  "startTimeNanos": 1411057556000000000,
  "endTimeNanos": 1411057556000000000,
  "dataTypeName": "com.google.activity.segment",
  "value": [
    {
      "intVal": 8
    }
  ]
}
]
}

এই কার্যকলাপ বিভাগের ডেটা পয়েন্টগুলি একটি ডেটা উৎসে যোগ করা হয় যা বিশেষভাবে কার্যকলাপ বিভাগগুলি পরিচালনা করার জন্য তৈরি করা হয়েছে। আপনি সেগমেন্টের প্রতিটি সেটের জন্য একটি নতুন ডেটা উত্স তৈরি করতে পারেন, তবে আপনার একটি নির্দিষ্ট ধরণের সেশনের জন্য উত্সর্গীকৃত একটি পুনরায় ব্যবহার করা উচিত, যেমন চলমান৷

সেশনগুলি একটি কার্যকলাপের ধরন নির্দিষ্ট করে, যা ব্যবহারকারীর নিযুক্ত সামগ্রিক কার্যকলাপের সাথে মেলে৷ এমনকি যদি একজন ব্যবহারকারী দৌড়ানোর সময় বিরতি নেয়, সামগ্রিক অনুশীলন এখনও একটি দৌড়৷ সাধারণভাবে সেশনের কার্যকলাপের ধরন প্রভাবশালী কার্যকলাপ বিভাগের প্রকারের সাথে মিলবে।

একজন ব্যবহারকারী বিশ্রাম নিচ্ছেন তা বোঝাতে অজানা (4) কার্যকলাপের ধরন ব্যবহার করুন, কারণ আপনি হয়তো জানেন না যে ব্যবহারকারী কী করছেন: তারা স্থির, বা প্রসারিত, পানীয় জল ইত্যাদি হতে পারে। আপনি যদি জানেন যে ব্যবহারকারী সরছে না, আপনি এখনও (3) ব্যবহার করতে পারেন।

কার্যকলাপের প্রকারের বিস্তারিত তালিকার জন্য, কার্যকলাপের প্রকারগুলি দেখুন।

সারসংক্ষেপ

এই টিউটোরিয়ালে, আপনি ডেটার ধরন এবং কার্যকলাপ বিভাগের জন্য ডেটা উত্স তৈরি করেছেন; আপনি ফিটনেস স্টোরে ডেটা পয়েন্ট ঢোকিয়েছেন; আপনি একটি workout সময় সংঘটিত বিভিন্ন কার্যকলাপ প্রতিনিধিত্ব করার জন্য কার্যকলাপ বিভাগ তৈরি করেছেন; এবং আপনি একটি সেশন সন্নিবেশ করান যা পুরো ওয়ার্কআউট কভার করে।

Google Fit আপনার ঢোকানো ডেটা এবং সেই সময়ের ব্যবধানের জন্য উপলব্ধ অন্য যে কোনও ডেটা ব্যবহারকারীর ওয়ার্কআউটকে প্রতিনিধিত্ব করে এমন একটি সেশনের সাথে সংযুক্ত করে৷