লেখনী পাম স্পর্শ প্রত্যাখ্যান

যখন ব্যবহারকারীরা একটি স্টাইলাস ব্যবহার করে একটি অ্যাপের সাথে আঁকেন, লেখেন বা ইন্টারঅ্যাক্ট করেন, তখন তারা মাঝে মাঝে তাদের হাতের তালু দিয়ে স্ক্রীন স্পর্শ করে। সিস্টেমটি দুর্ঘটনাজনিত পাম স্পর্শ হিসাবে ইভেন্টটিকে স্বীকৃতি এবং খারিজ করার আগে স্পর্শ ইভেন্টটি আপনার অ্যাপে রিপোর্ট করা হতে পারে।

তালুর স্পর্শ সনাক্ত করুন এবং উপেক্ষা করুন

আপনার অ্যাপটিকে অবশ্যই বহিরাগত স্পর্শ ইভেন্টগুলি সনাক্ত করতে হবে এবং সেগুলি উপেক্ষা করতে হবে৷ Android আপনার অ্যাপে একটি MotionEvent অবজেক্ট পাঠানোর মাধ্যমে একটি পাম টাচ বাতিল করে।

  • আপনার অ্যাপে পাঠানো MotionEvent অবজেক্ট পরীক্ষা করুন। ইভেন্ট বৈশিষ্ট্য (ক্রিয়া এবং পতাকা) নির্ধারণ করতে MotionEvent API ব্যবহার করুন:

    • একক-পয়েন্টার ইভেন্টACTION_CANCEL চেক করুন। Android 13 এবং উচ্চতর তে, FLAG_CANCELED এর জন্যও পরীক্ষা করুন।
    • মাল্টি-পয়েন্টার ইভেন্ট — Android 13 এবং উচ্চতর, ACTION_POINTER_UP এবং FLAG_CANCELED চেক করুন।
  • ACTION_CANCEL এবং ACTION_POINTER_UP / FLAG_CANCELED বৈশিষ্ট্য আছে এমন মোশন ইভেন্টগুলিকে উপেক্ষা করুন৷

1. গতি ঘটনা বস্তু অর্জন

আপনার অ্যাপে একটি OnTouchListener যোগ করুন:

কোটলিন

val myView = findViewById<View>(R.id.myView).apply {
    setOnTouchListener { view, event ->
        // Process motion event.
    }
}

জাভা

View myView = findViewById(R.id.myView);
myView.setOnTouchListener( (view, event) -> {
    // Process motion event.
});

2. ইভেন্ট অ্যাকশন এবং পতাকা নির্ধারণ করুন

ACTION_CANCEL পরীক্ষা করুন, যা সমস্ত API স্তরে একটি একক-পয়েন্টার ইভেন্ট নির্দেশ করে৷ Android 13 এবং পরবর্তীতে, FLAG_CANCELED. এর জন্য ACTION_POINTER_UP চেক করুন৷

কোটলিন

val myView = findViewById<View>(R.id.myView).apply {
    setOnTouchListener { view, event ->
        when (event.actionMasked) {
            MotionEvent.ACTION_CANCEL -> {
                //Process canceled single-pointer motion event for all SDK versions.
            }
            MotionEvent.ACTION_POINTER_UP -> {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
                   (event.flags and MotionEvent.FLAG_CANCELED) == MotionEvent.FLAG_CANCELED) {
                    //Process canceled multi-pointer motion event for Android 13 and higher.
                }
            }
        }
        true
    }
}

জাভা

View myView = findViewById(R.id.myView);
myView.setOnTouchListener( (view, event) -> {
    switch (event.getActionMasked()) {
        case MotionEvent.ACTION_CANCEL:
            // Process canceled single-pointer motion event for all SDK versions.
        case MotionEvent.ACTION_UP:
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
               (event.getFlags() & MotionEvent.FLAG_CANCELED) == MotionEvent.FLAG_CANCELED) {
                //Process canceled multi-pointer motion event for Android 13 and higher.
            }
    }
    return true;
});

3. অঙ্গভঙ্গি পূর্বাবস্থায় ফেরান৷

আপনি একটি পামের স্পর্শ সনাক্ত করার পরে, আপনি অঙ্গভঙ্গির অনস্ক্রিন প্রভাবগুলি পূর্বাবস্থায় ফিরিয়ে আনতে পারেন৷

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

মূল পয়েন্ট

  • MotionEvent : স্পর্শ এবং আন্দোলন ইভেন্ট প্রতিনিধিত্ব করে। একটি ইভেন্ট উপেক্ষা করা উচিত কিনা তা নির্ধারণ করার জন্য প্রয়োজনীয় তথ্য রয়েছে৷
  • OnTouchListener#onTouch() : MotionEvent অবজেক্টগুলি গ্রহণ করে।
  • MotionEvent#getActionMasked() : একটি মোশন ইভেন্টের সাথে যুক্ত ক্রিয়া দেখায়।
  • ACTION_CANCEL : MotionEvent ধ্রুবক যা ইঙ্গিত করে যে একটি অঙ্গভঙ্গি পূর্বাবস্থায় ফেরানো উচিত৷
  • ACTION_POINTER_UP : MotionEvent ধ্রুবক যা নির্দেশ করে যে প্রথম পয়েন্টার ছাড়া অন্য একটি পয়েন্টার বেড়ে গেছে (অর্থাৎ, ডিভাইস স্ক্রিনের সাথে যোগাযোগ ত্যাগ করেছে)।
  • FLAG_CANCELED : MotionEvent ধ্রুবক যা নির্দেশ করে যে পয়েন্টার উপরে যাওয়ার কারণে একটি অনিচ্ছাকৃত স্পর্শ ইভেন্ট হয়েছে। Android 13 (API স্তর 33) এবং উচ্চতর ACTION_POINTER_UP এবং ACTION_CANCEL ইভেন্টগুলিতে যোগ করা হয়েছে৷

ফলাফল

আপনার অ্যাপ এখন অ্যান্ড্রয়েড 13 এবং উচ্চতর API লেভেলে মাল্টি-পয়েন্টার ইভেন্টের জন্য এবং সমস্ত API লেভেলে একক-পয়েন্টার ইভেন্টের জন্য পাম টাচ সনাক্ত করতে এবং প্রত্যাখ্যান করতে পারে।

এই নির্দেশিকা ধারণকারী সংগ্রহ

এই নির্দেশিকাটি এই কিউরেট করা কুইক গাইড সংগ্রহের অংশ যা বৃহত্তর অ্যান্ড্রয়েড উন্নয়ন লক্ষ্যগুলি কভার করে:

ট্যাবলেট, ফোল্ডেবল এবং ChromeOS ডিভাইসে একটি অপ্টিমাইজড ব্যবহারকারীর অভিজ্ঞতা সমর্থন করতে আপনার অ্যাপ সক্ষম করুন।

প্রশ্ন বা প্রতিক্রিয়া আছে

আমাদের প্রায়শই জিজ্ঞাসিত প্রশ্ন পৃষ্ঠায় যান এবং দ্রুত গাইড সম্পর্কে জানুন বা যোগাযোগ করুন এবং আপনার চিন্তাভাবনা আমাদের জানান।