সেন্সর প্রকার

এই অংশে সেন্সর অক্ষ, মূল সেন্সর এবং যৌগিক সেন্সর (সক্রিয়তা, অবস্থান, অ-ক্রমাঙ্কিত এবং মিথস্ক্রিয়া) বর্ণনা করা হয়েছে।

সেন্সর অক্ষ

অনেকগুলো সেন্সর থেকে প্রাপ্ত সেন্সর ইভেন্ট ভ্যালু একটি নির্দিষ্ট ফ্রেমে প্রকাশ করা হয়, যা ডিভাইসের সাপেক্ষে স্থির থাকে।

মোবাইল ডিভাইস অক্ষ

সেন্সর এপিআই শুধুমাত্র স্ক্রিনের স্বাভাবিক ওরিয়েন্টেশনের সাপেক্ষে কাজ করে (ডিভাইসের স্ক্রিন ওরিয়েন্টেশন পরিবর্তিত হলেও অক্ষগুলো অদলবদল হয় না)।

মোবাইল ডিভাইসের জন্য সেন্সর এপিআই-এর সমন্বয় ব্যবস্থা

চিত্র ১. সেন্সর এপিআই দ্বারা ব্যবহৃত স্থানাঙ্ক ব্যবস্থা (মোবাইল ডিভাইসের সাপেক্ষে)।

স্বয়ংচালিত অক্ষ

অ্যান্ড্রয়েড অটোমোটিভ বাস্তবায়নে, অক্ষগুলো গাড়ির বডি ফ্রেমের সাপেক্ষে সংজ্ঞায়িত করা হয়। গাড়ির রেফারেন্স ফ্রেমের মূলবিন্দু হলো পেছনের অ্যাক্সেলের কেন্দ্র। গাড়ির রেফারেন্স ফ্রেমটি এমনভাবে বিন্যস্ত থাকে যাতে:

  • এক্স-অক্ষ ডানদিকে নির্দেশ করে এবং এটি একটি অনুভূমিক তলে অবস্থিত, যা যানবাহনের প্রতিসাম্য তলের উপর লম্ব।
  • Y-অক্ষ সামনের দিকে নির্দেশ করে এবং এটি একটি অনুভূমিক তলে অবস্থিত।
স্বয়ংচালিত ডিভাইসের জন্য সেন্সর এপিআই-এর স্থানাঙ্ক ব্যবস্থা

চিত্র ২. সেন্সর এপিআই দ্বারা ব্যবহৃত স্থানাঙ্ক ব্যবস্থা (একটি স্বয়ংচালিত ডিভাইসের সাপেক্ষে)।

যানবাহনের রেফারেন্স ফ্রেমটি একটি ডান-হাতি স্থানাঙ্ক ব্যবস্থা। তাই, Z-অক্ষ উপরের দিকে নির্দেশ করে।

নির্দেশ তন্ত্রের Z-অক্ষ অভিকর্ষের সাথে সারিবদ্ধ থাকে, যার অর্থ হলো X-অক্ষ এবং Y-অক্ষ উভয়ই অনুভূমিক। ফলে, Y-অক্ষ সবসময় সামনের অ্যাক্সেলের মধ্য দিয়ে নাও যেতে পারে।

বেস সেন্সর

বেস সেন্সর টাইপগুলোর নামকরণ করা হয় সেইসব ফিজিক্যাল সেন্সরের নামানুসারে, যেগুলোকে তারা প্রতিনিধিত্ব করে। এই সেন্সরগুলো একটিমাত্র ফিজিক্যাল সেন্সর থেকে ডেটা প্রেরণ করে (কম্পোজিট সেন্সরের বিপরীতে, যেগুলো অন্যান্য সেন্সর থেকে ডেটা তৈরি করে)। বেস সেন্সর টাইপের উদাহরণগুলো হলো:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

তবে, বেস সেন্সর তার অন্তর্নিহিত ফিজিক্যাল সেন্সরের সমান নয় এবং এর সাথে একে গুলিয়ে ফেলা উচিত নয়। বেস সেন্সর থেকে প্রাপ্ত ডেটা ফিজিক্যাল সেন্সরের কাঁচা আউটপুট নয় , কারণ এতে বিভিন্ন সংশোধন (যেমন বায়াস কম্পেনসেশন এবং টেম্পারেচার কম্পেনসেশন) প্রয়োগ করা হয়।

উদাহরণস্বরূপ, নিম্নলিখিত ব্যবহারের ক্ষেত্রগুলিতে একটি বেস সেন্সরের বৈশিষ্ট্যগুলি তার অন্তর্নিহিত ভৌত সেন্সরের বৈশিষ্ট্য থেকে ভিন্ন হতে পারে:

  • একটি জাইরোস্কোপ চিপ যার বায়াস রেঞ্জ ১ ডিগ্রি/সেকেন্ড।
    • ফ্যাক্টরি ক্যালিব্রেশনের পর টেম্পারেচার কম্পেনসেশন এবং বায়াস কম্পেনসেশন প্রয়োগ করা হলে, অ্যান্ড্রয়েড সেন্সরের প্রকৃত বায়াস কমে যাবে, যা এমন একটি পর্যায়ে পৌঁছাতে পারে যেখানে বায়াস ০.০১ ডিগ্রি/সেকেন্ডের নিচে থাকার নিশ্চয়তা দেওয়া হয়।
    • এই পরিস্থিতিতে, আমরা বলি যে অ্যান্ড্রয়েড সেন্সরটির বায়াস ০.০১ ডিগ্রি/সেকেন্ডের নিচে, যদিও মূল সেন্সরটির ডেটাশিটে ১ ডিগ্রি/সেকেন্ড উল্লেখ করা ছিল।
  • একটি ব্যারোমিটার যার বিদ্যুৎ খরচ ১০০ মাইক্রোওয়াট।
    • যেহেতু উৎপন্ন ডেটা চিপ থেকে SoC-তে পরিবহন করতে হয়, তাই ব্যারোমিটার অ্যান্ড্রয়েড সেন্সর থেকে ডেটা সংগ্রহের প্রকৃত বিদ্যুৎ খরচ অনেক বেশি হতে পারে, যেমন ১০০০ uW।
    • এই পরিস্থিতিতে, আমরা বলি যে অ্যান্ড্রয়েড সেন্সরটির বিদ্যুৎ খরচ ১০০০ uW, যদিও ব্যারোমিটার চিপের লিডগুলিতে পরিমাপ করা বিদ্যুৎ খরচ ১০০uW।
  • একটি ম্যাগনেটোমিটার যা ক্যালিব্রেট করার সময় ১০০uW শক্তি খরচ করে, কিন্তু ক্যালিব্রেট করার সময় আরও বেশি শক্তি খরচ করে।
    • এর ক্যালিব্রেশন প্রক্রিয়ার জন্য জাইরোস্কোপ সক্রিয় করার প্রয়োজন হতে পারে, যা ৫০০০ মাইক্রোওয়াট শক্তি খরচ করে, এবং কোনো অ্যালগরিদম চালানোর প্রয়োজন হতে পারে, যার জন্য আরও ৯০০ মাইক্রোওয়াট খরচ হয়।
    • এই পরিস্থিতিতে, আমরা বলি যে (ম্যাগনেটোমিটার) অ্যান্ড্রয়েড সেন্সরের সর্বোচ্চ বিদ্যুৎ খরচ হলো ৬০০০ uW।
    • এক্ষেত্রে, গড় বিদ্যুৎ খরচই হলো অধিকতর কার্যকর পরিমাপ, এবং HAL-এর মাধ্যমে সেন্সরের স্থির বৈশিষ্ট্যগুলিতে এটিই রিপোর্ট করা হয়।

অ্যাক্সেলেরোমিটার

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি অ্যাক্সেলেরোমিটার সেন্সর তিনটি সেন্সর অক্ষ বরাবর ডিভাইসটির ত্বরণ পরিমাপ করে। পরিমাপকৃত ত্বরণের মধ্যে ভৌত ত্বরণ (বেগের পরিবর্তন) এবং অভিকর্ষ উভয়ই অন্তর্ভুক্ত থাকে। এই পরিমাপটি sensors_event_t.acceleration ফাইলের x, y, এবং z ফিল্ডে রিপোর্ট করা হয়।

