एंड्रॉइड विभिन्न प्रकार की टच स्क्रीन और टच पैड का समर्थन करता है, जिसमें स्टाइलस-आधारित डिजिटाइज़र टैबलेट भी शामिल है।
टच स्क्रीन टच डिवाइस हैं जो एक डिस्प्ले से जुड़े होते हैं जिससे उपयोगकर्ता को स्क्रीन पर सीधे वस्तुओं में हेरफेर करने का आभास होता है।
टच पैड स्पर्श उपकरण हैं जो डिस्प्ले से संबद्ध नहीं होते हैं, जैसे डिजिटाइज़र टैबलेट। टच पैड का उपयोग आम तौर पर उपयोगकर्ता इंटरफ़ेस को इंगित करने या पूर्ण अप्रत्यक्ष स्थिति या इशारा-आधारित नियंत्रण के लिए किया जाता है।
स्पर्श उपकरणों में ऐसे बटन हो सकते हैं जिनका कार्य माउस बटन के समान होता है।
स्पर्श उपकरणों को कभी-कभी अंतर्निहित स्पर्श सेंसर तकनीक के आधार पर उंगलियों या स्टाइलस जैसे विभिन्न उपकरणों का उपयोग करके हेरफेर किया जा सकता है।
वर्चुअल कुंजियाँ लागू करने के लिए कभी-कभी टच डिवाइस का उपयोग किया जाता है। उदाहरण के लिए, कुछ एंड्रॉइड डिवाइसों पर, टच स्क्रीन सेंसर क्षेत्र डिस्प्ले के किनारे से आगे तक फैला होता है और टच सेंसिटिव की पैड के हिस्से के रूप में दोहरे उद्देश्य को पूरा करता है।
टच डिवाइसों की विशाल विविधता के कारण, एंड्रॉइड प्रत्येक डिवाइस की विशेषताओं और वांछित व्यवहार का वर्णन करने के लिए बड़ी संख्या में कॉन्फ़िगरेशन गुणों पर निर्भर करता है।
स्पर्श उपकरण वर्गीकरण
एक इनपुट डिवाइस को मल्टी-टच डिवाइस के रूप में वर्गीकृत किया जाता है यदि निम्नलिखित दोनों स्थितियाँ सही हों:
- इनपुट डिवाइस
ABS_MT_POSITION_X
औरABS_MT_POSITION_Y
निरपेक्ष अक्षों की उपस्थिति की रिपोर्ट करता है। - इनपुट डिवाइस में कोई गेमपैड बटन नहीं है। यह स्थिति कुछ गेमपैड के साथ अस्पष्टता को हल करती है जो एमटी अक्षों को ओवरलैप करने वाले कोड के साथ अक्षों की रिपोर्ट करते हैं।
एक इनपुट डिवाइस को सिंगल-टच डिवाइस के रूप में वर्गीकृत किया जाता है यदि निम्नलिखित दोनों स्थितियाँ सही हों:
- इनपुट डिवाइस को मल्टी-टच डिवाइस के रूप में वर्गीकृत नहीं किया गया है। एक इनपुट डिवाइस को या तो सिंगल-टच डिवाइस या मल्टी-टच डिवाइस के रूप में वर्गीकृत किया जाता है, दोनों में कभी नहीं।
- इनपुट डिवाइस
ABS_X
औरABS_Y
पूर्ण अक्षों की उपस्थिति औरBTN_TOUCH
कुंजी कोड की उपस्थिति की रिपोर्ट करता है।
जब किसी इनपुट डिवाइस को टच डिवाइस के रूप में वर्गीकृत किया जाता है, तो डिवाइस के लिए वर्चुअल कुंजी मैप फ़ाइल को लोड करने का प्रयास करके वर्चुअल कुंजियों की उपस्थिति निर्धारित की जाती है। यदि वर्चुअल कुंजी मानचित्र उपलब्ध है, तो डिवाइस के लिए कुंजी लेआउट फ़ाइल भी लोड की जाती है। इन फ़ाइलों के स्थान और प्रारूप के बारे में जानकारी के लिए [वर्चुअल कुंजी मानचित्र फ़ाइलें] (# वर्चुअल-कुंजी-मैप-फ़ाइलें) देखें।
इसके बाद, सिस्टम टच डिवाइस के लिए इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल लोड करता है।
सभी अंतर्निर्मित टच डिवाइस में इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलें होनी चाहिए। यदि कोई इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल मौजूद नहीं है, तो सिस्टम एक डिफ़ॉल्ट कॉन्फ़िगरेशन चुनता है जो बाहरी यूएसबी या ब्लूटूथ एचआईडी टच स्क्रीन या टच पैड जैसे सामान्य प्रयोजन स्पर्श बाह्य उपकरणों के लिए उपयुक्त है। ये डिफ़ॉल्ट अंतर्निहित टच स्क्रीन के लिए डिज़ाइन नहीं किए गए हैं और इसके परिणामस्वरूप गलत व्यवहार हो सकता है।
इनपुट डिवाइस कॉन्फ़िगरेशन लोड होने के बाद, सिस्टम इनपुट डिवाइस को टच स्क्रीन , टच पैड या पॉइंटर डिवाइस के रूप में वर्गीकृत करता है।
- टच स्क्रीन डिवाइस का उपयोग स्क्रीन पर वस्तुओं के सीधे हेरफेर के लिए किया जाता है। उपयोगकर्ता सीधे स्क्रीन को छूता है, इसलिए सिस्टम को हेरफेर की जा रही वस्तुओं को इंगित करने के लिए किसी अतिरिक्त खर्च की आवश्यकता नहीं होती है।
- एक टच पैड डिवाइस का उपयोग किसी ऐप को किसी दिए गए सेंसर क्षेत्र पर स्पर्श के बारे में पूर्ण स्थिति की जानकारी प्रदान करने के लिए किया जाता है। यह डिजिटाइज़र टैबलेट के लिए उपयोगी हो सकता है।
- एक पॉइंटर डिवाइस का उपयोग कर्सर का उपयोग करके स्क्रीन पर वस्तुओं के अप्रत्यक्ष हेरफेर के लिए किया जाता है। उंगलियों की व्याख्या मल्टी-टच पॉइंटर जेस्चर के रूप में की जाती है। अन्य उपकरण, जैसे स्टाइलस, की व्याख्या निरपेक्ष स्थितियों का उपयोग करके की जाती है। अधिक जानकारी के लिए अप्रत्यक्ष मल्टी-टच पॉइंटर जेस्चर देखें।
इनपुट डिवाइस को टच स्क्रीन, टच पैड या पॉइंटर डिवाइस के रूप में वर्गीकृत करने के लिए निम्नलिखित नियमों का उपयोग किया जाता है।
- यदि
touch.deviceType
प्रॉपर्टी सेट है, तो डिवाइस प्रकार संकेत के अनुसार सेट किया गया है। - यदि इनपुट डिवाइस
INPUT_PROP_DIRECT
इनपुट प्रॉपर्टी (EVIOCGPROP
ioctl के माध्यम से) की उपस्थिति की रिपोर्ट करता है, तो डिवाइस प्रकार टच स्क्रीन पर सेट होता है। यह स्थिति मानती है कि प्रत्यक्ष इनपुट टच डिवाइस एक डिस्प्ले से जुड़े होते हैं जो जुड़ा हुआ है। - यदि इनपुट डिवाइस
INPUT_PROP_POINTER
इनपुट प्रॉपर्टी (EVIOCGPROP
ioctl के माध्यम से) की उपस्थिति की रिपोर्ट करता है, तो डिवाइस प्रकार पॉइंटर पर सेट होता है। - यदि इनपुट डिवाइस
REL_X
याREL_Y
सापेक्ष अक्षों की उपस्थिति की रिपोर्ट करता है, तो डिवाइस प्रकार को टच पैड पर सेट किया जाता है। यह स्थिति उन इनपुट डिवाइसों के लिए अस्पष्टता का समाधान करती है जिनमें माउस और टच पैड दोनों शामिल होते हैं। इस मामले में, पॉइंटर को नियंत्रित करने के लिए टच पैड का उपयोग नहीं किया जाता है क्योंकि माउस पहले से ही इसे नियंत्रित करता है। - अन्यथा, डिवाइस प्रकार पॉइंटर पर सेट है। यह डिफ़ॉल्ट सुनिश्चित करता है कि जिन टच पैड को किसी अन्य विशेष उद्देश्य के लिए नामित नहीं किया गया है, वे पॉइंटर को नियंत्रित करते हैं।
बटन
बटन वैकल्पिक नियंत्रण हैं जिनका उपयोग ऐप्स अतिरिक्त कार्य करने के लिए कर सकते हैं। स्पर्श उपकरणों के बटन माउस बटन के समान व्यवहार करते हैं और मुख्य रूप से पॉइंटर प्रकार के स्पर्श उपकरणों या स्टाइलस के साथ उपयोग किए जाते हैं।
निम्नलिखित बटन समर्थित हैं:
-
BTN_LEFT
:MotionEvent.BUTTON_PRIMARY
पर मैप किया गया। -
BTN_RIGHT
:MotionEvent.BUTTON_SECONDARY
पर मैप किया गया। -
BTN_MIDDLE
:MotionEvent.BUTTON_MIDDLE
पर मैप किया गया। -
BTN_BACK
औरBTN_SIDE
:MotionEvent.BUTTON_BACK
पर मैप किया गया। इस बटन को दबाने से कुंजी कोडKeyEvent.KEYCODE_BACK
के साथ एक कुंजी प्रेस भी संश्लेषित हो जाती है। -
BTN_FORWARD
औरBTN_EXTRA
:MotionEvent.BUTTON_FORWARD
पर मैप किया गया। इस बटन को दबाने से कुंजी कोडKeyEvent.KEYCODE_FORWARD
के साथ एक कुंजी प्रेस भी संश्लेषित हो जाती है। -
BTN_STYLUS
:MotionEvent.BUTTON_SECONDARY
पर मैप किया गया। -
BTN_STYLUS2
:MotionEvent.BUTTON_TERTIARY
पर मैप किया गया।
उपकरण और उपकरण के प्रकार
उपकरण एक उंगली, स्टाइलस या अन्य उपकरण है जिसका उपयोग स्पर्श उपकरण के साथ इंटरैक्ट करने के लिए किया जाता है। कुछ स्पर्श उपकरण विभिन्न प्रकार के उपकरणों के बीच अंतर कर सकते हैं।
एंड्रॉइड में अन्यत्र, जैसे MotionEvent
एपीआई में, एक टूल को अक्सर पॉइंटर के रूप में संदर्भित किया जाता है।
निम्नलिखित उपकरण प्रकार समर्थित हैं:
-
BTN_TOOL_FINGER
औरMT_TOOL_FINGER
:MotionEvent.TOOL_TYPE_FINGER
पर मैप किया गया। -
BTN_TOOL_PEN
औरMT_TOOL_PEN
:MotionEvent.TOOL_TYPE_STYLUS
पर मैप किया गया। -
BTN_TOOL_RUBBER
:MotionEvent.TOOL_TYPE_ERASER
पर मैप किया गया। -
BTN_TOOL_BRUSH
:MotionEvent.TOOL_TYPE_STYLUS
पर मैप किया गया। -
BTN_TOOL_PENCIL
:MotionEvent.TOOL_TYPE_STYLUS
पर मैप किया गया। -
BTN_TOOL_AIRBRUSH
:MotionEvent.TOOL_TYPE_STYLUS
पर मैप किया गया। -
BTN_TOOL_MOUSE
:MotionEvent.TOOL_TYPE_MOUSE
पर मैप किया गया। -
BTN_TOOL_LENS
:MotionEvent.TOOL_TYPE_MOUSE
पर मैप किया गया। -
BTN_TOOL_DOUBLETAP
,BTN_TOOL_TRIPLETAP
, औरBTN_TOOL_QUADTAP
:MotionEvent.TOOL_TYPE_FINGER
पर मैप किया गया।
मँडराना बनाम छूना उपकरण
उपकरण या तो स्पर्श उपकरण के संपर्क में हो सकते हैं या सीमा में और उसके ऊपर मँडरा सकते हैं। सभी स्पर्श उपकरण स्पर्श उपकरण के ऊपर मँडराते किसी उपकरण की उपस्थिति को महसूस नहीं कर सकते। जो ऐसा करते हैं, जैसे कि आरएफ-आधारित स्टाइलस डिजिटाइज़र, अक्सर यह पता लगा सकते हैं कि उपकरण डिजिटाइज़र की सीमित सीमा के भीतर है।
InputReader
घटक स्पर्श करने वाले टूल को होवरिंग टूल से अलग करता है। इसी तरह, टचिंग टूल और होवरिंग टूल को ऐप्स पर अलग-अलग तरीकों से रिपोर्ट किया जाता है।
MotionEvent.ACTION_DOWN
, MotionEvent.ACTION_MOVE
, MotionEvent.ACTION_DOWN
, MotionEvent.ACTION_POINTER_DOWN
और MotionEvent.ACTION_POINTER_UP
का उपयोग करके टचिंग टूल को ऐप्स को टच इवेंट के रूप में रिपोर्ट किया जाता है।
MotionEvent.ACTION_HOVER_ENTER
, MotionEvent.ACTION_HOVER_MOVE
, और MotionEvent.ACTION_HOVER_EXIT
का उपयोग करके होवरिंग टूल ऐप्स को सामान्य गति ईवेंट के रूप में रिपोर्ट किए जाते हैं।
टच डिवाइस ड्राइवर आवश्यकताएँ
- टच डिवाइस ड्राइवरों को केवल उन अक्षों और बटनों के लिए अक्ष और कुंजी कोड पंजीकृत करना चाहिए जिनका वे समर्थन करते हैं। असमर्थित अक्षों या कुंजी कोड को पंजीकृत करने से डिवाइस वर्गीकरण एल्गोरिदम भ्रमित हो सकता है या सिस्टम डिवाइस की क्षमताओं का गलत पता लगा सकता है। उदाहरण के लिए, यदि डिवाइस
BTN_TOUCH
कुंजी कोड की रिपोर्ट करता है, तो सिस्टम मानता है किBTN_TOUCH
उपयोग हमेशा यह इंगित करने के लिए किया जाता है कि उपकरण स्क्रीन को छू रहा है या नहीं। इसलिए,BTN_TOUCH
उपयोग यह इंगित करने के लिए नहीं किया जाना चाहिए कि उपकरण केवल सीमा में है और मँडरा रहा है। - सिंगल-टच डिवाइस निम्नलिखित लिनक्स इनपुट इवेंट का उपयोग करते हैं:
-
ABS_X
: (आवश्यक) टूल के X निर्देशांक की रिपोर्ट करता है। -
ABS_Y
: (आवश्यक) टूल के Y निर्देशांक की रिपोर्ट करता है। -
ABS_PRESSURE
: (वैकल्पिक) उपकरण की नोक पर लागू भौतिक दबाव या स्पर्श संपर्क की सिग्नल शक्ति की रिपोर्ट करता है। -
ABS_TOOL_WIDTH
: (वैकल्पिक) स्पर्श संपर्क या उपकरण के क्रॉस-अनुभागीय क्षेत्र या चौड़ाई की रिपोर्ट करता है। -
ABS_DISTANCE
: (वैकल्पिक) स्पर्श उपकरण की सतह से उपकरण की दूरी की रिपोर्ट करता है। -
ABS_TILT_X
: (वैकल्पिक) X अक्ष के साथ स्पर्श उपकरण की सतह से उपकरण के झुकाव की रिपोर्ट करता है। -
ABS_TILT_Y
: (वैकल्पिक) Y अक्ष के साथ स्पर्श उपकरण की सतह से उपकरण के झुकाव की रिपोर्ट करता है। -
BTN_TOUCH
: (आवश्यक) इंगित करता है कि उपकरण डिवाइस को छू रहा है या नहीं। -
BTN_LEFT
,BTN_RIGHT
,BTN_MIDDLE
,BTN_BACK
,BTN_SIDE
,BTN_FORWARD
,BTN_EXTRA
,BTN_STYLUS
,BTN_STYLUS2
: (वैकल्पिक) रिपोर्ट बटन बताता है। -
BTN_TOOL_FINGER
,BTN_TOOL_PEN
,BTN_TOOL_RUBBER
,BTN_TOOL_BRUSH
,BTN_TOOL_PENCIL
,BTN_TOOL_AIRBRUSH
,BTN_TOOL_MOUSE
,BTN_TOOL_LENS
,BTN_TOOL_DOUBLETAP
,BTN_TOOL_TRIPLETAP
,BTN_TOOL_QUADTAP
: (वैकल्पिक) टूल प्रकार की रिपोर्ट करता है।
-
- मल्टी-टच डिवाइस निम्नलिखित लिनक्स इनपुट इवेंट का उपयोग करते हैं:
-
ABS_MT_POSITION_X
: (आवश्यक) टूल के X निर्देशांक की रिपोर्ट करता है। -
ABS_MT_POSITION_Y
: (आवश्यक) टूल के Y निर्देशांक की रिपोर्ट करता है। -
ABS_MT_PRESSURE
: (वैकल्पिक) उपकरण की नोक पर लागू भौतिक दबाव या स्पर्श संपर्क की सिग्नल शक्ति की रिपोर्ट करता है। -
ABS_MT_TOUCH_MAJOR
: (वैकल्पिक) स्पर्श संपर्क के क्रॉस-अनुभागीय क्षेत्र, या स्पर्श संपर्क के लंबे आयाम की लंबाई की रिपोर्ट करता है। -
ABS_MT_TOUCH_MINOR
: (वैकल्पिक) स्पर्श संपर्क के छोटे आयाम की लंबाई की रिपोर्ट करता है। यदिABS_MT_TOUCH_MAJOR
क्षेत्र माप की रिपोर्ट कर रहा है तो इस अक्ष का उपयोग नहीं किया जाना चाहिए। -
ABS_MT_WIDTH_MAJOR
: (वैकल्पिक) उपकरण के क्रॉस-अनुभागीय क्षेत्र, या उपकरण के लंबे आयाम की लंबाई की रिपोर्ट करता है। इस अक्ष का उपयोग तब तक न करें जब तक आप उपकरण के आयामों को न जानते हों। -
ABS_MT_WIDTH_MINOR
: (वैकल्पिक) उपकरण के छोटे आयाम की लंबाई की रिपोर्ट करता है। यदिABS_MT_WIDTH_MAJOR
क्षेत्र माप की रिपोर्ट कर रहा है या यदि उपकरण के आयाम स्वयं अज्ञात हैं तो इस अक्ष का उपयोग नहीं किया जाना चाहिए। -
ABS_MT_ORIENTATION
: (वैकल्पिक) टूल के ओरिएंटेशन की रिपोर्ट करता है। -
ABS_MT_DISTANCE
: (वैकल्पिक) स्पर्श उपकरण की सतह से उपकरण की दूरी की रिपोर्ट करता है। -
ABS_MT_TOOL_TYPE
: (वैकल्पिक) टूल प्रकार कोMT_TOOL_FINGER
याMT_TOOL_PEN
के रूप में रिपोर्ट करता है। -
ABS_MT_TRACKING_ID
: (वैकल्पिक) टूल की ट्रैकिंग आईडी की रिपोर्ट करता है। ट्रैकिंग आईडी एक मनमाना गैर-नकारात्मक पूर्णांक है जिसका उपयोग एकाधिक टूल सक्रिय होने पर प्रत्येक टूल को स्वतंत्र रूप से पहचानने और ट्रैक करने के लिए किया जाता है। उदाहरण के लिए, जब कई उंगलियां डिवाइस को छू रही हैं, तो प्रत्येक उंगली को एक अलग ट्रैकिंग आईडी दी जानी चाहिए जिसका उपयोग तब तक किया जाता है जब तक उंगली संपर्क में रहती है। ट्रैकिंग आईडी का पुन: उपयोग तब किया जा सकता है जब उनके संबंधित उपकरण सीमा से बाहर चले जाएं। -
ABS_MT_SLOT
: (वैकल्पिक) लिनक्स मल्टी-टच प्रोटोकॉल 'बी' का उपयोग करते समय टूल की स्लॉट आईडी की रिपोर्ट करता है। अधिक विवरण के लिए लिनक्स मल्टी-टच प्रोटोकॉल दस्तावेज़ देखें। -
BTN_TOUCH
: (आवश्यक) इंगित करता है कि उपकरण डिवाइस को छू रहा है या नहीं। -
BTN_LEFT
,BTN_RIGHT
,BTN_MIDDLE
,BTN_BACK
,BTN_SIDE
,BTN_FORWARD
,BTN_EXTRA
,BTN_STYLUS
,BTN_STYLUS2
: (वैकल्पिक) रिपोर्ट बटन बताता है। -
BTN_TOOL_FINGER
,BTN_TOOL_PEN
,BTN_TOOL_RUBBER
,BTN_TOOL_BRUSH
,BTN_TOOL_PENCIL
,BTN_TOOL_AIRBRUSH
,BTN_TOOL_MOUSE
,BTN_TOOL_LENS
,BTN_TOOL_DOUBLETAP
,BTN_TOOL_TRIPLETAP
,BTN_TOOL_QUADTAP
: (वैकल्पिक) टूल प्रकार की रिपोर्ट करता है।
-
- यदि सिंगल-टच और मल्टी-टच प्रोटोकॉल दोनों के लिए अक्षों को परिभाषित किया गया है, तो केवल मल्टी-टच अक्षों का उपयोग किया जाता है और एकल-स्पर्श अक्षों को नजरअंदाज कर दिया जाता है।
ABS_X
,ABS_Y
,ABS_MT_POSITION_X
औरABS_MT_POSITION_Y
अक्षों के न्यूनतम और अधिकतम मान डिवाइस-विशिष्ट सतह इकाइयों में डिवाइस के सक्रिय क्षेत्र की सीमा को परिभाषित करते हैं। टच स्क्रीन के मामले में, सक्रिय क्षेत्र टच डिवाइस के उस हिस्से का वर्णन करता है जो वास्तव में डिस्प्ले को कवर करता है।एक टच स्क्रीन के लिए, सिस्टम स्वचालित रूप से निम्नलिखित गणना के अनुसार डिस्प्ले पिक्सल में स्पर्श स्थिति प्राप्त करने के लिए सतह इकाइयों में रिपोर्ट की गई स्पर्श स्थिति को प्रक्षेपित करता है:
displayX = (x - minX) * displayWidth / (maxX - minX + 1) displayY = (y - minY) * displayHeight / (maxY - minY + 1)
एक टच स्क्रीन रिपोर्ट किए गए सक्रिय क्षेत्र के बाहर के स्पर्श की रिपोर्ट कर सकती है।
सक्रिय क्षेत्र के बाहर शुरू किए गए स्पर्श ऐप्स तक वितरित नहीं किए जाते हैं, लेकिन वर्चुअल कुंजियों के लिए उपयोग किए जा सकते हैं।
जो स्पर्श सक्रिय क्षेत्र के अंदर शुरू किए जाते हैं, या जो प्रदर्शन क्षेत्र में प्रवेश करते हैं और बाहर निकलते हैं, उन्हें ऐप्स तक पहुंचाया जाता है। नतीजतन, यदि कोई स्पर्श किसी ऐप की सीमा के भीतर शुरू होता है और फिर सक्रिय क्षेत्र से बाहर चला जाता है, तो ऐप को डिस्प्ले निर्देशांक के साथ स्पर्श ईवेंट प्राप्त हो सकते हैं जो नकारात्मक या डिस्प्ले की सीमा से परे हैं। यह अपेक्षित व्यवहार है.
एक स्पर्श उपकरण को कभी भी स्पर्श निर्देशांक को सक्रिय क्षेत्र की सीमा पर नहीं दबाना चाहिए। यदि कोई स्पर्श सक्रिय क्षेत्र से बाहर निकलता है, तो इसे सक्रिय क्षेत्र से बाहर के रूप में रिपोर्ट किया जाना चाहिए, या इसे बिल्कुल भी रिपोर्ट नहीं किया जाना चाहिए।
उदाहरण के लिए, यदि उपयोगकर्ता की उंगली टच स्क्रीन के ऊपरी-बाएँ कोने के पास छू रही है, तो यह (minX, minY) के समन्वय की रिपोर्ट कर सकती है। यदि उंगली सक्रिय क्षेत्र से आगे बढ़ती रहती है, तो टच स्क्रीन को या तो minX और minY से कम घटकों, जैसे (minX - 2, minY - 3) के साथ समन्वय रिपोर्ट करना शुरू कर देना चाहिए, या इसे स्पर्श की रिपोर्ट करना पूरी तरह से बंद कर देना चाहिए। दूसरे शब्दों में, जब उपयोगकर्ता की उंगली वास्तव में सक्रिय क्षेत्र के बाहर छू रही हो तो टच स्क्रीन को रिपोर्ट नहीं करना चाहिए (minX, minY)।
डिस्प्ले किनारे पर क्लैंपिंग टच निर्देशांक स्क्रीन के किनारे के चारों ओर एक कृत्रिम कठोर सीमा बनाता है जो सिस्टम को डिस्प्ले क्षेत्र की सीमा में प्रवेश करने या बाहर निकलने वाली गतिविधियों को सुचारू रूप से ट्रैक करने से रोकता है।
ABS_PRESSURE
याABS_MT_PRESSURE
द्वारा रिपोर्ट किए गए मान, यदि वे बिल्कुल रिपोर्ट किए गए हैं, तो उपकरण को छूते समय गैर-शून्य होना चाहिए और अन्यथा शून्य होना चाहिए, यह इंगित करने के लिए कि उपकरण मँडरा रहा है।दबाव संबंधी जानकारी देना वैकल्पिक है लेकिन इसकी पुरजोर अनुशंसा की जाती है। दबाव-संवेदनशील ड्राइंग और अन्य प्रभावों को लागू करने के लिए ऐप्स दबाव संबंधी जानकारी का उपयोग कर सकते हैं।
ABS_TOOL_WIDTH
,ABS_MT_TOUCH_MAJOR
,ABS_MT_TOUCH_MINOR
,ABS_MT_WIDTH_MAJOR
, याABS_MT_WIDTH_MINOR
द्वारा रिपोर्ट किए गए मान तब गैर-शून्य होना चाहिए जब उपकरण डिवाइस को छू रहा हो और अन्यथा शून्य होना चाहिए, लेकिन यह आवश्यक नहीं है। उदाहरण के लिए, टच डिवाइस फिंगर टच संपर्कों के आकार को मापने में सक्षम हो सकता है लेकिन स्टाइलस टच संपर्कों को नहीं।रिपोर्टिंग आकार की जानकारी वैकल्पिक है लेकिन दृढ़ता से अनुशंसित है। आकार-संवेदनशील ड्राइंग और अन्य प्रभावों को लागू करने के लिए ऐप्स दबाव जानकारी का उपयोग कर सकते हैं।
जब उपकरण डिवाइस को छू रहा हो तो
ABS_DISTANCE
याABS_MT_DISTANCE
द्वारा रिपोर्ट किए गए मान शून्य के करीब पहुंचने चाहिए। उपकरण के सीधे संपर्क में होने पर भी दूरी गैर-शून्य रह सकती है। रिपोर्ट किए गए सटीक मान हार्डवेयर द्वारा दूरी मापने के तरीके पर निर्भर करते हैं।दूरी की जानकारी देना वैकल्पिक है लेकिन स्टाइलस उपकरणों के लिए अनुशंसित है।
जब उपकरण डिवाइस के लंबवत हो तो
ABS_TILT_X
औरABS_TILT_Y
द्वारा रिपोर्ट किए गए मान शून्य होने चाहिए। एक गैर-शून्य झुकाव इंगित करता है कि उपकरण एक झुकाव पर रखा गया है।एक्स और वाई अक्षों के साथ झुकाव कोणों को लंबवत से डिग्री में निर्दिष्ट माना जाता है। केंद्र बिंदु (पूर्णतः लंबवत) प्रत्येक अक्ष के लिए
(max + min) / 2
द्वारा दिया गया है। केंद्र बिंदु से छोटे मान ऊपर या बाईं ओर झुकाव का प्रतिनिधित्व करते हैं, केंद्र बिंदु से बड़े मान नीचे या दाईं ओर झुकाव का प्रतिनिधित्व करते हैं।InputReader
X और Y झुकाव घटकों को 0 सेPI / 2
रेडियन तक के लंबवत झुकाव कोण और-PI
सेPI
रेडियन तक के समतलीय अभिविन्यास कोण में परिवर्तित करता है। इस निरूपण के परिणामस्वरूप अभिविन्यास का वर्णन मिलता है जो कि उंगलियों के स्पर्श का वर्णन करने के लिए उपयोग किए जाने वाले के साथ संगत है।झुकाव संबंधी जानकारी रिपोर्ट करना वैकल्पिक है लेकिन स्टाइलस उपकरणों के लिए अनुशंसित है।
यदि टूल प्रकार
ABS_MT_TOOL_TYPE
द्वारा रिपोर्ट किया गया है, तो यहBTN_TOOL_*
द्वारा रिपोर्ट की गई किसी भी टूल प्रकार की जानकारी को प्रतिस्थापित कर देता है। यदि कोई टूल प्रकार की जानकारी बिल्कुल भी उपलब्ध नहीं है, तो टूल प्रकार डिफ़ॉल्ट रूप सेMotionEvent.TOOL_TYPE_FINGER
हो जाता है।किसी उपकरण का सक्रिय होना निम्नलिखित स्थितियों के आधार पर निर्धारित किया जाता है:
सिंगल-टच प्रोटोकॉल का उपयोग करते समय, यदि
BTN_TOUCH
, याBTN_TOOL_*
1 है तो टूल सक्रिय है।इस शर्त का तात्पर्य है कि
InputReader
टूल की प्रकृति के बारे में कम से कम कुछ जानकारी होनी चाहिए, चाहे वह स्पर्श कर रहा हो, या कम से कम उसके टूल प्रकार के बारे में। यदि कोई जानकारी उपलब्ध नहीं है, तो उपकरण को निष्क्रिय (सीमा से बाहर) माना जाता है।- मल्टी-टच प्रोटोकॉल 'ए' का उपयोग करते समय, टूल जब भी नवीनतम सिंक रिपोर्ट में दिखाई देता है तब सक्रिय होता है। जब टूल सिंक रिपोर्ट में दिखना बंद हो जाता है, तो इसका अस्तित्व समाप्त हो जाता है।
- मल्टी-टच प्रोटोकॉल 'बी' का उपयोग करते समय, टूल तब तक सक्रिय रहता है जब तक उसमें एक सक्रिय स्लॉट है। जब स्लॉट साफ़ हो जाता है, तो उपकरण का अस्तित्व समाप्त हो जाता है।
- निम्नलिखित स्थितियों के आधार पर एक उपकरण का होवरिंग निर्धारित किया जाता है:
- यदि उपकरण
BTN_TOOL_MOUSE
याBTN_TOOL_LENS
है, तो उपकरण मँडरा नहीं रहा है, भले ही निम्न में से कोई भी स्थिति सत्य हो। - यदि उपकरण सक्रिय है और ड्राइवर दबाव की जानकारी देता है, और रिपोर्ट किया गया दबाव शून्य है, तो उपकरण मँडरा रहा है।
- यदि उपकरण सक्रिय है और ड्राइवर
BTN_TOUCH
कुंजी कोड का समर्थन करता है औरBTN_TOUCH
का मान शून्य है, तो उपकरण मँडरा रहा है।
- यदि उपकरण
-
InputReader
मल्टी-टच प्रोटोकॉल 'ए' और 'बी' दोनों का समर्थन करता है। नए ड्राइवरों को 'बी' प्रोटोकॉल का उपयोग करना चाहिए लेकिन कोई भी काम करता है। एंड्रॉइड 4.0 के अनुसार, लिनक्स इनपुट प्रोटोकॉल विनिर्देश के अनुपालन के लिए टच स्क्रीन ड्राइवरों को बदलने की आवश्यकता हो सकती है।
निम्नलिखित परिवर्तनों की आवश्यकता हो सकती है:
जब कोई उपकरण निष्क्रिय हो जाता है (उंगली "ऊपर" हो जाती है), तो इसे बाद की मल्टी-टच सिंक रिपोर्ट में दिखना बंद हो जाना चाहिए। जब सभी उपकरण निष्क्रिय हो जाते हैं (सभी उंगलियां "ऊपर" हो जाती हैं), तो ड्राइवर को एक खाली सिंक रिपोर्ट पैकेट भेजना चाहिए, जैसे
SYN_MT_REPORT
और उसके बादSYN_REPORT
।एंड्रॉइड के पिछले संस्करणों में 0 का दबाव मान भेजकर "अप" घटनाओं की सूचना दी जाने की उम्मीद थी। पुराना व्यवहार लिनक्स इनपुट प्रोटोकॉल विनिर्देश के साथ असंगत था और अब समर्थित नहीं है।
भौतिक दबाव या सिग्नल शक्ति की जानकारी
ABS_MT_PRESSURE
का उपयोग करके रिपोर्ट की जानी चाहिए।एंड्रॉइड के पिछले संस्करणों ने
ABS_MT_TOUCH_MAJOR
से दबाव की जानकारी प्राप्त की। पुराना व्यवहार लिनक्स इनपुट प्रोटोकॉल विनिर्देश के साथ असंगत था और अब समर्थित नहीं है।- स्पर्श आकार की जानकारी
ABS_MT_TOUCH_MAJOR
का उपयोग करके रिपोर्ट की जानी चाहिए।Android के पिछले संस्करणों ने
ABS_MT_TOOL_MAJOR
से आकार की जानकारी प्राप्त की। पुराना व्यवहार लिनक्स इनपुट प्रोटोकॉल विनिर्देश के साथ असंगत था और अब समर्थित नहीं है।
टच डिवाइस ऑपरेशन
एंड्रॉइड पर टच डिवाइस ऑपरेशन का संक्षिप्त सारांश निम्नलिखित है।
-
EventHub
evdev
ड्राइवर से कच्चे इवेंट पढ़ता है। -
InputReader
कच्ची घटनाओं का उपभोग करता है और प्रत्येक उपकरण की स्थिति और अन्य विशेषताओं के बारे में आंतरिक स्थिति को अद्यतन करता है। यह बटन स्थिति को भी ट्रैक करता है। - यदि BACK या FORWARD दबाया या छोड़ा गया था,
InputReader
मुख्य घटना के बारे मेंInputDispatcher
सूचित करता है। -
InputReader
यह निर्धारित करता है कि वर्चुअल कुंजी दबाई गई है या नहीं। यदि ऐसा है, तो यहInputDispatcher
मुख्य घटना के बारे में सूचित करता है। -
InputReader
यह निर्धारित करता है कि स्पर्श डिस्प्ले की सीमा के भीतर शुरू किया गया था या नहीं। यदि ऐसा है, तो यहInputDispatcher
टच इवेंट के बारे में सूचित करता है। - यदि कोई छूने वाला उपकरण नहीं है लेकिन कम से कम एक होवरिंग टूल है, तो
InputReader
होवर इवेंट के बारे मेंInputDispatcher
सूचित करता है। - यदि टच डिवाइस प्रकार पॉइंटर है, तो
InputReader
पॉइंटर जेस्चर का पता लगाता है, पॉइंटर को स्थानांतरित करता है और तदनुसार स्पॉट करता है और पॉइंटर इवेंट के बारे मेंInputDispatcher
सूचित करता है। -
InputDispatcher
यह निर्धारित करने के लिएWindowManagerPolicy
का उपयोग करता है कि क्या ईवेंट भेजे जाने चाहिए और क्या उन्हें डिवाइस को जगाना चाहिए। फिर,InputDispatcher
ईवेंट को उपयुक्त ऐप्स तक पहुंचाता है।
डिवाइस कॉन्फ़िगरेशन स्पर्श करें
टच डिवाइस का व्यवहार डिवाइस के अक्षों, बटनों, इनपुट गुणों, इनपुट डिवाइस कॉन्फ़िगरेशन, वर्चुअल कुंजी मानचित्र और कुंजी लेआउट द्वारा निर्धारित होता है।
कीबोर्ड कॉन्फ़िगरेशन में भाग लेने वाली फ़ाइलों के बारे में अधिक जानकारी के लिए निम्नलिखित अनुभाग देखें:
गुण
सिस्टम स्पर्श डिवाइस व्यवहार को कॉन्फ़िगर और कैलिब्रेट करने के लिए कई इनपुट डिवाइस कॉन्फ़िगरेशन गुणों पर निर्भर करता है।
इसका एक कारण यह है कि स्पर्श उपकरणों के लिए डिवाइस ड्राइवर अक्सर डिवाइस-विशिष्ट इकाइयों का उपयोग करके स्पर्श की विशेषताओं की रिपोर्ट करते हैं।
उदाहरण के लिए, कई स्पर्श उपकरण आंतरिक उपकरण-विशिष्ट पैमाने का उपयोग करके स्पर्श संपर्क क्षेत्र को मापते हैं, जैसे स्पर्श द्वारा ट्रिगर किए गए सेंसर नोड्स की कुल संख्या। यह कच्चा आकार मान ऐप्स के लिए सार्थक नहीं होगा क्योंकि उन्हें टच डिवाइस सेंसर नोड्स के भौतिक आकार और अन्य विशेषताओं के बारे में जानने की आवश्यकता होगी।
सिस्टम टच डिवाइस द्वारा रिपोर्ट किए गए मानों को एक सरल मानक प्रतिनिधित्व में डिकोड, ट्रांसफॉर्म और सामान्य करने के लिए इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों में एन्कोड किए गए अंशांकन पैरामीटर का उपयोग करता है जिसे ऐप्स समझ सकते हैं।
दस्तावेज़ीकरण सम्मेलन
दस्तावेज़ीकरण उद्देश्यों के लिए, हम अंशांकन प्रक्रिया के दौरान सिस्टम द्वारा उपयोग किए गए मानों का वर्णन करने के लिए निम्नलिखित सम्मेलनों का उपयोग करते हैं।
कच्चे अक्ष मान
निम्नलिखित अभिव्यक्तियाँ टच डिवाइस ड्राइवर द्वारा EV_ABS
घटनाओं के रूप में रिपोर्ट किए गए कच्चे मानों को दर्शाती हैं।
-
raw.x
-
ABS_X
याABS_MT_POSITION_X
अक्ष का मान. -
raw.y
-
ABS_Y
याABS_MT_POSITION_Y
अक्ष का मान. -
raw.pressure
-
ABS_PRESSURE
याABS_MT_PRESSURE
अक्ष का मान, या उपलब्ध न होने पर 0। -
raw.touchMajor
-
ABS_MT_TOUCH_MAJOR
अक्ष का मान, या यदि उपलब्ध नहीं है तो 0। -
raw.touchMinor
-
ABS_MT_TOUCH_MINOR
अक्ष का मान, या यदि उपलब्ध नहीं है तोraw.touchMajor
। -
raw.toolMajor
-
ABS_TOOL_WIDTH
याABS_MT_WIDTH_MAJOR
अक्ष का मान, या यदि उपलब्ध नहीं है तो 0। -
raw.toolMinor
-
ABS_MT_WIDTH_MINOR
अक्ष का मान, या यदि उपलब्ध नहीं है तोraw.toolMajor
। -
raw.orientation
-
ABS_MT_ORIENTATION
अक्ष का मान, या यदि उपलब्ध न हो तो 0। -
raw.distance
-
ABS_DISTANCE
याABS_MT_DISTANCE
अक्ष का मान, या यदि उपलब्ध नहीं है तो 0। -
raw.tiltX
-
ABS_TILT_X
अक्ष का मान, या यदि उपलब्ध न हो तो 0। -
raw.tiltY
-
ABS_TILT_Y
अक्ष का मान, या यदि उपलब्ध न हो तो 0।
कच्ची अक्ष श्रेणियाँ
निम्नलिखित अभिव्यक्तियाँ कच्चे मूल्यों की सीमा को दर्शाती हैं। वे प्रत्येक अक्ष के लिए EVIOCGABS
ioctl को कॉल करके प्राप्त किए जाते हैं।
-
raw.*.min
- कच्ची धुरी का समावेशी न्यूनतम मान.
-
raw.*.max
- कच्ची धुरी का समावेशी अधिकतम मान.
-
raw.*.range
-
raw.*.max - raw.*.min
. -
raw.*.fuzz
- कच्ची धुरी की सटीकता. जैसे. फ़ज़ = 1 का तात्पर्य है कि मान +/- 1 इकाई तक सटीक हैं।
-
raw.width
- स्पर्श क्षेत्र की सम्मिलित चौड़ाई,
raw.x.range + 1
के बराबर। -
raw.height
- स्पर्श क्षेत्र की समावेशी ऊंचाई,
raw.y.range + 1
के बराबर।
आउटपुट रेंज
निम्नलिखित अभिव्यक्तियाँ आउटपुट समन्वय प्रणाली की विशेषताओं को दर्शाती हैं। सिस्टम टच डिवाइस द्वारा उपयोग की जाने वाली सतह इकाइयों से स्पर्श स्थिति की जानकारी को आउटपुट इकाइयों में अनुवाद करने के लिए रैखिक इंटरपोलेशन का उपयोग करता है जो डिस्प्ले पिक्सल जैसे ऐप्स को रिपोर्ट किया जाता है।
-
output.width
- आउटपुट चौड़ाई. टच स्क्रीन (डिस्प्ले से संबंधित) के लिए, यह पिक्सेल में डिस्प्ले चौड़ाई है। टच पैड (डिस्प्ले से संबद्ध नहीं) के लिए, आउटपुट चौड़ाई
raw.width
के बराबर होती है, जो दर्शाता है कि कोई इंटरपोलेशन नहीं किया गया है। -
output.height
- आउटपुट ऊंचाई. टच स्क्रीन (डिस्प्ले से संबंधित) के लिए, यह पिक्सेल में डिस्प्ले ऊंचाई है। टच पैड (डिस्प्ले से संबद्ध नहीं) के लिए, आउटपुट ऊंचाई
raw.height
के बराबर होती है, जो दर्शाता है कि कोई इंटरपोलेशन नहीं किया गया है। -
output.diag
- आउटपुट समन्वय प्रणाली की विकर्ण लंबाई,
sqrt(output.width ^2 + output.height ^2)
के बराबर।
बुनियादी विन्यास
अंशांकन मान निर्दिष्ट करने के लिए टच इनपुट मैपर इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइल में कई कॉन्फ़िगरेशन गुणों का उपयोग करता है। निम्न तालिका कुछ सामान्य प्रयोजन कॉन्फ़िगरेशन गुणों का वर्णन करती है। अन्य सभी गुणों का वर्णन निम्नलिखित अनुभागों में उन क्षेत्रों के साथ किया गया है जिनका उपयोग अंशांकन के लिए किया जाता है।
स्पर्श.डिवाइस प्रकार
परिभाषा: touch.deviceType
= touchScreen
| touchPad
| pointer
| default
स्पर्श उपकरण प्रकार निर्दिष्ट करता है.
यदि मान
touchScreen
है, तो टच डिवाइस एक डिस्प्ले से जुड़ी टच स्क्रीन है।यदि मान
touchPad
है, तो टच डिवाइस एक टच पैड है जो डिस्प्ले से संबद्ध नहीं है।यदि मान
pointer
है, तो टच डिवाइस एक टच पैड है जो डिस्प्ले से जुड़ा नहीं है, और इसकी गतियों का उपयोग अप्रत्यक्ष मल्टी-टच पॉइंटर जेस्चर के लिए किया जाता है।यदि मान
default
है, तो सिस्टम स्वचालित रूप से वर्गीकरण एल्गोरिदम के अनुसार डिवाइस प्रकार का पता लगाता है।
डिवाइस का प्रकार स्पर्श डिवाइस के व्यवहार को कैसे प्रभावित करता है, इसके बारे में अधिक जानकारी के लिए वर्गीकरण अनुभाग देखें।
एंड्रॉइड 3 और उससे पहले के संस्करण में, सभी टच डिवाइस को टच स्क्रीन माना गया था।
स्पर्श.ओरिएंटेशनअवेयर
परिभाषा: touch.orientationAware
= 0
| 1
निर्दिष्ट करता है कि टच डिवाइस को डिस्प्ले ओरिएंटेशन परिवर्तनों पर प्रतिक्रिया देनी चाहिए या नहीं।
यदि मान
1
है, तो जब भी डिस्प्ले ओरिएंटेशन बदलता है तो टच डिवाइस द्वारा रिपोर्ट की गई स्पर्श स्थिति को घुमाया जाता है।यदि मान
0
है, तो स्पर्श उपकरण द्वारा रिपोर्ट की गई स्पर्श स्थितियाँ अभिविन्यास परिवर्तन प्रदर्शित करने से प्रतिरक्षित हैं।
यदि डिवाइस टच स्क्रीन है तो डिफ़ॉल्ट मान 1
है, अन्यथा 0
है।
सिस्टम आंतरिक और बाहरी टच स्क्रीन और डिस्प्ले के बीच अंतर करता है। एक ओरिएंटेशन जागरूक आंतरिक टच स्क्रीन को आंतरिक डिस्प्ले के ओरिएंटेशन के आधार पर घुमाया जाता है। एक ओरिएंटेशन जागरूक बाहरी टच स्क्रीन को बाहरी डिस्प्ले के ओरिएंटेशन के आधार पर घुमाया जाता है।
नेक्सस वन जैसे उपकरणों पर टच स्क्रीन के रोटेशन का समर्थन करने के लिए ओरिएंटेशन जागरूकता का उपयोग किया जाता है। उदाहरण के लिए, जब डिवाइस को उसके प्राकृतिक अभिविन्यास से 90 डिग्री तक दक्षिणावर्त घुमाया जाता है, तो स्पर्शों की पूर्ण स्थिति को इस तरह से फिर से मैप किया जाता है कि टच स्क्रीन के पूर्ण समन्वय प्रणाली के ऊपरी-बाएँ कोने में एक स्पर्श को शीर्ष-बाएँ में एक स्पर्श के रूप में रिपोर्ट किया जाता है। डिस्प्ले के घुमाए गए समन्वय प्रणाली का कोना। ऐसा इसलिए किया जाता है ताकि स्पर्शों को उसी समन्वय प्रणाली के साथ रिपोर्ट किया जा सके जिसका उपयोग ऐप्स अपने दृश्य तत्वों को खींचने के लिए करते हैं।
हनीकॉम्ब से पहले, सभी स्पर्श उपकरणों को अभिविन्यास जागरूक माना जाता था।
स्पर्श.जेस्चरमोड
परिभाषा: touch.gestureMode
= pointer
| spots
| default
पॉइंटर जेस्चर के लिए प्रेजेंटेशन मोड निर्दिष्ट करता है। यह कॉन्फ़िगरेशन गुण केवल तभी प्रासंगिक है जब टच डिवाइस पॉइंटर प्रकार का हो।
यदि मान
pointer
है, तो टच पैड इशारों को माउस सूचक के समान कर्सर के माध्यम से प्रस्तुत किया जाता है।यदि मान
spots
है, तो टच पैड जेस्चर को एक एंकर द्वारा प्रस्तुत किया जाता है जो जेस्चर के केन्द्रक का प्रतिनिधित्व करता है और गोलाकार स्पॉट का एक सेट होता है जो व्यक्तिगत उंगलियों की स्थिति का प्रतिनिधित्व करता है।
जब INPUT_PROP_SEMI_MT
इनपुट प्रॉपर्टी सेट होती है, या अन्यथा spots
, तो डिफ़ॉल्ट मान pointer
होता है।
एक्स और वाई फ़ील्ड
एक्स और वाई फ़ील्ड संपर्क क्षेत्र के केंद्र के लिए स्थिति संबंधी जानकारी प्रदान करते हैं।
गणना
गणना सीधी है: टच ड्राइवर से स्थितिगत जानकारी आउटपुट समन्वय प्रणाली में रैखिक रूप से प्रक्षेपित होती है।
xScale = output.width / raw.width yScale = output.height / raw.height If not orientation aware or screen rotation is 0 degrees: output.x = (raw.x - raw.x.min) * xScale output.y = (raw.y - raw.y.min) * yScale Else If rotation is 90 degrees: output.x = (raw.y - raw.y.min) * yScale output.y = (raw.x.max - raw.x) * xScale Else If rotation is 180 degrees: output.x = (raw.x.max - raw.x) * xScale output.y = (raw.y.max - raw.y) * yScale Else If rotation is 270 degrees: output.x = (raw.y.max - raw.y) * yScale output.y = (raw.x - raw.x.min) * xScale End If
टचमेजर, टचमाइनर, टूलमेजर, टूलमाइनर, आकार फ़ील्ड
touchMajor
और touchMinor
फ़ील्ड आउटपुट इकाइयों (पिक्सेल) में संपर्क क्षेत्र के अनुमानित आयामों का वर्णन करते हैं।
toolMajor
और toolMinor
फ़ील्ड आउटपुट इकाइयों (पिक्सेल) में टूल के अनुमानित आयामों का वर्णन करते हैं।
size
फ़ील्ड सबसे बड़े संभावित स्पर्श के सापेक्ष स्पर्श के सामान्यीकृत आकार का वर्णन करता है जिसे स्पर्श उपकरण समझ सकता है। सबसे छोटा संभव सामान्यीकृत आकार 0.0 है (कोई संपर्क नहीं है, या यह मापने योग्य नहीं है), और सबसे बड़ा संभव सामान्यीकृत आकार 1.0 है (सेंसर क्षेत्र संतृप्त है)।
जब अनुमानित लंबाई और चौड़ाई दोनों को मापा जा सकता है, तो touchMajor
फ़ील्ड लंबे आयाम को निर्दिष्ट करता है और touchMinor
फ़ील्ड संपर्क क्षेत्र के छोटे आयाम को निर्दिष्ट करता है। जब संपर्क क्षेत्र का केवल अनुमानित व्यास मापा जा सकता है, तो touchMajor
और touchMinor
फ़ील्ड बराबर होते हैं।
इसी तरह, toolMajor
फ़ील्ड लंबे आयाम को निर्दिष्ट करता है और toolMinor
फ़ील्ड टूल के क्रॉस-सेक्शनल क्षेत्र के छोटे आयाम को निर्दिष्ट करता है।
यदि स्पर्श आकार अनुपलब्ध है लेकिन उपकरण आकार उपलब्ध है, तो उपकरण आकार स्पर्श आकार के बराबर सेट किया गया है। इसके विपरीत, यदि उपकरण का आकार अनुपलब्ध है लेकिन स्पर्श आकार उपलब्ध है, तो स्पर्श आकार को उपकरण के आकार के बराबर सेट किया जाता है।
स्पर्श उपकरण विभिन्न तरीकों से स्पर्श आकार और उपकरण आकार को मापते हैं या रिपोर्ट करते हैं। वर्तमान कार्यान्वयन तीन अलग-अलग प्रकार के मापों का समर्थन करता है: सतह इकाइयों में व्यास, क्षेत्र और ज्यामितीय बाउंडिंग बॉक्स।
परिभाषा: touch.size.calibration
= none
| geometric
| diameter
| area
| default
स्पर्श आकार और उपकरण आकार की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप के प्रकार को निर्दिष्ट करता है।
यदि मान
none
है, तो आकार शून्य पर सेट है।यदि मान
geometric
है, तो आकार को स्थिति के समान सतह इकाइयों में निर्दिष्ट माना जाता है, इसलिए इसे उसी तरीके से स्केल किया जाता है।यदि मान
diameter
है, तो आकार को स्पर्श या उपकरण के व्यास (चौड़ाई) के समानुपाती माना जाता है।यदि मान
area
है, तो आकार स्पर्श या उपकरण के क्षेत्र के समानुपाती माना जाता है।यदि मान
default
है, तोraw.touchMajor
याraw.toolMajor
अक्ष उपलब्ध होने पर सिस्टमgeometric
अंशांकन का उपयोग करता है, अन्यथा यहnone
अंशांकन का उपयोग नहीं करता है।
स्पर्श.आकार.पैमाने
परिभाषा: touch.size.scale
= <एक गैर-नकारात्मक फ़्लोटिंग पॉइंट संख्या>
अंशांकन में उपयोग किए जाने वाले निरंतर पैमाने के कारक को निर्दिष्ट करता है।
डिफ़ॉल्ट मान 1.0
है.
स्पर्श.आकार.पूर्वाग्रह
परिभाषा: touch.size.bias
= <एक गैर-नकारात्मक फ़्लोटिंग पॉइंट संख्या>
अंशांकन में प्रयुक्त निरंतर पूर्वाग्रह मान निर्दिष्ट करता है।
डिफ़ॉल्ट मान 0.0
है.
स्पर्श.आकार.सारांशित है
परिभाषा: touch.size.isSummed
= 0
| 1
निर्दिष्ट करता है कि क्या आकार सभी सक्रिय संपर्कों के आकारों के योग के रूप में रिपोर्ट किया गया है, या प्रत्येक संपर्क के लिए अलग-अलग रिपोर्ट किया गया है।
यदि मान
1
है, तो रिपोर्ट किए गए आकार को उपयोग से पहले संपर्कों की संख्या से विभाजित किया जाता है।यदि मान
0
है, तो रिपोर्ट किया गया आकार वैसे ही उपयोग किया जाता है।
डिफॉल्यू मूल्य 0
है ।
कुछ स्पर्श उपकरण, विशेष रूप से "सेमी-एमटी" उपकरण कई संपर्कों के अलग-अलग आयामों को अलग नहीं कर सकते हैं, इसलिए वे एक आकार माप की रिपोर्ट करते हैं जो उनके कुल क्षेत्र या चौड़ाई का प्रतिनिधित्व करता है। ऐसे उपकरणों के लिए यह संपत्ति केवल 1
पर सेट की जानी चाहिए। यदि संदेह हो, तो इस मान को 0
पर सेट करें।
गणना
touchMajor
, touchMinor
, toolMajor
, toolMinor
और size
फ़ील्ड की गणना निर्दिष्ट अंशांकन पैरामीटर पर निर्भर करती है।
If raw.touchMajor and raw.toolMajor are available: touchMajor = raw.touchMajor touchMinor = raw.touchMinor toolMajor = raw.toolMajor toolMinor = raw.toolMinor Else If raw.touchMajor is available: toolMajor = touchMajor = raw.touchMajor toolMinor = touchMinor = raw.touchMinor Else If raw.toolMajor is available: touchMajor = toolMajor = raw.toolMajor touchMinor = toolMinor = raw.toolMinor Else touchMajor = toolMajor = 0 touchMinor = toolMinor = 0 size = 0 End If size = avg(touchMajor, touchMinor) If touch.size.isSummed == 1: touchMajor = touchMajor / numberOfActiveContacts touchMinor = touchMinor / numberOfActiveContacts toolMajor = toolMajor / numberOfActiveContacts toolMinor = toolMinor / numberOfActiveContacts size = size / numberOfActiveContacts End If If touch.size.calibration == "none": touchMajor = toolMajor = 0 touchMinor = toolMinor = 0 size = 0 Else If touch.size.calibration == "geometric": outputScale = average(output.width / raw.width, output.height / raw.height) touchMajor = touchMajor * outputScale touchMinor = touchMinor * outputScale toolMajor = toolMajor * outputScale toolMinor = toolMinor * outputScale Else If touch.size.calibration == "area": touchMajor = sqrt(touchMajor) touchMinor = touchMajor toolMajor = sqrt(toolMajor) toolMinor = toolMajor Else If touch.size.calibration == "diameter": touchMinor = touchMajor toolMinor = toolMajor End If If touchMajor != 0: output.touchMajor = touchMajor * touch.size.scale + touch.size.bias Else output.touchMajor = 0 End If If touchMinor != 0: output.touchMinor = touchMinor * touch.size.scale + touch.size.bias Else output.touchMinor = 0 End If If toolMajor != 0: output.toolMajor = toolMajor * touch.size.scale + touch.size.bias Else output.toolMajor = 0 End If If toolMinor != 0: output.toolMinor = toolMinor * touch.size.scale + touch.size.bias Else output.toolMinor = 0 End If output.size = size
दबाव क्षेत्र
pressure
क्षेत्र स्पर्श उपकरण पर लागू अनुमानित भौतिक दबाव को 0.0 (कोई स्पर्श नहीं) और 1.0 (सामान्य दबाव) के बीच सामान्यीकृत मान के रूप में वर्णित करता है।
शून्य दबाव इंगित करता है कि उपकरण मँडरा रहा है।
स्पर्श.दबाव.अंशांकन
परिभाषा: touch.pressure.calibration
= none
| physical
| amplitude
| default
दबाव की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप के प्रकार को निर्दिष्ट करता है।
यदि मान
none
है, तो दबाव अज्ञात है इसलिए इसे छूने पर 1.0 और मँडराने पर 0.0 पर सेट किया जाता है।यदि मान
physical
है, तो दबाव अक्ष को टच पैड पर लागू दबाव की वास्तविक भौतिक तीव्रता को मापने के लिए माना जाता है।यदि मान
amplitude
है, तो दबाव अक्ष को सिग्नल आयाम मापने के लिए माना जाता है, जो संपर्क के आकार और लागू दबाव से संबंधित है।यदि मान
default
है, तो दबाव अक्ष उपलब्ध होने पर सिस्टमphysical
अंशांकन का उपयोग करता है, अन्यथाnone
उपयोग करता है।
स्पर्श.दबाव.पैमाना
परिभाषा: touch.pressure.scale
= <एक गैर-नकारात्मक फ़्लोटिंग पॉइंट संख्या>
अंशांकन में उपयोग किए जाने वाले निरंतर पैमाने के कारक को निर्दिष्ट करता है।
डिफ़ॉल्ट मान 1.0 / raw.pressure.max
है।
गणना
pressure
क्षेत्र की गणना निर्दिष्ट अंशांकन मापदंडों पर निर्भर करती है।
If touch.pressure.calibration == "physical" or "amplitude": output.pressure = raw.pressure * touch.pressure.scale Else If hovering: output.pressure = 0 Else output.pressure = 1 End If End If
अभिविन्यास और झुकाव क्षेत्र
orientation
फ़ील्ड कोणीय माप के रूप में स्पर्श और उपकरण के अभिविन्यास का वर्णन करता है। 0
का एक अभिविन्यास इंगित करता है कि प्रमुख अक्ष लंबवत रूप से उन्मुख है, -PI/2
इंगित करता है कि प्रमुख अक्ष बाईं ओर उन्मुख है, PI/2
इंगित करता है कि प्रमुख अक्ष दाईं ओर उन्मुख है। जब एक स्टाइलस टूल मौजूद होता है, तो ओरिएंटेशन रेंज को -PI
या PI
से एक पूर्ण सर्कल रेंज में वर्णित किया जा सकता है।
tilt
फ़ील्ड एक कोणीय माप के रूप में उपकरण के झुकाव का वर्णन करता है। 0
का एक झुकाव इंगित करता है कि उपकरण सतह के लंबवत है। PI/2
का एक झुकाव इंगित करता है कि उपकरण सतह पर सपाट है।
touch.orientation.calibration
परिभाषा: touch.orientation.calibration
= none
| interpolated
| vector
| default
अभिविन्यास की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप को निर्दिष्ट करता है।
- यदि मान
none
है, तो अभिविन्यास अज्ञात है इसलिए यह 0 पर सेट है। - यदि मान को
interpolated
है, तो अभिविन्यास को रैखिक रूप से प्रक्षेपित किया जाता है किraw.orientation.min
का एक कच्चा मान-PI/2
तक मैप करता है औरraw.orientation.max
का एक कच्चा मानPI/2
तक मैप करता है। केंद्र मान(raw.orientation.min + raw.orientation.max) / 2
मानचित्र0
से। - यदि मान
vector
है, तो अभिविन्यास को दो हस्ताक्षरित 4-बिट फ़ील्ड के पैक वेक्टर सहमति के रूप में व्याख्या की जाती है। इस प्रतिनिधित्व का उपयोग Atmel ऑब्जेक्ट आधारित प्रोटोकॉल भागों पर किया जाता है। जब डिकोड किया जाता है, तो वेक्टर एक अभिविन्यास कोण और आत्मविश्वास परिमाण प्राप्त करता है। आत्मविश्वास परिमाण का उपयोग आकार की जानकारी को स्केल करने के लिए किया जाता है, जब तक कि यह ज्यामितीय न हो। - यदि मान
default
है, तो सिस्टमinterpolated
अंशांकन का उपयोग करता है यदि अभिविन्यास अक्ष उपलब्ध है, तो अन्यथाnone
करता है।
गणना
orientation
और tilt
फ़ील्ड की गणना निर्दिष्ट अंशांकन मापदंडों और उपलब्ध इनपुट पर निर्भर करती है।
If touch.tiltX and touch.tiltY are available: tiltXCenter = average(raw.tiltX.min, raw.tiltX.max) tiltYCenter = average(raw.tiltY.min, raw.tiltY.max) tiltXAngle = (raw.tiltX - tiltXCenter) * PI / 180 tiltYAngle = (raw.tiltY - tiltYCenter) * PI / 180 output.orientation = atan2(-sin(tiltXAngle), sinf(tiltYAngle)) output.tilt = acos(cos(tiltXAngle) * cos(tiltYAngle)) Else If touch.orientation.calibration == "interpolated": center = average(raw.orientation.min, raw.orientation.max) output.orientation = PI / (raw.orientation.max - raw.orientation.min) output.tilt = 0 Else If touch.orientation.calibration == "vector": c1 = (raw.orientation & 0xF0) >> 4 c2 = raw.orientation & 0x0F If c1 != 0 or c2 != 0: If c1 >= 8 Then c1 = c1 - 16 If c2 >= 8 Then c2 = c2 - 16 angle = atan2(c1, c2) / 2 confidence = sqrt(c1*c1 + c2*c2) output.orientation = angle If touch.size.calibration == "diameter" or "area": scale = 1.0 + confidence / 16 output.touchMajor *= scale output.touchMinor /= scale output.toolMajor *= scale output.toolMinor /= scale End If Else output.orientation = 0 End If output.tilt = 0 Else output.orientation = 0 output.tilt = 0 End If If orientation aware: If screen rotation is 90 degrees: output.orientation = output.orientation - PI / 2 Else If screen rotation is 270 degrees: output.orientation = output.orientation + PI / 2 End If End If
दूरस्थ क्षेत्र
distance
क्षेत्र उपकरण और टच डिवाइस की सतह के बीच की दूरी का वर्णन करता है। 0.0 का मान प्रत्यक्ष संपर्क को इंगित करता है और बड़े मान सतह से बढ़ती दूरी का संकेत देते हैं।
touch.distance.calibration
परिभाषा: touch.distance.calibration
= none
| scaled
| default
दूरी की रिपोर्ट करने के लिए टच ड्राइवर द्वारा उपयोग किए जाने वाले माप को निर्दिष्ट करता है।
यदि मान
none
है, तो दूरी अज्ञात है इसलिए यह 0 पर सेट है।यदि मान को
scaled
है, तो रिपोर्ट की गई दूरी एक निरंतर पैमाने के कारक से गुणा की जाती है।यदि मान
default
है, तो सिस्टमscaled
अंशांकन का उपयोग करता है यदि दूरी अक्ष उपलब्ध है, तो अन्यथाnone
करता है।
touch.distance.scale
परिभाषा: touch.distance.scale
= <a गैर-नकारात्मक फ़्लोटिंग पॉइंट नंबर>
अंशांकन में उपयोग किए जाने वाले एक निरंतर पैमाने का कारक निर्दिष्ट करता है।
डिफ़ॉल्ट मान 1.0
है.
गणना
distance
क्षेत्र की गणना निर्दिष्ट अंशांकन मापदंडों पर निर्भर करती है।
If touch.distance.calibration == "scaled": output.distance = raw.distance * touch.distance.scale Else output.distance = 0 End If
उदाहरण
# Input device configuration file for a touch screen that supports pressure, # size and orientation. The pressure and size scale factors were obtained # by measuring the characteristics of the device itself and deriving # useful approximations based on the resolution of the touch sensor and the # display. # # Note that these parameters are specific to a particular device model. # Different parameters need to be used for other devices. # Basic Parameters touch.deviceType = touchScreen touch.orientationAware = 1 # Size # Based on empirical measurements, we estimate the size of the contact # using size = sqrt(area) * 28 + 0. touch.size.calibration = area touch.size.scale = 28 touch.size.bias = 0 touch.size.isSummed = 0 # Pressure # Driver reports signal strength as pressure. # # A normal index finger touch typically registers about 80 signal strength # units although we don't expect these values to be accurate. touch.pressure.calibration = amplitude touch.pressure.scale = 0.0125 # Orientation touch.orientation.calibration = vector
अनुकूलता नोट्स
टच उपकरणों के लिए कॉन्फ़िगरेशन गुण एंड्रॉइड आइसक्रीम सैंडविच 4.0 में काफी बदल गए। टच डिवाइस के लिए सभी इनपुट डिवाइस कॉन्फ़िगरेशन फ़ाइलों को नए कॉन्फ़िगरेशन गुणों का उपयोग करने के लिए अपडेट किया जाना चाहिए।
पुराने टच डिवाइस ड्राइवरों को भी अपडेट करने की आवश्यकता हो सकती है।
वर्चुअल कुंजी मैप फाइलें
वर्चुअल कुंजियों को लागू करने के लिए टच डिवाइस का उपयोग किया जा सकता है।
टच कंट्रोलर की क्षमताओं के आधार पर ऐसा करने के कई तरीके हैं। कुछ टच कंट्रोलर्स को फर्मवेयर रजिस्टर सेट करके सॉफ्ट कीज़ को लागू करने के लिए सीधे कॉन्फ़िगर किया जा सकता है। अन्य बार सॉफ्टवेयर में प्रमुख कोड तक टच निर्देशांक से मैपिंग करना वांछनीय है।
जब सॉफ़्टवेयर में वर्चुअल कुंजियाँ लागू की जाती हैं, तो कर्नेल को वर्चुअल की मैप फ़ाइल को virtualkeys.<devicename>
उदाहरण के लिए, यदि टच स्क्रीन डिवाइस ड्राइवर "टचफेली" के रूप में इसके नाम की रिपोर्ट करते हैं, तो वर्चुअल की मैप फ़ाइल में पथ /sys/board_properties/virtualkeys.touchyfeely
board_properties/virtualkeys.touchyfeely होना चाहिए।
एक वर्चुअल कुंजी मैप फ़ाइल टच स्क्रीन पर वर्चुअल कुंजियों के निर्देशांक और लिनक्स कुंजी कोड का वर्णन करती है।
वर्चुअल कुंजी मैप फ़ाइल के अलावा, एंड्रॉइड कुंजी कोड के लिए लिनक्स कुंजी कोड को मैप करने और कीबोर्ड डिवाइस के प्रकार (आमतौर पर SPECIAL_FUNCTION
) को निर्दिष्ट करने के लिए एक संबंधित कुंजी लेआउट फ़ाइल और कुंजी वर्ण मैप फ़ाइल होनी चाहिए।
वाक्य - विन्यास
एक वर्चुअल कुंजी मैप फ़ाइल एक सादा पाठ फ़ाइल है जिसमें वर्चुअल कुंजी लेआउट विवरणों का अनुक्रम होता है, या तो न्यूलाइन या कॉलन द्वारा अलग किया जाता है।
टिप्पणी लाइनें '#' से शुरू होती हैं और लाइन के अंत तक जारी रहती हैं।
प्रत्येक वर्चुअल कुंजी को 6 बृहदान्त्र-विमोचन घटकों द्वारा वर्णित किया गया है:
-
0x01
: एक संस्करण कोड। हमेशा0x01
होना चाहिए। - <लिनक्स कुंजी कोड>: वर्चुअल कुंजी का लिनक्स कुंजी कोड।
- <सेंटरएक्स>: एक्स पिक्सेल वर्चुअल कुंजी के केंद्र का समन्वय करता है।
- <सेंटर>: वाई पिक्सेल वर्चुअल कुंजी के केंद्र का समन्वय करता है।
- <चौड़ाई>: पिक्सेल में वर्चुअल कुंजी की चौड़ाई।
- <ऊंचाई>: पिक्सेल में वर्चुअल कुंजी की ऊंचाई।
सभी निर्देशांक और आकार प्रदर्शन समन्वय प्रणाली के संदर्भ में निर्दिष्ट किए गए हैं।
यहाँ एक वर्चुअल की मैप फ़ाइल है जो एक पंक्ति पर लिखी गई है।
# All on one line 0x01:158:55:835:90:55:0x01:139:172:835:125:55:0x01:102:298:835:115:55:0x01:217:412:835:95:55
एक ही वर्चुअल कुंजी मैप फ़ाइल को कई लाइनों पर भी लिखा जा सकता है।
# One key per line 0x01:158:55:835:90:55 0x01:139:172:835:125:55 0x01:102:298:835:115:55 0x01:217:412:835:95:55
उपरोक्त उदाहरण में, टच स्क्रीन में 480x800 का रिज़ॉल्यूशन है। तदनुसार, सभी वर्चुअल कुंजियों में 835 का एक <सेंटर> समन्वय होता है, जो टच स्क्रीन के दृश्यमान क्षेत्र से थोड़ा नीचे है।
पहली कुंजी में 158
का लिनक्स स्कैन कोड ( KEY_BACK
), 55
का केंद्र, 835
का केंद्र, 90
की चौड़ाई और 55
की ऊंचाई है।
उदाहरण
वर्चुअल कुंजी मैप फ़ाइल: /sys/board_properties/virtualkeys.touchyfeely
।
0x01:158:55:835:90:55 0x01:139:172:835:125:55 0x01:102:298:835:115:55 0x01:217:412:835:95:55
कुंजी लेआउट फ़ाइल: /system/usr/keylayout/touchyfeely.kl
/touchyfeely.kl।
key 158 BACK key 139 MENU key 172 HOME key 217 SEARCH
मुख्य चरित्र मानचित्र फ़ाइल: /system/usr/keychars/touchyfeely.kcm
keychars/touchyfeely.kcm।
type SPECIAL_FUNCTION
अप्रत्यक्ष बहु-टच पॉइंटर इशारों
पॉइंटर मोड में, सिस्टम निम्नलिखित इशारों की व्याख्या करता है:
- सिंगल फिंगर टैप: क्लिक करें।
- सिंगल फिंगर मोशन: पॉइंटर को स्थानांतरित करें।
- सिंगल फिंगर मोशन प्लस बटन प्रेस: पॉइंटर को खींचें।
- दो उंगली गति दोनों उंगलियां एक ही दिशा में चलती हैं: उस दिशा में सूचक के नीचे क्षेत्र को खींचें। सूचक अपने आप नहीं चलता है।
- दो उंगली गति दोनों उंगलियां एक दूसरे की ओर बढ़ रही हैं या अलग -अलग दिशाओं में अलग हैं: पैन/स्केल/पॉइंटर के आसपास के क्षेत्र को घुमाएं। सूचक अपने आप नहीं चलता है।
- मल्टीपल फिंगर मोशन: फ्रीफॉर्म जेस्चर।
हथेली अस्वीकृति
एंड्रॉइड 13 के रूप में, सिस्टम स्वचालित रूप से हथेलियों से इनपुट को अस्वीकार कर सकता है जब अंतर्निहित फ्रेमवर्क सक्षम होता है। इन-हाउस, कस्टम-निर्मित समाधान अभी भी समर्थित हैं, हालांकि हथेली का पता चलने पर उन्हें TOOL_TYPE_PALM
ध्वज को वापस करने के लिए संशोधित करने की आवश्यकता हो सकती है। अंतर्निहित फ्रेमवर्क भी कस्टम समाधानों के साथ मिलकर काम करता है।
वास्तविक मॉडल जेस्चर डेटा के पहले 90 एमएस को वर्तमान पॉइंटर पर, और आसपास के पॉइंटर्स पर देखता है, फिर मानता है कि डिस्प्ले एज से कितनी दूर टच हैं। यह तब निर्धारित करता है, प्रति-पॉइंटर आधार पर, कौन से संकेत हथेलियों हैं। यह प्रत्येक संपर्क के आकार को भी ध्यान में रखता है, जैसा कि touchMajor
और touchMinor
द्वारा रिपोर्ट किया गया है। एंड्रॉइड फ्रेमवर्क तब उन बिंदुओं को हटा देता है जो टच स्ट्रीम से हथेलियों के रूप में चिह्नित होते हैं।
यदि कोई पॉइंटर पहले से ही ऐप्स में भेजा गया था, तो सिस्टम या तो:
- (यदि अन्य सक्रिय पॉइंटर्स हैं)
ACTION_POINTER_UP
औरFLAG_CANCELED
सेट के साथ पॉइंटर को रद्द कर देता है। - (यदि यह एकमात्र सूचक है)
ACTION_CANCEL
के साथ सूचक को रद्द कर देता है।
एक सार्वजनिक एपीआई, MotionEvent.FLAG_CANCELED
, इंगित करता है कि वर्तमान घटना को उपयोगकर्ता कार्रवाई को ट्रिगर नहीं करना चाहिए। यह ध्वज ACTION_CANCEL
और ACTION_POINTER_UP
दोनों के लिए सेट किया गया है।
यदि पाम पॉइंटर को ऐप्स में नहीं भेजा गया था, तो सिस्टम बस पॉइंटर को छोड़ देता है।
हथेली अस्वीकृति सक्षम करें
- अपने टच ड्राइवर में, निम्नलिखित फ़ील्ड के लिए रिज़ॉल्यूशन सेट करने के लिए
input_abs_set_res
मैक्रो का उपयोग करें (इकाइयां प्रति मिमी पिक्सेल हैं):-
ABS_MT_POSITION_X
-
ABS_MT_POSITION_Y
-
ABS_MT_TOUCH_MAJOR
-
ABS_MT_TOUCH_MINOR
ABS_MT_TOUCH_MINOR
के लिए समर्थन वैकल्पिक है। हालाँकि, यदि आपका डिवाइस इसका समर्थन करता है, तो सुनिश्चित करें कि रिज़ॉल्यूशन सही तरीके से सेट है। -
- फ़ील्ड को सही तरीके से सेट करने की पुष्टि करने के लिए, चलाएं:
$ adb shell getevent -li
- रनटाइम के दौरान फीचर को सक्षम करने के लिए, रन:
$ adb shell device_config put input_native_boot palm_rejection_enabled 1
-
system_server
प्रक्रिया को पुनरारंभ करें।$ adb shell stop && adb shell start
- पुष्टि करें कि
adb shell dumpsys input
पता चलता है किUnwantedInteractionBlocker
के अंदर ताड़ के अस्वीकरण हैं। यदि ऐसा नहीं होता है, तो क्या गलत हो सकता है, इस पर सुराग खोजने के लिए इनपुट-संबंधित लॉग की जांच करें।संदर्भ के लिए निम्नलिखित उदाहरण देखें:
UnwantedInteractionBlocker: mEnablePalmRejection: true isPalmRejectionEnabled (flag value): true mPalmRejectors: deviceId = 3: mDeviceInfo: max_x =
max_y = x_res = 11.00 y_res = 11.00 major_radius_res = 1.00 minor_radius_res = 1.00 minor_radius_supported = true touch_major_res = 1 touch_minor_res = 1 mSlotState: mSlotsByPointerId: mPointerIdsBySlot: mSuppressedPointerIds: {} - सुविधा को स्थायी रूप से सक्षम करने के लिए, अपने
init**rc
फ़ाइल में संबंधित Sysprop कमांड जोड़ें:setprop persist.device_config.input_native_boot.palm_rejection_enabled 1