एंड्रॉइड फ्रेमवर्क के साथ, डिवाइस निर्माता और ऐप डेवलपर्स एक सुसंगत उपयोगकर्ता अनुभव (यूएक्स) सुनिश्चित करने के लिए थर्मल डेटा का उपयोग कर सकते हैं यदि कोई डिवाइस ज़्यादा गरम होने लगे। उदाहरण के लिए, जब कोई सिस्टम थर्मल तनाव से गुजरता है, तो jobscheduler
नौकरियां समाप्त हो जाती हैं और, यदि आवश्यक हो, तो एक फ्रेमवर्क थर्मल शटडाउन शुरू हो जाता है। PowerManager
क्लास में पंजीकृत कॉलबैक के माध्यम से थर्मल-स्ट्रेस नोटिफिकेशन प्राप्त करने वाले ऐप्स अपने यूएक्स को शानदार ढंग से समायोजित कर सकते हैं।
थर्मल एचएएल
तापमान रीडिंग प्राप्त करने के लिए एंड्रॉइड 9 और उससे नीचे के संस्करण थर्मल एचएएल 1.0 में परिभाषित पोलिंग इंटरफ़ेस का उपयोग करते हैं। इस HAL ने एंड्रॉइड फ्रेमवर्क और अन्य विश्वसनीय क्लाइंट्स, जैसे डिवाइस निर्माता के HAL, को एक ही एपीआई के माध्यम से प्रत्येक सेंसर के लिए वर्तमान तापमान और उत्पाद-नीति विशिष्ट थ्रॉटलिंग और शटडाउन थ्रेशोल्ड को पढ़ने की अनुमति दी।
एंड्रॉइड 10 ने एंड्रॉइड फ्रेमवर्क में एक थर्मल सिस्टम और एचएएल का एक नया संस्करण, थर्मल एचएएल 2.0 पेश किया, जो थर्मल सबसिस्टम हार्डवेयर उपकरणों के इंटरफ़ेस को अमूर्त करता है। हार्डवेयर इंटरफ़ेस में त्वचा, बैटरी, जीपीयू, सीपीयू और यूएसबी पोर्ट के लिए तापमान सेंसर और थर्मिस्टर शामिल हैं। डिवाइस की सतह के तापमान को निर्दिष्ट थर्मल सीमा के भीतर रखने के लिए डिवाइस की त्वचा का तापमान ट्रैक करने वाली सबसे महत्वपूर्ण प्रणाली है।
इसके अतिरिक्त, थर्मल एचएएल 2.0 कई ग्राहकों को थर्मल तनाव को इंगित करने के लिए थर्मल सेंसर रीडिंग और संबंधित गंभीरता स्तर प्रदान करता है। निम्न चित्र एंड्रॉइड सिस्टम यूआई से दो चेतावनी संदेश दिखाता है। ये संदेश तब प्रदर्शित होते हैं जब USB_PORT
और SKIN
सेंसर के लिए IThermalEventListener
कॉलबैक इंटरफ़ेस क्रमशः THERMAL_STATUS_EMERGENCY
गंभीरता स्तर तक पहुँच जाता है।
चित्र 1. ज़्यादा गरम होने की चेतावनियाँ।
आईथर्मल एचएएल के माध्यम से विभिन्न प्रकार के थर्मल सेंसर के लिए वर्तमान तापमान पुनर्प्राप्त किया जाता है। प्रत्येक फ़ंक्शन कॉल या तो SUCCESS
या FAILURE
का स्थिति मान लौटाता है। यदि SUCCESS
वापस आ जाती है, तो प्रक्रिया जारी रहती है। यदि FAILURE
लौटाया जाता है, तो एक त्रुटि संदेश, जो मानव-पठनीय होना चाहिए, status.debugMessage
पर भेजा जाता है।
एक पोलिंग इंटरफ़ेस होने के अलावा जो वर्तमान तापमान लौटाता है, आप थर्मल एचएएल क्लाइंट से कॉलबैक इंटरफ़ेस के साथ कॉलबैक IThermalChangedCallback
(एचआईडीएल, एंड्रॉइड 10 से 13) या IThermalChangedCallback
(एआईडीएल, एंड्रॉइड 14 और उच्चतर) का उपयोग कर सकते हैं, जैसे कि फ्रेमवर्क थर्मल सेवा. उदाहरण के लिए, गंभीरता-परिवर्तित घटनाओं को पंजीकृत या अपंजीकृत करने के लिए RegisterIThermalChangedCallback
और UnregisterIThermalChangedCallback
। यदि किसी दिए गए सेंसर की थर्मल गंभीरता बदल गई है, notifyThrottling
थर्मल-इवेंट श्रोताओं को थर्मल थ्रॉटलिंग इवेंट कॉलबैक भेजता है।
थर्मल सेंसर जानकारी के अलावा, getCurrentCoolingDevices
में कम शीतलन उपकरणों की एक सूची प्रदर्शित की गई है। इस सूची का क्रम लगातार बना रहता है, भले ही कूलिंग डिवाइस ऑफ़लाइन हो गया हो। डिवाइस निर्माता statsd
मेट्रिक्स एकत्र करने के लिए सूची का उपयोग कर सकते हैं।
अधिक जानकारी के लिए, संदर्भ कार्यान्वयन देखें।
हालाँकि आप अपने स्वयं के एक्सटेंशन जोड़ सकते हैं, लेकिन आपको थर्मल शमन फ़ंक्शन को अक्षम नहीं करना चाहिए।
थर्मल सेवा
एंड्रॉइड 10 और उच्चतर में, फ्रेमवर्क में थर्मल सेवा थर्मल एचएएल 2.0 से विभिन्न शमन संकेतों का उपयोग करके निरंतर निगरानी प्रदान करती है, और अपने ग्राहकों को थ्रॉटलिंग गंभीरता प्रतिक्रिया देती है। इन क्लाइंट में आंतरिक घटक और Android ऐप्स शामिल हैं। सेवा दो बाइंडर कॉलबैक इंटरफेस, IThermalEventListener
और IThermalStatusListener
का उपयोग करती है, जिन्हें कॉलबैक के रूप में प्रदर्शित किया जाता है। पहला आंतरिक प्लेटफ़ॉर्म और डिवाइस निर्माता के उपयोग के लिए है, और दूसरा एंड्रॉइड ऐप्स के लिए है।
कॉलबैक इंटरफेस के माध्यम से, डिवाइस की वर्तमान थर्मल स्थिति 0x00000000
(कोई थ्रॉटलिंग नहीं) से 0x00000006
(डिवाइस शटडाउन) तक के पूर्णांक मान के रूप में पुनर्प्राप्त करने योग्य है। केवल एक विश्वसनीय सिस्टम सेवा, जैसे एंड्रॉइड एपीआई या डिवाइस निर्माता एपीआई, विस्तृत थर्मल सेंसर और थर्मल इवेंट जानकारी तक पहुंच सकती है। निम्नलिखित आंकड़ा एंड्रॉइड 10 और उच्चतर में थर्मल शमन प्रक्रिया प्रवाह का एक मॉडल प्रदान करता है:
चित्र 2. एंड्रॉइड 10 और उच्चतर में थर्मल शमन प्रक्रिया प्रवाह।
डिवाइस निर्माता दिशानिर्देश
एंड्रॉइड 10 से 13 के लिए डिवाइस तापमान सेंसर और थ्रॉटलिंग स्थिति की रिपोर्ट करने के लिए, डिवाइस निर्माताओं को थर्मल एचएएल 2.0 ( IThermal.hal
) के एचआईडीएल पहलू को लागू करना होगा।
एंड्रॉइड 14 के लिए डिवाइस तापमान सेंसर और थ्रॉटलिंग स्थिति की रिपोर्ट करने के लिए, डिवाइस निर्माताओं को थर्मल एचएएल 2.0 ( IThermal.aidl
) के एआईडीएल पहलू को लागू करना होगा।
बैटरी पावर की कमी सहित डिवाइस के प्रदर्शन को प्रभावित करने वाली किसी भी चीज़ को थर्मल एचएएल के माध्यम से रिपोर्ट किया जाना चाहिए। ऐसा सुनिश्चित करने के लिए, सभी सेंसर लगाएं जो थर्मल एचएएल में शमन की आवश्यकता (स्थिति परिवर्तन के आधार पर) का संकेत दे सकते हैं, और किए गए किसी भी शमन कार्यों की गंभीरता की रिपोर्ट करें। सेंसर रीडिंग से लौटाया गया तापमान मान वास्तविक तापमान होना जरूरी नहीं है, जब तक कि यह संबंधित गंभीरता सीमा को सटीक रूप से प्रतिबिंबित करता है। उदाहरण के लिए, आप अपने वास्तविक तापमान सीमा मानों के बजाय विभिन्न संख्यात्मक मान पारित कर सकते हैं, या आप हिस्टैरिसीस प्रदान करने के लिए थ्रेशोल्ड विनिर्देशों में गार्डबैंडिंग का निर्माण कर सकते हैं। हालाँकि, उस मान से संबंधित गंभीरता उस सीमा पर आवश्यक चीज़ों से मेल खानी चाहिए। उदाहरण के लिए, आप अपनी महत्वपूर्ण तापमान सीमा के रूप में 72°C लौटाने का निर्णय ले सकते हैं, जब वास्तविक तापमान 65°C है, और यह आपके द्वारा निर्दिष्ट गंभीर गंभीरता से मेल खाता है। सर्वोत्तम थर्मल फ्रेमवर्क कार्यक्षमता के लिए गंभीरता का स्तर सटीक होना चाहिए।
फ़्रेमवर्क में सीमा स्तरों के बारे में और वे शमन कार्यों के अनुरूप कैसे हैं, इसके बारे में अधिक पढ़ने के लिए, थर्मल स्थिति कोड का उपयोग करें देखें।
थर्मल एपीआई का प्रयोग करें
ऐप्स श्रोताओं को जोड़ और हटा सकते हैं, और PowerManager
क्लास के माध्यम से थर्मल स्थिति की जानकारी तक पहुंच सकते हैं। IThermal
इंटरफ़ेस थर्मल स्थिति मान लौटाने सहित सभी आवश्यक कार्यक्षमता प्रदान करता है। IThermal बाइंडर इंटरफ़ेस को OnThermalStatusChangedListener
इंटरफ़ेस के रूप में लपेटा गया है, जिसका उपयोग ऐप्स थर्मल स्टेटस श्रोताओं को पंजीकृत या हटाते समय कर सकते हैं।
एंड्रॉइड थर्मल एपीआई में स्टेटस कोड के माध्यम से ऐप्स को थर्मल गंभीरता के स्तर के बारे में सूचित करने के लिए कॉलबैक और पोलिंग दोनों विधियां हैं, जिन्हें PowerManager
क्लास में परिभाषित किया गया है। विधियाँ हैं:
-
getCurrentThermalStatus()
डिवाइस की वर्तमान थर्मल स्थिति को एक पूर्णांक के रूप में लौटाता है, जब तक कि डिवाइस थ्रॉटलिंग से नहीं गुजर रहा हो। -
addThermalStatusListener()
एक श्रोता जोड़ता है। -
removeThermalStatusListener()
पहले जोड़े गए श्रोता को हटा देता है।
थर्मल स्थिति कोड का प्रयोग करें
थर्मल स्थिति कोड विशिष्ट थ्रॉटलिंग स्तरों में अनुवाद करते हैं, जिनका उपयोग आप डेटा एकत्र करने और एक इष्टतम यूएक्स डिजाइन करने के लिए कर सकते हैं। उदाहरण के लिए, ऐप्स को 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 ) | हल्का थ्रॉटलिंग, यूएक्स प्रभावित नहीं होता है। इस चरण के लिए सौम्य उपकरण शमन का उपयोग करें। उदाहरण के लिए, बूस्ट करना या अकुशल आवृत्तियों का उपयोग करना छोड़ें, लेकिन केवल बड़े कोर पर। |
THERMAL_STATUS_MODERATE ( 0x00000002 ) | मध्यम थ्रॉटलिंग, यूएक्स पर बहुत अधिक प्रभाव नहीं पड़ता है। थर्मल शमन अग्रभूमि गतिविधियों को प्रभावित करता है, इसलिए ऐप्स को तुरंत बिजली कम करनी चाहिए। |
THERMAL_STATUS_SEVERE ( 0x00000003 ) | गंभीर गला घोंटना; यूएक्स काफी हद तक प्रभावित है। इस चरण में, डिवाइस थर्मल शमन को सिस्टम क्षमता को सीमित करना चाहिए। इस स्थिति के कारण डिस्प्ले जंक और ऑडियो जिटर जैसे दुष्प्रभाव हो सकते हैं। |
THERMAL_STATUS_CRITICAL ( 0x00000004 ) | प्लेटफ़ॉर्म ने बिजली कम करने के लिए सब कुछ किया है। डिवाइस थर्मल शमन सॉफ़्टवेयर ने सभी घटकों को उनकी न्यूनतम क्षमता पर चलाने के लिए रखा है। |
THERMAL_STATUS_EMERGENCY ( 0x00000005 ) | थर्मल स्थितियों के कारण प्लेटफ़ॉर्म के प्रमुख घटक बंद हो रहे हैं और डिवाइस की कार्यक्षमता सीमित है। यह स्थिति कोड डिवाइस बंद होने से पहले अंतिम चेतावनी का प्रतिनिधित्व करता है। इस स्थिति में, कुछ फ़ंक्शन, जैसे मॉडेम और सेल्युलर डेटा, पूरी तरह से बंद हो जाते हैं। |
THERMAL_STATUS_SHUTDOWN ( 0x00000006 ) | तुरंत बंद करो. इस चरण की गंभीरता के कारण, ऐप्स इस अधिसूचना को प्राप्त करने में सक्षम नहीं हो सकते हैं। |
डिवाइस निर्माताओं को थर्मल एचएएल के लिए वीटीएस परीक्षण पास करना होगा, और तापमान परिवर्तन का अनुकरण करने के लिए कर्नेल sysfs इंटरफ़ेस से emul_temp
उपयोग कर सकते हैं।