সমস্ত মান এসআই এককে (m/s^2) দেওয়া আছে এবং এটি তিনটি সেন্সর অক্ষ বরাবর ডিভাইসের ত্বরণ থেকে অভিকর্ষ বল বিয়োগ করে প্রাপ্ত মান।

এখানে কিছু উদাহরণ দেওয়া হলো:

  • মুক্ত পতনের সময় (x, y, z) এর নর্ম ০-এর কাছাকাছি হওয়া উচিত।
  • যখন ডিভাইসটি একটি টেবিলের উপর সমতলভাবে রাখা থাকে এবং এর বাম দিক থেকে ডান দিকে ধাক্কা দেওয়া হয়, তখন x ত্বরণের মান ধনাত্মক হয়।
  • যখন ডিভাইসটি একটি টেবিলের উপর সমতলভাবে রাখা থাকে, তখন z অক্ষ বরাবর ত্বরণের মান হয় +9.81 m/s², যা ডিভাইসটির ত্বরণ (0 m/s²) থেকে অভিকর্ষ বল (-9.81 m/s²) বিয়োগফলের সমান।
  • যখন যন্ত্রটি একটি টেবিলের উপর সমতলভাবে রাখা থাকে এবং এটিকে আকাশের দিকে ঠেলে দেওয়া হয়, তখন এর ত্বরণের মান +৯.৮১-এর চেয়ে বেশি হয়, যা যন্ত্রটির ত্বরণ (+A মি/সে^২) থেকে অভিকর্ষ বল (-৯.৮১ মি/সে^২) বিয়োগফলের সমান।

পাঠগুলি নিম্নলিখিত উপায়ে ক্রমাঙ্কিত করা হয়:

  • তাপমাত্রা ক্ষতিপূরণ
  • অনলাইন বায়াস ক্যালিব্রেশন
  • অনলাইন স্কেল ক্রমাঙ্কন

বায়াস এবং স্কেল ক্যালিব্রেশন শুধুমাত্র সেন্সরটি নিষ্ক্রিয় থাকা অবস্থাতেই আপডেট করতে হবে, যাতে স্ট্রিমিং চলাকালীন মানে আকস্মিক পরিবর্তন এড়ানো যায়।

অ্যাক্সেলেরোমিটারটি sensors_event_t.acceleration.status এর মাধ্যমে তার রিডিংগুলো কতটা নির্ভুল হবে বলে আশা করে, তাও রিপোর্ট করে। এই ফিল্ডের সম্ভাব্য মানগুলো সম্পর্কে আরও তথ্যের জন্য SensorManager এর SENSOR_STATUS_* কনস্ট্যান্টগুলো দেখুন।

পরিবেষ্টিত তাপমাত্রা

রিপোর্টিং-মোড: পরিবর্তন-কালীন

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

এই সেন্সরটি পারিপার্শ্বিক (ঘরের) তাপমাত্রা সেলসিয়াস ডিগ্রিতে প্রদান করে।

চৌম্বক ক্ষেত্র সেন্সর

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

একটি চৌম্বক ক্ষেত্র সেন্সর (যা ম্যাগনেটোমিটার নামেও পরিচিত) এর তিনটি অক্ষ বরাবর পরিমাপকৃত পারিপার্শ্বিক চৌম্বক ক্ষেত্রের তথ্য প্রদান করে।

পরিমাপটি sensors_event_t.magnetic এর x, y, এবং z ক্ষেত্রে রিপোর্ট করা হয় এবং সমস্ত মান মাইক্রো-টেসলা (uT) এককে প্রকাশ করা হয়।

ম্যাগনেটোমিটারটি sensors_event_t.magnetic.status এর মাধ্যমে তার রিডিংগুলো কতটা নির্ভুল হবে বলে আশা করে, তাও রিপোর্ট করে। এই ফিল্ডের সম্ভাব্য মানগুলো সম্পর্কে আরও তথ্যের জন্য SensorManager এর SENSOR_STATUS_* কনস্ট্যান্টগুলো দেখুন।

পাঠগুলি নিম্নলিখিত উপায়ে ক্রমাঙ্কিত করা হয়:

  • তাপমাত্রা ক্ষতিপূরণ
  • কারখানায় (বা অনলাইনে) নরম লোহার ক্যালিব্রেশন
  • অনলাইন হার্ড-আয়রন ক্যালিব্রেশন

জাইরোস্কোপ

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি জাইরোস্কোপ সেন্সর তিনটি সেন্সর অক্ষের সাপেক্ষে ডিভাইসটির ঘূর্ণনের হার নির্দেশ করে।

ঘড়ির কাঁটার বিপরীত দিকে ঘূর্ণন ধনাত্মক (ডান-হাতের নিয়ম)। অর্থাৎ, x, y, বা z অক্ষের কোনো ধনাত্মক অবস্থান থেকে মূলবিন্দুতে অবস্থিত একটি যন্ত্রের দিকে তাকানো কোনো পর্যবেক্ষক ধনাত্মক ঘূর্ণনের কথা বলবেন, যদি যন্ত্রটিকে ঘড়ির কাঁটার বিপরীত দিকে ঘুরতে দেখা যায়। উল্লেখ্য যে, এটি ধনাত্মক ঘূর্ণনের প্রমিত গাণিতিক সংজ্ঞা এবং এটি রোলের মহাকাশীয় সংজ্ঞার সাথে মেলে না।

পরিমাপটি sensors_event_t.gyro ফাইলের x, y, এবং z ফিল্ডে রিপোর্ট করা হয় এবং সমস্ত মান রেডিয়ান প্রতি সেকেন্ড (rad/s) এককে প্রকাশ করা হয়।

পাঠগুলি নিম্নলিখিত উপায়ে ক্রমাঙ্কিত করা হয়:

  • তাপমাত্রা ক্ষতিপূরণ
  • কারখানা (বা অনলাইন) স্কেল ক্ষতিপূরণ
  • অনলাইন বায়াস ক্যালিব্রেশন (ড্রিফট দূর করার জন্য)

জাইরোস্কোপটি sensors_event_t.gyro.status এর মাধ্যমে তার রিডিংগুলো কতটা নির্ভুল হবে বলে আশা করে, তাও রিপোর্ট করে। এই ফিল্ডের সম্ভাব্য মানগুলো সম্পর্কে আরও তথ্যের জন্য SensorManager এর SENSOR_STATUS_* কনস্ট্যান্টগুলো দেখুন।

ম্যাগনেটোমিটার এবং অ্যাক্সেলেরোমিটারের উপর ভিত্তি করে জাইরোস্কোপ অনুকরণ করা যায় না, কারণ এতে এর স্থানীয় সামঞ্জস্য এবং প্রতিক্রিয়াশীলতা হ্রাস পাবে। এটি অবশ্যই একটি সাধারণ জাইরোস্কোপ চিপের উপর ভিত্তি করে তৈরি হতে হবে।

হৃদস্পন্দন

রিপোর্টিং-মোড: পরিবর্তন-কালীন

getDefaultSensor(SENSOR_TYPE_HEART_RATE) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি হার্ট রেট সেন্সর ডিভাইসটি স্পর্শকারী ব্যক্তির বর্তমান হৃদস্পন্দনের হার জানিয়ে দেয়।

প্রতি মিনিটে স্পন্দনের (BPM) হিসাবে বর্তমান হৃদস্পন্দন sensors_event_t.heart_rate.bpm এ রিপোর্ট করা হয় এবং সেন্সরের অবস্থা sensors_event_t.heart_rate.status এ রিপোর্ট করা হয়। এই ফিল্ডের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য SensorManager এর SENSOR_STATUS_* কনস্ট্যান্টগুলো দেখুন। বিশেষ করে, প্রথমবার সক্রিয় করার সময়, যদি না ডিভাইসটি শরীরে সংযুক্ত নেই বলে জানা থাকে, তবে প্রথম ইভেন্টের স্ট্যাটাস ফিল্ডটি অবশ্যই SENSOR_STATUS_UNRELIABLE এ সেট করতে হবে। যেহেতু এই সেন্সরটি অন-চেঞ্জ, তাই শেষ ইভেন্টের পর heart_rate.bpm বা heart_rate.status পরিবর্তিত হলেই কেবল ইভেন্ট তৈরি হয়। প্রতিটি sampling_period চেয়ে দ্রুত ইভেন্ট তৈরি হয় না।

