অ্যান্ড্রয়েড ফ্রেমওয়ার্কের সাহায্যে, ডিভাইস নির্মাতারা এবং অ্যাপ ডেভেলপাররা একটি সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা (UX) নিশ্চিত করতে থার্মাল ডেটা ব্যবহার করতে পারে যদি কোনও ডিভাইস অতিরিক্ত গরম হতে শুরু করে। উদাহরণস্বরূপ, যখন একটি সিস্টেম তাপীয় চাপের মধ্য দিয়ে যায়, jobscheduler
কাজগুলি থ্রোটল হয়ে যায় এবং প্রয়োজনে, একটি ফ্রেমওয়ার্ক থার্মাল শাটডাউন শুরু করা হয়। যে অ্যাপগুলি PowerManager
ক্লাসে একটি নিবন্ধিত কলব্যাকের মাধ্যমে থার্মাল-স্ট্রেস নোটিফিকেশন পায় তারা তাদের ইউএক্সকে সুন্দরভাবে সামঞ্জস্য করতে পারে।
থার্মাল HAL
অ্যান্ড্রয়েড 9 এবং নিম্নতর তাপমাত্রা রিডিং পেতে থার্মাল HAL 1.0-এ সংজ্ঞায়িত একটি পোলিং ইন্টারফেস ব্যবহার করে। এই এইচএএল অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এবং অন্যান্য বিশ্বস্ত ক্লায়েন্টকে অনুমতি দেয়, যেমন একটি ডিভাইস প্রস্তুতকারকের HAL, একই API এর মাধ্যমে প্রতিটি সেন্সরের জন্য বর্তমান তাপমাত্রা এবং পণ্য-নীতি নির্দিষ্ট থ্রোটলিং এবং শাটডাউন থ্রেশহোল্ড পড়তে।
অ্যান্ড্রয়েড 10 অ্যান্ড্রয়েড ফ্রেমওয়ার্কে একটি থার্মাল সিস্টেম এবং HAL-এর একটি নতুন সংস্করণ, থার্মাল HAL 2.0 প্রবর্তন করেছে, যা থার্মাল সাবসিস্টেম হার্ডওয়্যার ডিভাইসগুলির ইন্টারফেসকে বিমূর্ত করে। হার্ডওয়্যার ইন্টারফেসে ত্বক, ব্যাটারি, জিপিইউ, সিপিইউ এবং ইউএসবি পোর্টের জন্য তাপমাত্রা সেন্সর এবং থার্মিস্টর অন্তর্ভুক্ত রয়েছে। ডিভাইসের ত্বকের তাপমাত্রা নির্দিষ্ট তাপীয় সীমার মধ্যে ডিভাইসের পৃষ্ঠের তাপমাত্রা রাখতে ট্র্যাক করার জন্য সবচেয়ে গুরুত্বপূর্ণ সিস্টেম।
উপরন্তু, তাপীয় HAL 2.0 তাপীয় চাপ নির্দেশ করতে একাধিক ক্লায়েন্টকে তাপ সেন্সর রিডিং এবং সংশ্লিষ্ট তীব্রতার মাত্রা প্রদান করে। নিম্নলিখিত চিত্রটি Android সিস্টেম UI থেকে দুটি সতর্কতা বার্তা দেখায়। এই বার্তাগুলি প্রদর্শিত হয় যখন USB_PORT
এবং SKIN
সেন্সরগুলির জন্য IThermalEventListener
কলব্যাক ইন্টারফেস, যথাক্রমে, THERMAL_STATUS_EMERGENCY
তীব্রতা স্তরে পৌঁছায়৷
চিত্র 1. অতিরিক্ত গরমের সতর্কতা।
ইথার্মাল HAL এর মাধ্যমে বিভিন্ন ধরনের তাপ সেন্সরগুলির জন্য বর্তমান তাপমাত্রা পুনরুদ্ধার করা হয়। প্রতিটি ফাংশন কল SUCCESS
বা FAILURE
একটি স্ট্যাটাস মান প্রদান করে। যদি SUCCESS
ফিরে আসে, প্রক্রিয়া চলতে থাকে। যদি FAILURE
ফেরত দেওয়া হয়, একটি ত্রুটি বার্তা, যা অবশ্যই মানব-পাঠযোগ্য হতে হবে, status.debugMessage
এ পাঠানো হবে।
একটি পোলিং ইন্টারফেস যা বর্তমান তাপমাত্রা ফেরত দেয় তা ছাড়াও, আপনি থার্মাল HAL ক্লায়েন্টদের কলব্যাক ইন্টারফেসের সাথে কলব্যাক IThermalChangedCallback
(HIDL, Android 10 থেকে 13) বা IThermalChangedCallback
(AIDL, Android 14 এবং উচ্চতর) ব্যবহার করতে পারেন, যেমন ফ্রেমওয়ার্কের তাপ পরিষেবা উদাহরণস্বরূপ, RegisterIThermalChangedCallback
এবং UnregisterIThermalChangedCallback
নিবন্ধন বা অনিবন্ধিত তীব্রতা-পরিবর্তিত ঘটনাগুলি। একটি প্রদত্ত সেন্সরের তাপীয় তীব্রতা পরিবর্তিত হলে, notifyThrottling
তাপ-ইভেন্ট শ্রোতাদের একটি থার্মাল থ্রটলিং ইভেন্ট কলব্যাক পাঠায়।
থার্মাল সেন্সর তথ্য ছাড়াও, প্রশমিত কুলিং ডিভাইসের একটি তালিকা getCurrentCoolingDevices
এ উন্মুক্ত করা হয়েছে। একটি কুলিং ডিভাইস অফলাইনে চলে গেলেও এই তালিকার ক্রম অবিচ্ছিন্ন। ডিভাইস নির্মাতারা statsd
মেট্রিক্স সংগ্রহ করতে তালিকা ব্যবহার করতে পারেন।
আরও তথ্যের জন্য, রেফারেন্স বাস্তবায়ন দেখুন।
আপনি আপনার নিজস্ব এক্সটেনশন যোগ করতে পারেন, আপনি তাপ প্রশমন ফাংশন নিষ্ক্রিয় করা উচিত নয়.
তাপ পরিষেবা
অ্যান্ড্রয়েড 10 এবং উচ্চতর, ফ্রেমওয়ার্কের তাপ পরিষেবা তাপীয় HAL 2.0 থেকে বিভিন্ন প্রশমন সংকেত ব্যবহার করে ধ্রুবক মনিটরিং প্রদান করে এবং এর ক্লায়েন্টদের থ্রটলিং তীব্রতা প্রতিক্রিয়া দেয়। এই ক্লায়েন্ট অভ্যন্তরীণ উপাদান এবং অ্যান্ড্রয়েড অ্যাপ্লিকেশন অন্তর্ভুক্ত. পরিষেবাটি দুটি বাইন্ডার কলব্যাক ইন্টারফেস ব্যবহার করে, IThermalEventListener
এবং IThermalStatusListener
, কলব্যাক হিসাবে উন্মুক্ত। আগেরটি অভ্যন্তরীণ প্ল্যাটফর্ম এবং ডিভাইস প্রস্তুতকারকের ব্যবহারের জন্য এবং পরেরটি অ্যান্ড্রয়েড অ্যাপের জন্য।
কলব্যাক ইন্টারফেসের মাধ্যমে, একটি ডিভাইসের বর্তমান তাপীয় অবস্থা 0x00000000
(কোন থ্রটলিং) থেকে 0x00000006
(ডিভাইস বন্ধ) পর্যন্ত একটি পূর্ণসংখ্যা মান হিসাবে পুনরুদ্ধারযোগ্য। শুধুমাত্র একটি বিশ্বস্ত সিস্টেম পরিষেবা, যেমন একটি Android API বা ডিভাইস প্রস্তুতকারক API, বিস্তারিত থার্মাল সেন্সর এবং তাপীয় ঘটনা তথ্য অ্যাক্সেস করতে পারে। নিম্নলিখিত চিত্রটি Android 10 এবং উচ্চতর সংস্করণে তাপীয় প্রশমন প্রক্রিয়া প্রবাহের একটি মডেল সরবরাহ করে:
চিত্র 2. Android 10 এবং উচ্চতর সংস্করণে তাপীয় প্রশমন প্রক্রিয়া প্রবাহ।
ডিভাইস প্রস্তুতকারকের নির্দেশিকা
Android 10 থেকে 13 পর্যন্ত ডিভাইসের তাপমাত্রা সেন্সর এবং থ্রোটলিং স্ট্যাটাস রিপোর্ট করতে, ডিভাইস নির্মাতাদের অবশ্যই থার্মাল HAL 2.0 ( IThermal.hal
) এর HIDL দিকটি বাস্তবায়ন করতে হবে।
Android 14-এর জন্য ডিভাইসের তাপমাত্রা সেন্সর এবং থ্রটলিং স্ট্যাটাস রিপোর্ট করতে, ডিভাইস নির্মাতাদের অবশ্যই থার্মাল HAL 2.0 ( IThermal.aidl
) এর AIDL দিকটি বাস্তবায়ন করতে হবে।
ব্যাটারি পাওয়ার সীমাবদ্ধতা সহ ডিভাইসের কার্যক্ষমতাকে থ্রোটল করে এমন যেকোন কিছু তাপীয় HAL-এর মাধ্যমে রিপোর্ট করতে হবে। এটি নিশ্চিত করার জন্য, সমস্ত সেন্সর রাখুন যা থার্মাল এইচএএল-এ প্রশমনের প্রয়োজনীয়তা নির্দেশ করতে পারে (স্থিতি পরিবর্তনের উপর ভিত্তি করে) এবং যে কোনও প্রশমনের পদক্ষেপের তীব্রতা রিপোর্ট করুন। একটি সেন্সর রিডিং থেকে প্রত্যাবর্তিত তাপমাত্রা মান প্রকৃত তাপমাত্রা হতে হবে না, যতক্ষণ না এটি সঠিকভাবে সংশ্লিষ্ট তীব্রতা থ্রেশহোল্ডকে প্রতিফলিত করে। উদাহরণস্বরূপ, আপনি আপনার প্রকৃত তাপমাত্রার থ্রেশহোল্ড মানের পরিবর্তে বিভিন্ন সংখ্যাসূচক মান পাস করতে পারেন, অথবা আপনি হিস্টেরেসিস প্রদানের জন্য থ্রেশহোল্ড স্পেসিফিকেশনগুলিতে গার্ডব্যান্ডিং তৈরি করতে পারেন। যাইহোক, সেই মানের সাথে সম্পর্কিত তীব্রতা অবশ্যই সেই থ্রেশহোল্ডে যা প্রয়োজন তার সাথে মেলে। উদাহরণস্বরূপ, আপনি 72 ডিগ্রি সেলসিয়াস আপনার গুরুত্বপূর্ণ তাপমাত্রা থ্রেশহোল্ড হিসাবে ফেরত দেওয়ার সিদ্ধান্ত নিতে পারেন, যখন প্রকৃত তাপমাত্রা 65 ডিগ্রি সেলসিয়াস হয় এবং এটি আপনার নির্দিষ্ট করা গুরুতর তীব্রতার সাথে মিলে যায়। সর্বোত্তম তাপীয় কাঠামো কার্যকারিতার জন্য তীব্রতা স্তর অবশ্যই সঠিক হতে হবে।
ফ্রেমওয়ার্কের থ্রেশহোল্ড স্তরগুলি এবং কীভাবে তারা প্রশমন ক্রিয়াগুলির সাথে সামঞ্জস্যপূর্ণ তা সম্পর্কে আরও পড়তে, তাপীয় স্থিতি কোডগুলি ব্যবহার করুন দেখুন৷
তাপীয় API ব্যবহার করুন
অ্যাপগুলি শ্রোতাদের যোগ করতে এবং সরাতে পারে এবং PowerManager
ক্লাসের মাধ্যমে তাপীয় অবস্থার তথ্য অ্যাক্সেস করতে পারে। IThermal
ইন্টারফেস তাপীয় অবস্থার মানগুলি ফেরত সহ প্রয়োজনীয় সমস্ত কার্যকারিতা সরবরাহ করে। থার্মাল বাইন্ডার ইন্টারফেসটি OnThermalStatusChangedListener
ইন্টারফেস হিসাবে মোড়ানো হয়, যা অ্যাপগুলি তাপীয় অবস্থা শ্রোতাদের নিবন্ধন বা সরানোর সময় ব্যবহার করতে পারে।
অ্যান্ড্রয়েড থার্মাল এপিআই-এর কলব্যাক এবং পোলিং পদ্ধতি উভয়ই রয়েছে অ্যাপগুলিকে স্ট্যাটাস কোডের মাধ্যমে তাপীয় তীব্রতার মাত্রা সম্পর্কে অবহিত করার জন্য, যা PowerManager
ক্লাসে সংজ্ঞায়িত করা হয়েছে। পদ্ধতিগুলো হলঃ
-
getCurrentThermalStatus()
একটি পূর্ণসংখ্যা হিসাবে ডিভাইসের বর্তমান তাপীয় অবস্থা প্রদান করে, যদি না ডিভাইসটি থ্রটলিং এর মধ্য দিয়ে থাকে। -
addThermalStatusListener()
একজন শ্রোতা যোগ করে। -
removeThermalStatusListener()
পূর্বে যোগ করা শ্রোতাকে সরিয়ে দেয়।
থার্মাল স্ট্যাটাস কোড ব্যবহার করুন
থার্মাল স্ট্যাটাস কোডগুলি নির্দিষ্ট থ্রটলিং লেভেলে অনুবাদ করে, যা আপনি ডেটা সংগ্রহ করতে এবং একটি সর্বোত্তম UX ডিজাইন করার জন্য ব্যবহার করতে পারেন। উদাহরণস্বরূপ, অ্যাপগুলি 0x00000000
( THERMAL_STATUS_NONE
) এর একটি স্থিতি পেতে পারে, যা পরে 0x00000001
( THERMAL_STATUS_LIGHT
) এ পরিবর্তিত হতে পারে। 0x00000000
স্থিতিটিকে t0 হিসাবে চিহ্নিত করা, তারপরে THERMAL_STATUS_NONE
স্থিতি থেকে THERMAL_STATUS_LIGHT
স্থিতিতে T1 হিসাবে স্থিত সময় পরিমাপ করা ডিভাইস নির্মাতাদের নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রশমন কৌশলগুলি ডিজাইন এবং পরীক্ষা করতে সক্ষম করে৷ নিম্নলিখিত সারণীটি তাপীয় স্থিতি কোডগুলি ব্যবহার করার উপায়গুলি প্রস্তাবিত করে:
তাপীয় অবস্থা কোড | বর্ণনা এবং প্রস্তাবিত ব্যবহার |
---|---|
THERMAL_STATUS_NONE ( 0x00000000 ) | কোন থ্রটলিং. প্রতিরক্ষামূলক ক্রিয়াগুলি বাস্তবায়নের জন্য এই অবস্থাটি ব্যবহার করুন, যেমন THERMAL_STATUS_NONE ( 0 ) থেকে THERMAL_STATUS_LIGHT ( 1 ) পর্যন্ত সময়কালের শুরু (t0 থেকে t1) সনাক্ত করা। |
THERMAL_STATUS_LIGHT ( 0x00000001 ) | হালকা থ্রটলিং, UX প্রভাবিত হয় না। এই পর্যায়ের জন্য মৃদু ডিভাইস প্রশমন ব্যবহার করুন। উদাহরণস্বরূপ, বুস্টিং বা অদক্ষ ফ্রিকোয়েন্সি ব্যবহার করা এড়িয়ে যান, তবে শুধুমাত্র বড় কোরে। |
THERMAL_STATUS_MODERATE ( 0x00000002 ) | মাঝারি থ্রটলিং, UX ব্যাপকভাবে প্রভাবিত হয় না। থার্মাল মিটিগেশন ফোরগ্রাউন্ড ক্রিয়াকলাপকে প্রভাবিত করে, তাই অ্যাপগুলির অবিলম্বে শক্তি হ্রাস করা উচিত। |
THERMAL_STATUS_SEVERE ( 0x00000003 ) | গুরুতর থ্রটলিং; UX ব্যাপকভাবে প্রভাবিত হয়। এই পর্যায়ে, ডিভাইস তাপ প্রশমন সিস্টেম ক্ষমতা সীমিত করা উচিত. এই অবস্থা পার্শ্ব প্রতিক্রিয়া সৃষ্টি করতে পারে, যেমন ডিসপ্লে জ্যাঙ্ক এবং অডিও জীটার। |
THERMAL_STATUS_CRITICAL ( 0x00000004 ) | প্ল্যাটফর্ম শক্তি কমাতে সবকিছু করেছে। ডিভাইস থার্মাল মিটিগেশন সফ্টওয়্যারটি তাদের সর্বনিম্ন ক্ষমতায় চালানোর জন্য সমস্ত উপাদান স্থাপন করেছে। |
THERMAL_STATUS_EMERGENCY ( 0x00000005 ) | প্ল্যাটফর্মের মূল উপাদানগুলি তাপীয় অবস্থার কারণে বন্ধ হয়ে যাচ্ছে এবং ডিভাইসের কার্যকারিতা সীমিত। এই স্ট্যাটাস কোড ডিভাইস বন্ধ করার আগে শেষ সতর্কতা উপস্থাপন করে। এই অবস্থায়, কিছু ফাংশন, যেমন মডেম এবং সেলুলার ডেটা, সম্পূর্ণরূপে বন্ধ করা হয়। |
THERMAL_STATUS_SHUTDOWN ( 0x00000006 ) | অবিলম্বে বন্ধ করুন. এই পর্যায়ের তীব্রতার কারণে, অ্যাপগুলি এই বিজ্ঞপ্তি পেতে সক্ষম নাও হতে পারে৷ |
ডিভাইস নির্মাতাদের অবশ্যই তাপীয় HAL-এর জন্য VTS পরীক্ষায় উত্তীর্ণ হতে হবে, এবং তাপমাত্রার পরিবর্তন অনুকরণ করতে কার্নেল sysfs ইন্টারফেস থেকে emul_temp
ব্যবহার করতে পারেন।