সামঞ্জস্যতা বজায় রাখার জন্য ফ্রেমওয়ার্কটি স্বয়ংক্রিয়ভাবে sensor_t.requiredPermission উপযুক্ত পারমিশন দিয়ে ওভাররাইড করে। ফ্রেমওয়ার্কটি অ্যান্ড্রয়েড ১৬ এবং তার পরবর্তী সংস্করণগুলোর জন্য SENSOR_PERMISSION_READ_HEART_RATE পারমিশন এবং অ্যান্ড্রয়েড ১৫ ও তার পূর্ববর্তী সংস্করণগুলোর জন্য SENSOR_PERMISSION_BODY_SENSORS পারমিশন ব্যবহার করে।

আলো

রিপোর্টিং-মোড: পরিবর্তন-কালীন

getDefaultSensor(SENSOR_TYPE_LIGHT) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি আলোক সেন্সর বর্তমান আলোকসজ্জার মাত্রা এসআই লাক্স এককে প্রকাশ করে।

পরিমাপটি sensors_event_t.light ফাইলে রিপোর্ট করা হয়।

নৈকট্য

রিপোর্টিং-মোড: পরিবর্তন-কালীন

সাধারণত ওয়েক-আপ সেন্সর হিসাবে সংজ্ঞায়িত করা হয়

getDefaultSensor(SENSOR_TYPE_PROXIMITY) একটি ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি প্রক্সিমিটি সেন্সর তার থেকে নিকটতম দৃশ্যমান পৃষ্ঠের দূরত্ব পরিমাপ করে।

অ্যান্ড্রয়েড ৪.৪ পর্যন্ত, প্রক্সিমিটি সেন্সরগুলো সবসময় ওয়েক-আপ সেন্সর ছিল, যা নৈকট্যের পরিবর্তন শনাক্ত করে এসওসি (SoC)-কে জাগিয়ে তুলত। অ্যান্ড্রয়েড ৪.৪-এর পরে, আমরা এই সেন্সরটির ওয়েক-আপ সংস্করণটি প্রথমে প্রয়োগ করার পরামর্শ দিই, কারণ ফোন কল করার সময় স্ক্রিন চালু ও বন্ধ করতে এটিই ব্যবহৃত হয়।

sensors_event_t.distance এ পরিমাপটি সেন্টিমিটারে রিপোর্ট করা হয়। উল্লেখ্য যে, কিছু প্রক্সিমিটি সেন্সর শুধুমাত্র বাইনারি "কাছে" বা "দূরে" পরিমাপ সমর্থন করে। এই ক্ষেত্রে, সেন্সরটি "দূরে" অবস্থায় তার sensor_t.maxRange মান এবং "কাছে" অবস্থায় sensor_t.maxRange চেয়ে কম একটি মান রিপোর্ট করে।

চাপ

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_PRESSURE) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি চাপ সংবেদক (যা ব্যারোমিটার নামেও পরিচিত) বায়ুমণ্ডলীয় চাপ হেক্টোপ্যাসকেল (hPa) এককে প্রকাশ করে।

রিডিংগুলি ক্যালিব্রেট করা হয় ব্যবহার করে

  • তাপমাত্রা ক্ষতিপূরণ
  • ফ্যাক্টরি বায়াস ক্যালিব্রেশন
  • কারখানার স্কেল ক্রমাঙ্কন

ব্যারোমিটার প্রায়শই উচ্চতার পরিবর্তন অনুমান করতে ব্যবহৃত হয়। পরম উচ্চতা অনুমান করার জন্য, সমুদ্রপৃষ্ঠের চাপকে (যা আবহাওয়ার উপর নির্ভর করে পরিবর্তিত হয়) একটি নির্দেশক হিসেবে ব্যবহার করতে হবে।

আপেক্ষিক আর্দ্রতা

রিপোর্টিং-মোড: পরিবর্তন-কালীন

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি আপেক্ষিক আর্দ্রতা সেন্সর পারিপার্শ্বিক বায়ুর আপেক্ষিক আর্দ্রতা পরিমাপ করে এবং শতাংশে একটি মান প্রদান করে।

যৌগিক সেন্সর প্রকার

একটি কম্পোজিট সেন্সর এক বা একাধিক ভৌত সেন্সর থেকে প্রাপ্ত ডেটা প্রক্রিয়াকরণ এবং/অথবা একত্রিত করে ডেটা তৈরি করে। (যে কোনো সেন্সর যা বেস সেন্সর নয়, তাকে কম্পোজিট সেন্সর বলা হয়।) কম্পোজিট সেন্সরের উদাহরণগুলির মধ্যে রয়েছে:

  • স্টেপ ডিটেক্টর এবং সিগনিফিক্যান্ট মোশন , যেগুলো সাধারণত অ্যাক্সেলেরোমিটারের উপর ভিত্তি করে তৈরি হয়, তবে বিদ্যুৎ খরচ এবং নির্ভুলতা গ্রহণযোগ্য হলে অন্যান্য সেন্সরের উপর ভিত্তি করেও তৈরি করা যেতে পারে।
  • অ্যাক্সেলেরোমিটার এবং জাইরোস্কোপের উপর ভিত্তি করে গেমের ঘূর্ণন ভেক্টর
  • আনক্যালিব্রেটেড জাইরোস্কোপ , যা জাইরোস্কোপ বেস সেন্সরের মতোই, কিন্তু এক্ষেত্রে বায়াস ক্যালিব্রেশন পরিমাপের সময় সংশোধন না করে আলাদাভাবে রিপোর্ট করা হয়।

বেস সেন্সরগুলোর মতোই, কম্পোজিট সেন্সরগুলোর বৈশিষ্ট্যও তাদের চূড়ান্ত ডেটার বৈশিষ্ট্য থেকে আসে। উদাহরণস্বরূপ, একটি গেম রোটেশন ভেক্টরের বিদ্যুৎ খরচ সম্ভবত অ্যাক্সেলেরোমিটার চিপ, জাইরোস্কোপ চিপ, ডেটা প্রসেসিংকারী চিপ এবং ডেটা পরিবহনকারী বাসগুলোর বিদ্যুৎ খরচের সমষ্টির সমান। আরেকটি উদাহরণ হিসেবে বলা যায়, একটি গেম রোটেশন ভেক্টরের ড্রিফট সেন্সরের ভৌত বৈশিষ্ট্যের পাশাপাশি ক্যালিব্রেশন অ্যালগরিদমের মানের উপরও সমানভাবে নির্ভর করে।

নিম্নলিখিত সারণিতে উপলব্ধ কম্পোজিট সেন্সরের প্রকারভেদগুলো তালিকাভুক্ত করা হয়েছে। প্রতিটি কম্পোজিট সেন্সর এক বা একাধিক ভৌত সেন্সর থেকে প্রাপ্ত তথ্যের উপর নির্ভর করে। আনুমানিক ফলাফল পাওয়ার জন্য অন্যান্য অন্তর্নিহিত ভৌত সেন্সর নির্বাচন করা থেকে বিরত থাকুন, কারণ সেগুলো ব্যবহারকারীর জন্য খারাপ অভিজ্ঞতা প্রদান করে।

সেন্সরের ধরন বিভাগ অন্তর্নিহিত ভৌত সেন্সর রিপোর্টিং মোড

গেম ঘূর্ণন ভেক্টর

মনোভাব

অ্যাক্সেলেরোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার অবশ্যই ব্যবহার করা যাবে না।

ক্রমাগত

ভূ-চৌম্বকীয় ঘূর্ণন ভেক্টর কম পাওয়ার সেন্সর

মনোভাব

অ্যাক্সেলেরোমিটার, ম্যাগনেটোমিটার, জাইরোস্কোপ অবশ্যই ব্যবহার করা যাবে না।

ক্রমাগত

এক পলকের অঙ্গভঙ্গি কম শক্তির সেন্সর

মিথস্ক্রিয়া

অসংজ্ঞায়িত

এক-শট

মাধ্যাকর্ষণ

মনোভাব

অ্যাক্সেলেরোমিটার, জাইরোস্কোপ (যদি থাকে), অথবা ম্যাগনেটোমিটার (যদি জাইরোস্কোপ না থাকে)

ক্রমাগত

জাইরোস্কোপ অ-ক্যালিব্রেটেড

অ-ক্যালিব্রেটেড

জাইরোস্কোপ

ক্রমাগত

রৈখিক ত্বরণ

কার্যকলাপ

অ্যাক্সেলেরোমিটার, জাইরোস্কোপ (যদি থাকে), অথবা ম্যাগনেটোমিটার (যদি জাইরোস্কোপ না থাকে)

ক্রমাগত

চৌম্বক ক্ষেত্র ক্রমাঙ্কিত নয়

অ-ক্যালিব্রেটেড

ম্যাগনেটোমিটার

ক্রমাগত

অভিমুখীকরণ (অপ্রচলিত)

মনোভাব

অ্যাক্সেলেরোমিটার, ম্যাগনেটোমিটার, জাইরোস্কোপ (যদি থাকে)

ক্রমাগত

পিক আপ জেসচার কম শক্তির সেন্সর

মিথস্ক্রিয়া

অসংজ্ঞায়িত

এক-শট

ঘূর্ণন ভেক্টর

মনোভাব

অ্যাক্সেলেরোমিটার, ম্যাগনেটোমিটার, জাইরোস্কোপ (যদি থাকে)

ক্রমাগত

উল্লেখযোগ্য গতি কম শক্তির সেন্সর

কার্যকলাপ

অ্যাক্সেলেরোমিটার (অথবা খুব কম ক্ষমতার অন্য কোনো মিটার)

এক-শট

ধাপ গণনাকারী কম শক্তির সেন্সর

কার্যকলাপ

অ্যাক্সেলেরোমিটার

পরিবর্তনে

ধাপ ডিটেক্টর কম শক্তির সেন্সর

কার্যকলাপ

অ্যাক্সেলেরোমিটার

বিশেষ

টিল্ট ডিটেক্টর কম শক্তির সেন্সর

কার্যকলাপ

অ্যাক্সেলেরোমিটার

বিশেষ

জাগরণের অঙ্গভঙ্গি কম শক্তির সেন্সর

মিথস্ক্রিয়া

অসংজ্ঞায়িত

এক-শট

কম শক্তির সেন্সর = কম শক্তির সেন্সর

অ্যাক্টিভিটি কম্পোজিট সেন্সর

রৈখিক ত্বরণ

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার এবং (যদি থাকে) জাইরোস্কোপ (অথবা জাইরোস্কোপ না থাকলে ম্যাগনেটোমিটার)

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি রৈখিক ত্বরণ সেন্সর তার ফ্রেমে থাকা ডিভাইসটির রৈখিক ত্বরণ পরিমাপ করে, যেখানে অভিকর্ষ অন্তর্ভুক্ত থাকে না।

ধারণাগতভাবে আউটপুটটি হলো: অ্যাক্সেলেরোমিটারের আউটপুট থেকে গ্র্যাভিটি সেন্সরের আউটপুট বিয়োগফল। এটি sensors_event_t.acceleration ফাইলের x, y, এবং z ফিল্ডে m/s^2 এককে রিপোর্ট করা হয়।

ডিভাইসটি স্থির থাকলে সব অক্ষের পাঠ শূন্যের কাছাকাছি হওয়া উচিত।

যদি ডিভাইসটিতে জাইরোস্কোপ থাকে, তবে লিনিয়ার অ্যাক্সিলারেশন সেন্সরটিকে ইনপুট হিসেবে জাইরোস্কোপ এবং অ্যাক্সিলেরোমিটার উভয়ই ব্যবহার করতে হবে।

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

উল্লেখযোগ্য গতি

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার (অথবা কম শক্তি সম্পন্ন অন্য কোনো সেন্সর)

রিপোর্টিং-মোড: ওয়ান-শট

কম শক্তি

এই সেন্সরটির শুধু ওয়েক-আপ সংস্করণটি প্রয়োগ করুন।

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) একটি ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি উল্লেখযোগ্য গতি শনাক্তকারী যন্ত্র তখন সক্রিয় হয় যখন এটি কোনো উল্লেখযোগ্য গতি শনাক্ত করে: এমন গতি যা ব্যবহারকারীর অবস্থানের পরিবর্তন ঘটাতে পারে।

এই ধরনের উল্লেখযোগ্য গতিবিধির উদাহরণ হলো:

  • হাঁটা বা সাইকেল চালানো
  • চলন্ত গাড়ি, কোচ বা ট্রেনে বসে থাকা

এমন পরিস্থিতির উদাহরণ যা উল্লেখযোগ্য গতি সৃষ্টি করে না:

  • ফোন পকেটে এবং ব্যক্তিটি নড়ছে না।
  • ফোনটি টেবিলের উপর রাখা আছে এবং কাছাকাছি যানবাহন বা ওয়াশিং মেশিনের কারণে টেবিলটি কিছুটা নড়ে ওঠে।

উচ্চ স্তরে, অবস্থান নির্ধারণের বিদ্যুৎ খরচ কমাতে সিগনিফিক্যান্ট মোশন ডিটেক্টর ব্যবহার করা হয়। যখন অবস্থান নির্ণয়কারী অ্যালগরিদমগুলো শনাক্ত করে যে ডিভাইসটি স্থির, তখন সেগুলো একটি লো-পাওয়ার মোডে চলে যেতে পারে, যেখানে ব্যবহারকারী অবস্থান পরিবর্তন করার সময় ডিভাইসটিকে জাগিয়ে তোলার জন্য সেগুলো সিগনিফিক্যান্ট মোশনের উপর নির্ভর করে।

এই সেন্সরটি অবশ্যই কম শক্তি সম্পন্ন হতে হবে। এর জন্য শক্তি খরচের ক্ষেত্রে একটি আপস করতে হয়, যার ফলে সামান্য কিছু ফলস নেগেটিভ ফলাফল আসতে পারে। এটি কয়েকটি কারণে করা হয়:

  • এই সেন্সরটির উদ্দেশ্য হলো শক্তি সাশ্রয় করা।
  • ব্যবহারকারী নড়াচড়া না করা সত্ত্বেও কোনো ইভেন্ট ট্রিগার করা (ফলস পজিটিভ) শক্তির দিক থেকে ব্যয়বহুল, তাই এটি পরিহার করা উচিত।
  • ব্যবহারকারী যখন নড়াচড়া করছেন তখন কোনো ইভেন্ট ট্রিগার না করা (ফলস নেগেটিভ) গ্রহণযোগ্য, যতক্ষণ না এটি বারবার করা হয়। যদি ব্যবহারকারী ১০ সেকেন্ড ধরে হাঁটতে থাকেন, তবে সেই ১০ সেকেন্ডের মধ্যে কোনো ইভেন্ট ট্রিগার না করা গ্রহণযোগ্য নয়।

প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0] -এ 1 রিপোর্ট করে।

ধাপ ডিটেক্টর

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার (এবং সম্ভবত অন্যান্য, যতক্ষণ পর্যন্ত সেগুলো কম শক্তি ব্যবহার করে)

রিপোর্টিং-মোড: বিশেষ (প্রতিটি পদক্ষেপের জন্য একটি ইভেন্ট)

কম শক্তি

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

ব্যবহারকারীর প্রতিটি পদক্ষেপের সাথে সাথে একটি স্টেপ ডিটেক্টর একটি ইভেন্ট তৈরি করে।

sensors_event_t.timestamp ইভেন্টটির টাইমস্ট্যাম্পটি সেই মুহূর্তকে নির্দেশ করে যখন পা মাটিতে পড়ে, যার ফলে ত্বরণে একটি বড় পরিবর্তন ঘটে।

স্টেপ কাউন্টারের তুলনায় স্টেপ ডিটেক্টরের ল্যাটেন্সি কম হওয়া উচিত (দুই সেকেন্ডের কম)। স্টেপ ডিটেক্টর এবং স্টেপ কাউন্টার উভয়ই ব্যবহারকারীর হাঁটা, দৌড়ানো এবং সিঁড়ি বেয়ে ওঠার সময় শনাক্ত করে। ব্যবহারকারী যখন সাইকেল চালান, গাড়ি চালান বা অন্য কোনো যানবাহনে থাকেন, তখন এগুলি সক্রিয় হওয়া উচিত নয়।

এই সেন্সরটি অবশ্যই স্বল্প শক্তির হতে হবে। অর্থাৎ, যদি পদক্ষেপ শনাক্তকরণ হার্ডওয়্যারে করা না যায়, তবে এই সেন্সরটি সংজ্ঞায়িত করা উচিত নয়। বিশেষ করে, যখন পদক্ষেপ শনাক্তকারী সক্রিয় থাকে এবং অ্যাক্সেলেরোমিটার সক্রিয় না থাকে, তখন শুধুমাত্র পদক্ষেপের কারণেই ইন্টারাপ্ট ট্রিগার হওয়া উচিত (প্রতিটি অ্যাক্সেলেরোমিটার রিডিংয়ের জন্য নয়)।

sampling_period_ns স্টেপ ডিটেক্টরের উপর কোনো প্রভাব নেই।

প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0] -এ 1 রিপোর্ট করে।

ধাপ গণনাকারী

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার (এবং সম্ভবত অন্যান্য, যতক্ষণ পর্যন্ত সেগুলো কম শক্তি ব্যবহার করে)

রিপোর্টিং-মোড: পরিবর্তন-কালীন

কম-শক্তি

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি স্টেপ কাউন্টার সক্রিয় থাকা অবস্থায় শেষ রিবুটের পর থেকে ব্যবহারকারীর নেওয়া পদক্ষেপের সংখ্যা জানায়।

পরিমাপটি sensors_event_t.step_counter এ একটি uint64_t হিসেবে রিপোর্ট করা হয় এবং শুধুমাত্র সিস্টেম রিবুটের সময় এটি শূন্যে রিসেট হয়।

ইভেন্টটির টাইমস্ট্যাম্প সেই সময়ে সেট করা হয়, যখন সেই ইভেন্টের জন্য শেষ ধাপটি নেওয়া হয়েছিল।

একটি পদক্ষেপের সময়ের তাৎপর্য জানতে স্টেপ ডিটেক্টর সেন্সরের ধরন দেখুন।

স্টেপ ডিটেক্টরের তুলনায়, স্টেপ কাউন্টারের ল্যাটেন্সি বেশি হতে পারে (১০ সেকেন্ড পর্যন্ত)। এই ল্যাটেন্সির কারণে, এই সেন্সরটির নির্ভুলতা অনেক বেশি; পুরো একদিন পরিমাপের পর স্টেপ কাউন্ট প্রকৃত স্টেপ কাউন্টের ১০% এর মধ্যে থাকা উচিত। স্টেপ ডিটেক্টর এবং স্টেপ কাউন্টার উভয়ই ব্যবহারকারীর হাঁটা, দৌড়ানো এবং সিঁড়ি বেয়ে ওঠার সময় শনাক্ত করে। ব্যবহারকারী যখন বাইক চালান, গাড়ি চালান বা অন্য কোনো যানবাহনে থাকেন, তখন এগুলি সক্রিয় হওয়া উচিত নয়।

হার্ডওয়্যারকে অবশ্যই নিশ্চিত করতে হবে যেন অভ্যন্তরীণ স্টেপ কাউন্ট কখনো ওভারফ্লো না হয়। হার্ডওয়্যারের অভ্যন্তরীণ কাউন্টারের সর্বনিম্ন আকার হবে ১৬ বিট। ওভারফ্লো আসন্ন হলে (সর্বোচ্চ প্রতি ~২^১৬ স্টেপে), এসওসি-কে জাগিয়ে তোলা যেতে পারে যাতে ড্রাইভার কাউন্টারের রক্ষণাবেক্ষণ করতে পারে।

ইন্টারঅ্যাকশন -এ যেমন বলা হয়েছে, এই সেন্সরটি চালু থাকা অবস্থায় অন্য কোনো সেন্সরের কাজে ব্যাঘাত ঘটাবে না, বিশেষ করে অ্যাক্সেলেরোমিটারের কাজে, যা হয়তো তখন ব্যবহৃত হচ্ছে।

যদি কোনো নির্দিষ্ট ডিভাইস এই কার্যপ্রণালীগুলো সমর্থন করতে না পারে, তাহলে এই সেন্সর টাইপটি HAL-এ রিপোর্ট করা যাবে না। অর্থাৎ, HAL-এ এই সেন্সরটিকে "অনুকরণ" করা গ্রহণযোগ্য নয়।

এই সেন্সরটি অবশ্যই কম শক্তি সম্পন্ন হতে হবে। অর্থাৎ, যদি হার্ডওয়্যারে পদক্ষেপ শনাক্তকরণ করা না যায়, তবে এই সেন্সরটি সংজ্ঞায়িত করা উচিত নয়। বিশেষ করে, যখন স্টেপ কাউন্টার সক্রিয় থাকে এবং অ্যাক্সেলেরোমিটার সক্রিয় না থাকে, তখন শুধুমাত্র পদক্ষেপের কারণেই ইন্টারাপ্ট ট্রিগার হওয়া উচিত (অ্যাক্সেলেরোমিটার ডেটার কারণে নয়)।

টিল্ট ডিটেক্টর

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার (এবং সম্ভবত অন্যান্য, যতক্ষণ পর্যন্ত সেগুলো কম শক্তি ব্যবহার করে)

রিপোর্টিং-মোড: বিশেষ

কম-শক্তি

এই সেন্সরটির শুধু ওয়েক-আপ সংস্করণটি প্রয়োগ করুন।

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) একটি ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি টিল্ট ডিটেক্টর প্রতিবার কোনো টিল্ট ইভেন্ট শনাক্ত হলে একটি ইভেন্ট তৈরি করে।

সেন্সরটি সক্রিয় হওয়ার পর থেকে বা সেন্সর দ্বারা উৎপন্ন সর্বশেষ ঘটনার পর থেকে ২-সেকেন্ডের গড় অভিকর্ষের দিক কমপক্ষে ৩৫ ডিগ্রি পরিবর্তিত হলে, তাকে একটি টিল্ট ইভেন্ট হিসেবে সংজ্ঞায়িত করা হয়। অ্যালগরিদমটি নিচে দেওয়া হলো:

  • reference_estimated_gravity = অ্যাক্টিভেশনের পর প্রথম সেকেন্ড জুড়ে অ্যাক্সেলেরোমিটার পরিমাপের গড় অথবা সর্বশেষ টিল্ট ইভেন্টটি তৈরি হওয়ার সময়কার আনুমানিক অভিকর্ষ।
  • current_estimated_gravity = গত ২ সেকেন্ড ধরে অ্যাক্সেলেরোমিটার পরিমাপের গড়।
  • যখন angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees তখন ট্রিগার হয়।

ফোনের অভিমুখ পরিবর্তন না করে বড় ত্বরণের কারণে টিল্ট ইভেন্ট ট্রিগার হওয়া উচিত নয়। উদাহরণস্বরূপ, গাড়ি চালানোর সময় একটি তীক্ষ্ণ বাঁক বা শক্তিশালী ত্বরণের কারণে টিল্ট ইভেন্ট ট্রিগার হওয়া উচিত নয়, যদিও গড় ত্বরণের কোণ ৩৫ ডিগ্রির বেশি পরিবর্তিত হতে পারে। সাধারণত, এই সেন্সরটি শুধুমাত্র একটি অ্যাক্সেলেরোমিটারের সাহায্যে প্রয়োগ করা হয়। অন্যান্য সেন্সরও ব্যবহার করা যেতে পারে যদি সেগুলি বিদ্যুৎ খরচ উল্লেখযোগ্যভাবে না বাড়ায়। এটি একটি কম-পাওয়ার সেন্সর যা SoC-কে সাসপেন্ড মোডে যেতে সাহায্য করবে। HAL-এ এই সেন্সরটি অনুকরণ করবেন না। প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0] -তে 1 রিপোর্ট করে।

মনোভাব যৌগিক সেন্সর

ঘূর্ণন ভেক্টর

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার, ম্যাগনেটোমিটার এবং জাইরোস্কোপ

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি রোটেশন ভেক্টর সেন্সর পূর্ব-উত্তর-উপর স্থানাঙ্ক কাঠামোর সাপেক্ষে ডিভাইসটির অভিমুখ নির্দেশ করে। এটি সাধারণত অ্যাক্সেলেরোমিটার, জাইরোস্কোপ এবং ম্যাগনেটোমিটারের পাঠের ইন্টিগ্রেশনের মাধ্যমে পাওয়া যায়। পূর্ব-উত্তর-উপর স্থানাঙ্ক ব্যবস্থাটিকে একটি ডাইরেক্ট অর্থোনরমাল বেসিস হিসেবে সংজ্ঞায়িত করা হয়, যেখানে:

  • X পূর্ব দিকে নির্দেশ করে এবং এটি ভূমির উপর স্পর্শক।
  • Y উত্তর দিকে নির্দেশ করে এবং ভূমির উপর স্পর্শক।
  • Z আকাশের দিকে নির্দেশ করে এবং ভূমির উপর লম্ব।

ফোনের অভিমুখকে এমন একটি ঘূর্ণনের মাধ্যমে প্রকাশ করা হয়, যা পূর্ব-উত্তর-উপর স্থানাঙ্ককে ফোনের স্থানাঙ্কের সাথে সারিবদ্ধ করার জন্য প্রয়োজন। অর্থাৎ, ওয়ার্ল্ড ফ্রেম (X,Y,Z)-এর উপর ঘূর্ণন প্রয়োগ করলে তা ফোনের স্থানাঙ্ক (x,y,z)-এর সাথে সারিবদ্ধ হবে।

ঘূর্ণনটিকে রেফারেন্স (পূর্ব-উত্তর-উপর বরাবর) ডিভাইস ওরিয়েন্টেশন থেকে বর্তমান ডিভাইস ওরিয়েন্টেশনে যাওয়ার জন্য rot_axis অক্ষের চারপাশে ফোনটিকে থিটা কোণে ঘোরানো হিসাবে দেখা যেতে পারে। এই ঘূর্ণনটি একটি ইউনিট কোয়াটারনিয়নের চারটি একক-বিহীন x, y, z, w উপাদান হিসাবে এনকোড করা হয়:

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

কোথায়:

  • rot_axis এর x, y, এবং z ক্ষেত্রগুলি হলো ঘূর্ণন অক্ষকে প্রতিনিধিত্বকারী একটি একক দৈর্ঘ্যের ভেক্টরের পূর্ব-উত্তর-উপর স্থানাঙ্ক।
  • theta হল ঘূর্ণন কোণ

কোয়াটারনিয়নটি একটি ইউনিট কোয়াটারনিয়ন: এর নর্ম অবশ্যই 1 হতে হবে। এটি নিশ্চিত করতে ব্যর্থ হলে ক্লায়েন্টের আচরণ অনিয়মিত হবে।

এছাড়াও, এই সেন্সরটি একটি আনুমানিক দিকনির্দেশনার নির্ভুলতা রিপোর্ট করে:

sensors_event_t.data[4] = estimated_accuracy (রেডিয়ানে)

৯৫% সময় হেডিং ত্রুটি অবশ্যই estimated_accuracy এর চেয়ে কম হতে হবে। এই সেন্সরটিকে অবশ্যই দিক পরিবর্তনের প্রধান ইনপুট হিসেবে একটি জাইরোস্কোপ ব্যবহার করতে হবে।

এই সেন্সরটি জাইরোস্কোপের ড্রিফট পূরণের জন্য অ্যাক্সেলেরোমিটার এবং ম্যাগনেটোমিটারের ইনপুটও ব্যবহার করে, এবং এটি শুধুমাত্র অ্যাক্সেলেরোমিটার ও ম্যাগনেটোমিটার ব্যবহার করে বাস্তবায়ন করা সম্ভব নয়।

গেম ঘূর্ণন ভেক্টর

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার এবং জাইরোস্কোপ (কোন ম্যাগনেটোমিটার নেই)

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি গেম রোটেশন ভেক্টর সেন্সর সাধারণ রোটেশন ভেক্টর সেন্সরের মতোই, তবে এটি ভূ-চৌম্বক ক্ষেত্র ব্যবহার করে না। তাই এর Y অক্ষ উত্তর দিকে নির্দেশ না করে অন্য কোনো নির্দেশকের দিকে নির্দেশ করে। জাইরোস্কোপ Z অক্ষের চারপাশে যে পরিমাণে সরে যায়, সেই একই পরিমাণে সেই নির্দেশকটিকেও সরে যাওয়ার অনুমতি দেওয়া হয়।

sensors_event_t.data[0-3] কিভাবে সেট করতে হয় তার বিস্তারিত জানতে রোটেশন ভেক্টর সেন্সর দেখুন। এই সেন্সরটি আনুমানিক হেডিং নির্ভুলতা রিপোর্ট করে না: sensors_event_t.data[4] সংরক্ষিত এবং এটিকে 0 তে সেট করতে হবে।

আদর্শগতভাবে, একটি ফোনকে ঘুরিয়ে আবার বাস্তব জগতের একই অবস্থানে ফিরিয়ে আনলে সেটির গেম রোটেশন ভেক্টর একই থাকা উচিত।

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

মাধ্যাকর্ষণ

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার এবং (যদি থাকে) জাইরোস্কোপ (অথবা জাইরোস্কোপ না থাকলে ম্যাগনেটোমিটার)

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_GRAVITY) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি গ্র্যাভিটি সেন্সর ডিভাইসটির স্থানাঙ্কে অভিকর্ষের দিক এবং মাত্রা প্রতিবেদন করে।

sensors_event_t.acceleration এর x, y, এবং z ক্ষেত্রে মহাকর্ষ ভেক্টর উপাংশগুলি m/s^2 এককে রিপোর্ট করা হয়েছে।

যখন ডিভাইসটি স্থির থাকে, তখন গ্র্যাভিটি সেন্সরের আউটপুট অ্যাক্সেলেরোমিটারের আউটপুটের সমান হওয়া উচিত। পৃথিবীতে এর মান প্রায় ৯.৮ মি/সে^২।

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

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

ভূ-চৌম্বকীয় ঘূর্ণন ভেক্টর

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার এবং ম্যাগনেটোমিটার (কোন জাইরোস্কোপ নেই)

রিপোর্টিং-মোড: অবিচ্ছিন্ন

কম-শক্তি

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি ভূ-চৌম্বকীয় ঘূর্ণন ভেক্টর সেন্সর, ঘূর্ণন ভেক্টর সেন্সরের মতোই, তবে এতে ম্যাগনেটোমিটার ব্যবহৃত হয় এবং কোনো জাইরোস্কোপ থাকে না।

এই সেন্সরটি অবশ্যই ম্যাগনেটোমিটারের উপর ভিত্তি করে তৈরি হতে হবে। এটি জাইরোস্কোপ ব্যবহার করে বাস্তবায়ন করা যাবে না এবং এই সেন্সরটি জাইরোস্কোপের ইনপুটও ব্যবহার করতে পারবে না।

sensors_event_t.data[0-4] কিভাবে সেট করতে হয় সে সম্পর্কে বিস্তারিত জানতে রোটেশন ভেক্টর সেন্সরটি দেখুন।

ঘূর্ণন ভেক্টর সেন্সরের মতোই, হেডিং ত্রুটি অবশ্যই 95% সময় আনুমানিক নির্ভুলতা ( sensors_event_t.data[4] ) থেকে কম হতে হবে।

এই সেন্সরটি অবশ্যই স্বল্প শক্তির হতে হবে, তাই এটিকে হার্ডওয়্যারে বাস্তবায়ন করতে হবে।

অভিমুখীকরণ (অপ্রচলিত)

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার, ম্যাগনেটোমিটার এবং (যদি থাকে) জাইরোস্কোপ

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_ORIENTATION) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

দ্রষ্টব্য: এটি একটি পুরোনো সেন্সর টাইপ যা অ্যান্ড্রয়েড এসডিকে-তে বাতিল করা হয়েছে। এটিকে রোটেশন ভেক্টর সেন্সর দ্বারা প্রতিস্থাপন করা হয়েছে, যা আরও সুস্পষ্টভাবে সংজ্ঞায়িত। যখনই সম্ভব, ওরিয়েন্টেশন সেন্সরের পরিবর্তে রোটেশন ভেক্টর সেন্সর ব্যবহার করুন।

একটি ওরিয়েন্টেশন সেন্সর ডিভাইসটির অবস্থান বা অ্যাটিটিউড রিপোর্ট করে। এই পরিমাপগুলো sensors_event_t.orientation এর x, y, এবং z ফিল্ডে ডিগ্রিতে রিপোর্ট করা হয়।

  • sensors_event_t.orientation.x : অ্যাজিমুথ, চৌম্বক উত্তর দিক এবং Y অক্ষের মধ্যবর্তী কোণ, যা Z অক্ষের সাপেক্ষে পরিমাপ করা হয় ( 0<=azimuth<360 )। 0=উত্তর, 90=পূর্ব, 180=দক্ষিণ, 270=পশ্চিম।
  • sensors_event_t.orientation.y : পিচ, X অক্ষের চারপাশে ঘূর্ণন ( -180<=pitch<=180 ), যখন Z অক্ষ Y অক্ষের দিকে অগ্রসর হয় তখন এর মান ধনাত্মক হয়।
  • sensors_event_t.orientation.z : রোল, Y অক্ষের চারপাশে ঘূর্ণন ( -90<=roll<=90 ), যখন X অক্ষ Z অক্ষের দিকে অগ্রসর হয় তখন এর মান ধনাত্মক হয়।

অনুগ্রহ করে মনে রাখবেন, ঐতিহাসিক কারণে ঘূর্ণন কোণটি ঘড়ির কাঁটার দিকে ধনাত্মক। (গাণিতিকভাবে বলতে গেলে, এটি ঘড়ির কাঁটার বিপরীত দিকে ধনাত্মক হওয়া উচিত):

অভিমুখের চিত্রণ একটি ডিভাইসের সাপেক্ষে

চিত্র ৩. একটি ডিভাইসের সাপেক্ষে অভিমুখ

এই সংজ্ঞাটি বিমান চালনায় ব্যবহৃত ইয়, পিচ এবং রোল থেকে ভিন্ন, যেখানে এক্স-অক্ষটি বিমানের দীর্ঘ পাশ বরাবর (লেজ থেকে নাক পর্যন্ত) থাকে।

ওরিয়েন্টেশন সেন্সরটি sensors_event_t.orientation.status এর মাধ্যমে তার রিডিংগুলো কতটা নির্ভুল হবে বলে আশা করে, তাও রিপোর্ট করে। এই ফিল্ডের সম্ভাব্য মানগুলো সম্পর্কে আরও তথ্যের জন্য SensorManager এর SENSOR_STATUS_* কনস্ট্যান্টগুলো দেখুন।

অ-ক্যালিব্রেটেড সেন্সর

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

অ্যাক্সেলেরোমিটার অ-ক্যালিব্রেটেড

অন্তর্নিহিত ভৌত সেন্সর: অ্যাক্সেলেরোমিটার

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি আনক্যালিব্রেটেড অ্যাক্সেলেরোমিটার সেন্সর কোনো বায়াস কারেকশন ছাড়াই (আনক্যালিব্রেটেড পরিমাপে ফ্যাক্টরি বায়াস এবং তাপমাত্রা ক্ষতিপূরণ প্রয়োগ করা হয়) তিনটি সেন্সর অক্ষ বরাবর ডিভাইসটির ত্বরণ এবং একটি বায়াস এস্টিমেট রিপোর্ট করে। সমস্ত মান SI এককে (m/s^2) থাকে এবং sensors_event_t.uncalibrated_accelerometer ফিল্ডে রিপোর্ট করা হয়।

  • x_uncalib : X অক্ষ বরাবর ত্বরণ (বায়াস ক্ষতিপূরণ ছাড়া)
  • y_uncalib : Y অক্ষ বরাবর ত্বরণ (বায়াস ক্ষতিপূরণ ছাড়া)
  • z_uncalib : Z অক্ষ বরাবর ত্বরণ (বায়াস ক্ষতিপূরণ ছাড়া)
  • x_bias : X অক্ষ বরাবর আনুমানিক বায়াস
  • y_bias : Y অক্ষ বরাবর আনুমানিক পক্ষপাত
  • z_bias : Z অক্ষ বরাবর আনুমানিক বায়াস

জাইরোস্কোপ অ-ক্যালিব্রেটেড

অন্তর্নিহিত ভৌত সেন্সর: জাইরোস্কোপ

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি আনক্যালিব্রেটেড জাইরোস্কোপ সেন্সর অক্ষগুলিতে বায়াস কম্পেনসেশন প্রয়োগ না করেই সেগুলির চারপাশের ঘূর্ণনের হার এবং একটি বায়াস এস্টিমেট রিপোর্ট করে। সমস্ত মান রেডিয়ান/সেকেন্ড এককে থাকে এবং sensors_event_t.uncalibrated_gyro ফিল্ডে রিপোর্ট করা হয়।

  • x_uncalib : X অক্ষের সাপেক্ষে কৌণিক গতি (ড্রিফট ক্ষতিপূরণ ছাড়া)
  • y_uncalib : Y অক্ষের সাপেক্ষে কৌণিক গতি (ড্রিফট ক্ষতিপূরণ ছাড়া)
  • z_uncalib : Z অক্ষের সাপেক্ষে কৌণিক গতি (ড্রিফট ক্ষতিপূরণ ছাড়া)
  • x_bias : X অক্ষের চারপাশে আনুমানিক সরণ
  • y_bias : Y অক্ষের চারপাশে আনুমানিক বিচ্যুতি
  • z_bias : Z অক্ষের চারপাশে আনুমানিক সরণ

ধারণাগতভাবে, অ-ক্যালিব্রেটেড পরিমাপ হলো ক্যালিব্রেটেড পরিমাপ এবং বায়াস অনুমানের যোগফল: _uncalibrated = _calibrated + _bias

বায়াসের অনুমান পরিবর্তিত হওয়ার সাথে সাথেই x_bias , y_bias এবং z_bias মানগুলো লাফিয়ে বাড়বে বলে আশা করা যায় এবং বাকি সময় এগুলো স্থিতিশীল থাকবে।

ব্যবহৃত স্থানাঙ্ক ব্যবস্থা সম্পর্কে বিস্তারিত জানতে জাইরোস্কোপ সেন্সরের সংজ্ঞা দেখুন।

পরিমাপের ক্ষেত্রে ফ্যাক্টরি ক্যালিব্রেশন এবং তাপমাত্রা ক্ষতিপূরণ অবশ্যই প্রয়োগ করতে হবে। এছাড়াও, জাইরোস্কোপ ড্রিফট এস্টিমেশন বাস্তবায়ন করতে হবে, যাতে x_bias , y_bias এবং z_bias ক্ষেত্রে যুক্তিসঙ্গত অনুমান রিপোর্ট করা যায়। যদি এই বাস্তবায়ন ড্রিফট অনুমান করতে সক্ষম না হয়, তবে এই সেন্সরটি বাস্তবায়ন করা যাবে না।

যদি এই সেন্সরটি উপস্থিত থাকে, তাহলে সংশ্লিষ্ট জাইরোস্কোপ সেন্সরটিও অবশ্যই উপস্থিত থাকতে হবে এবং উভয় সেন্সরের sensor_t.namesensor_t.vendor মান একই হতে হবে।

চৌম্বক ক্ষেত্র ক্রমাঙ্কিত নয়

অন্তর্নিহিত ভৌত সেন্সর: ম্যাগনেটোমিটার

রিপোর্টিং-মোড: অবিচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) একটি নন-ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি অ-ক্যালিব্রেটেড চৌম্বক ক্ষেত্র সেন্সর পারিপার্শ্বিক চৌম্বক ক্ষেত্রের সাথে একটি হার্ড আয়রন ক্যালিব্রেশন অনুমান রিপোর্ট করে। সমস্ত মান মাইক্রো-টেসলা (uT) এককে থাকে এবং sensors_event_t.uncalibrated_magnetic ফিল্ডে রিপোর্ট করা হয়।

  • x_uncalib : X অক্ষ বরাবর চৌম্বক ক্ষেত্র (হার্ড-আয়রন ক্ষতিপূরণ ছাড়া)
  • y_uncalib : Y অক্ষ বরাবর চৌম্বক ক্ষেত্র (হার্ড-আয়রন ক্ষতিপূরণ ছাড়া)
  • z_uncalib : Z অক্ষ বরাবর চৌম্বক ক্ষেত্র (হার্ড-আয়রন ক্ষতিপূরণ ছাড়া)
  • x_bias : X অক্ষ বরাবর আনুমানিক হার্ড-আয়রন বায়াস
  • y_bias : Y অক্ষ বরাবর আনুমানিক হার্ড-আয়রন বায়াস
  • z_bias : Z অক্ষ বরাবর আনুমানিক হার্ড-আয়রন বায়াস

ধারণাগতভাবে, অ-ক্যালিব্রেটেড পরিমাপ হলো ক্যালিব্রেটেড পরিমাপ এবং বায়াস অনুমানের যোগফল: _uncalibrated = _calibrated + _bias

অ-ক্যালিব্রেটেড ম্যাগনেটোমিটার উচ্চ-স্তরের অ্যালগরিদমকে ত্রুটিপূর্ণ হার্ড আয়রন অনুমান সামলাতে সক্ষম করে। হার্ড-আয়রনের অনুমান পরিবর্তিত হওয়ার সাথে সাথেই x_bias , y_bias এবং z_bias এর মান লাফিয়ে বাড়বে বলে আশা করা যায় এবং বাকি সময় এগুলো স্থিতিশীল থাকা উচিত।

পরিমাপগুলিতে সফট-আয়রন ক্যালিব্রেশন এবং তাপমাত্রা ক্ষতিপূরণ অবশ্যই প্রয়োগ করতে হবে। এছাড়াও, হার্ড-আয়রন এস্টিমেশন বাস্তবায়ন করতে হবে, যাতে x_bias , y_bias এবং z_bias এ যুক্তিসঙ্গত অনুমান রিপোর্ট করা যায়। যদি বাস্তবায়নটি বায়াস অনুমান করতে সক্ষম না হয়, তবে এই সেন্সরটি বাস্তবায়ন করা যাবে না।

যদি এই সেন্সরটি উপস্থিত থাকে, তাহলে সংশ্লিষ্ট চৌম্বক ক্ষেত্র সেন্সরটিও অবশ্যই উপস্থিত থাকতে হবে এবং উভয় সেন্সরের sensor_t.namesensor_t.vendor মান একই হতে হবে।

কব্জার কোণ

রিপোর্টিং-মোড: পরিবর্তন-কালীন

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) একটি ওয়েক-আপ সেন্সর রিটার্ন করে।

একটি হিঞ্জ অ্যাঙ্গেল সেন্সর ডিভাইসের দুটি অবিচ্ছেদ্য অংশের মধ্যবর্তী কোণ ডিগ্রিতে পরিমাপ করে। এই ধরনের সেন্সর দ্বারা পরিমাপ করা হিঞ্জের নড়াচড়া, ব্যবহারকারীর ডিভাইসটির সাথে মিথস্ক্রিয়ার পদ্ধতি পরিবর্তন করবে বলে আশা করা হয়, যেমন—একটি ডিসপ্লে খোলা বা উন্মোচন করা।

মিথস্ক্রিয়া যৌগিক সেন্সর

কিছু সেন্সর প্রধানত ব্যবহারকারীর সাথে মিথস্ক্রিয়া শনাক্ত করতে ব্যবহৃত হয়। সেই সেন্সরগুলো কীভাবে বাস্তবায়ন করতে হবে তা আমরা নির্ধারণ করে দিই না, তবে সেগুলো অবশ্যই স্বল্প-শক্তিসম্পন্ন হতে হবে এবং ব্যবহারকারীর অভিজ্ঞতার নিরিখে সেগুলোর গুণমান যাচাই করা ডিভাইস প্রস্তুতকারকের দায়িত্ব।

জাগরণের অঙ্গভঙ্গি

অন্তর্নিহিত ভৌত সেন্সর: অনির্দিষ্ট (যেকোনো কম শক্তির উৎস)

রিপোর্টিং-মোড: ওয়ান-শট

কম-শক্তি

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

কম-শক্তি

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

এক পলকের অঙ্গভঙ্গি

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

কম-শক্তি

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .

Limited axes IMU sensors

Available from Android 13, limited axes IMU sensors are sensors that support use cases where not all three axes (x, y, z) are available. Standard IMU types in Android (such as SENSOR_TYPE_ACCELEROMETER and SENSOR_TYPE_GYROSCOPE ) assume that all three axes are supported. However, not all form factors and devices support 3-axis accelerometers and 3-axis gyroscopes.

Accelerometer limited axes

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) returns a non-wake-up sensor

An accelerometer limited axes sensor is equivalent to TYPE_ACCELEROMETER but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration values for unused axes to 0 , instead of having undefined values.

Gyroscope limited axes

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) returns a non-wake-up sensor

A gyroscope limited axes sensor is equivalent to TYPE_GYROSCOPE but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed values for unused axes to 0 .

Accelerometer limited axes uncalibrated

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

An accelerometer limited axes uncalibrated sensor is equivalent to TYPE_ACCELEROMETER_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration and bias values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration and bias values for unused axes to 0 .

Gyroscope limited axes uncalibrated

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

A gyroscope limited axes uncalibrated sensor is equivalent to TYPE_GYROSCOPE_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed and drift values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed and drift values for unused axes to 0 .

Composite limited axes IMU

Underlying physical sensors: Any combination of 3-axis accelerometer, 3-axis gyroscope, 3-axis accelerometer uncalibrated, and 3-axis gyroscope uncalibrated sensors.

Reporting-mode: Continuous

A composite limited axes IMU sensor is equivalent to a limited axes IMU sensor but instead of being supported at the HAL, it converts the 3-axis sensor data into the equivalent limited axes variants. These composite sensors are only enabled for automotive devices.

The following table shows an example conversion from a standard 3-axis accelerometer to a composite limited axes accelerometer.

SensorEvent Values for SENSOR_TYPE_ACCELEROMETER Example SENSOR_TYPE_ACCELEROMETER SensorEvent Composite SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent
values[0]

-০.০৬৫

-০.০৬৫

values[1]

০.০৭৮

০.০৭৮

values[2]

9.808

9.808

values[3]

প্রযোজ্য নয়

১.০

values[4]

প্রযোজ্য নয়

১.০

values[5]

প্রযোজ্য নয়

১.০

Automotive sensors

Sensors to support automotive use cases.

শিরোনাম

Underlying physical sensors: Any combination of GPS, magnetometer, accelerometer, and gyroscope.

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_HEADING) returns a non-wake-up sensor

Available from Android 13, a heading sensor measures the direction in which the device is pointing relative to true north in degrees. The heading sensor includes two SensorEvent values. One for the measured device heading and one for the accuracy of the provided heading value.

Heading values reported by this sensor must be between 0.0 (inclusive) and 360.0 (exclusive), with 0 indicating north, 90 east, 180 south, and 270 west.

Accuracy for this sensor is defined at 68 percent confidence. In the case where the underlying distribution is Gaussian normal, the accuracy is one standard deviation. For example, if the heading sensor returns a heading value of 60 degrees and an accuracy value of 10 degrees, there's a 68 percent probability of the true heading being between 50 degrees and 70 degrees.