ইভেন্টে হ্যাপটিক ফিডব্যাক যোগ করা

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

হ্যাপ্টিক ফিডব্যাক প্রদান করার তিনটি পদ্ধতি এই পৃষ্ঠায় বর্ণনা করা হয়েছে।

এইসব পদ্ধতি, হাতে থাকা ডিভাইসের জন্য উপযুক্ত খুব ভালো কোয়ালিটির ফিডব্যাক প্রদান করতে, ডিভাইস লেভেলে সংজ্ঞায়িত আদিম বিষয় ব্যবহার করে।

ডিফল্ট হিসেবে, সব হ্যাপ্টিক ফিডব্যাক পদ্ধতি ব্যবহারকারীর টাচ ফিডব্যাক সেটিংস মেনে চলে।

হ্যাপটিক ফিডব্যাক তৈরি করতে View কম্পোনেন্ট ব্যবহার করুন

হ্যাপটিক ফিডব্যাক তৈরি করতে View.performHapticFeedback পদ্ধতি ব্যবহার করুন। HapticFeedbackConstants-এর দ্বারা নির্ধারিত হ্যাপটিক কনস্ট্যান্টগুলি কোনও অ্যাপ্লিকেশনে তাদের কার্যকারিতার উপর ফোকাস করে, পারফর্ম করা হ্যাপটিক এফেক্টের ধরনের উপর নয়।

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

পূর্বশর্ত: হ্যাপটিক ফিডব্যাক চালু করতে হবে

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

Android View হ্যাপ্টিক ফিডব্যাক বন্ধ করতে পারে, এর জন্য View.hapticFeedbackEnabled প্রপার্টিকে false হিসেবে সেট করতে হবে। এই প্রপার্টি বন্ধ করে দিলে ডিফল্ট মতামত দেখানো হবে।

এছাড়াও, performHapticFeedback পদ্ধতিতে সিস্টেম সেটিং HAPTIC_FEEDBACK_ENABLED মেনে চলা হয়, যা ব্যবহারকারীকে সম্ভাব্যভাবে পুরো সিস্টেমের জন্য সেগুলি বন্ধ করে দিতে দেয়।

অন্যান্য হ্যাপ্টিক API-এর মতো, View-এর সাথে HapticFeedbackConstants ব্যবহার করার জন্য VIBRATE অনুমতি প্রয়োজন হয় না।

HapticFeedbackConstant বেছে নিন

HapticFeedbackConstants-এর সাথে View কম্পোনেন্ট ব্যবহার করার সময়, নির্দিষ্ট ডিভাইসে কাজ করে কিনা তা মূল্যায়ন করার প্রয়োজন নেই, কারণ প্রয়োজনে এইসব কনস্ট্যান্টের ফলব্যাক বিহেভিয়ার থাকবে। শুধুমাত্র কাঙ্ক্ষিত কনস্ট্যান্টের SDK লেভেল বিবেচনা করা হয়।

উদাহরণ ১: কীপ্রেস

View টাচ লিসনার ব্যবহার করে টাচ ইনপুটে কীভাবে হ্যাপ্টিক ফিডব্যাক যোগ করতে হয় তার একটি উদাহরণ এখানে দেওয়া হল। বোতামে প্রেস করে ছেড়ে দেওয়ার অনুভূতি এফেক্টের মাধ্যমে সিমুলেট করা হয়।

Kotlin

class HapticTouchListener : View.OnTouchListener {
  override fun onTouch(View view, MotionEvent event) : Boolean {
    when (event.actionMasked) {
      MotionEvent.ACTION_DOWN ->
        view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY)
      MotionEvent.ACTION_UP ->
        view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE)
    }
    return true
  }
}

জাভা

class HapticTouchListener implements View.OnTouchListener {
  @Override
  public boolean onTouch(View view, MotionEvent event) {
    switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:
        view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
        break;
      case MotionEvent.ACTION_UP:
        view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE);
        break;
    }
    return true;
  }
}

উদাহরণ ২: জমা দেওয়ার বোতাম

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

Kotlin

submitButton.setOnClickListener { view ->
  val successful = performSubmit()
  if (successful) {
    view.performHapticFeedback(HapticFeedbackConstants.CONFIRM)
  } else {
    view.performHapticFeedback(HapticFeedbackConstants.REJECT)
  }
}

জাভা

submitButton.setOnClickListener(view -> {
  boolean successful = performSubmit();
  if (successful) {
    view.performHapticFeedback(HapticFeedbackConstants.CONFIRM);
  } else {
    view.performHapticFeedback(HapticFeedbackConstants.REJECT);
  }
});

হ্যাপ্টিক ফিডব্যাক জেনারেট করতে আগে থেকে নির্দিষ্ট করা VibrationEffect ব্যবহার করুন

View-ভিত্তিক অ্যাপ্রোচ ব্যবহার করলে ব্যবহারকারীর ইন্টার‍্যাকশনের উপর ফোকাস করা হয়, তাই সিস্টেম জুড়ে ধারাবাহিকতা বজায় রাখতে এটি ব্যবহার করুন। তবে, আপনি কাস্টমাইজ করা হ্যাপ্টিক ফিডব্যাক এফেক্টের জন্য নির্দিষ্ট পূর্বনির্ধারিত VibrationEffect API-ও ইনভোক করতে পারবেন।

আগে থেকে সংজ্ঞায়িত এফেক্ট VibrationEffect ধ্রুবক হিসেবে উপলভ্য এবং নিচের উদাহরণে দেখানো Vibrator পরিষেবার সাথে কাজ করে কিনা তা চেক করা এবং চালানো যেতে পারে।

VibrationEffect API-এর ডিভাইস সাপোর্ট সম্পর্কে বোঝা

সাধারণ ব্যবহারের ক্ষেত্রে, আলাদা আলাদা VibrationEffect API কাজ করে কিনা তা চেক করার প্রয়োজন নেই। ডিভাইসে কনস্ট্যান্টের কাস্টমাইজ করা প্রয়োগ আছে কিনা তা নির্ধারণ করতে Vibrator.areEffectsSupported ও Vibrator.areAllEffectsSupported-এর মতো API ব্যবহার করা হয়। কাস্টমাইজ করা এফেক্ট না থাকলে, আপনার অ্যাপ এখনও এফেক্ট চালাতে এবং প্ল্যাটফর্ম-সংজ্ঞায়িত ফলব্যাক প্রয়োগ করতে পারে।

আরও বিবরণের জন্য, পূর্বনির্ধারিত VibrationEffect দেখুন।

পূর্বশর্ত: ভাইব্রেটর ও VIBRATE অনুমতি লোড করুন

বেশিরভাগ ভাইব্রেশন Vibrator পরিষেবার মাধ্যমে চালানো যায়, যা নিচে উল্লেখ করা পদ্ধতি অনুসরণ করে লোড করা যায়:

Kotlin

import android.os.Vibrator

val vibrator = context.getSystemService(Vibrator::class.java)

জাভা

import android.os.Vibrator;

Vibrator vibrator = context.getSystemService(Vibrator.class);

এই পরিষেবা ব্যবহার করে ডিভাইস ভাইব্রেট করার জন্য আপনার অ্যাপের কাছে অবশ্যই VIBRATE অনুমতি থাকতে হবে । আপনি অ্যাপ্লিকেশন ম্যানিফেস্ট ফাইলে এই অনুমতি যোগ করতে পারেন:

<uses-permission android:name="android.permission.VIBRATE"/>

পূর্বনির্ধারিত VibrationEffect চালান

VibrationEffect.createPredefined ব্যবহার করে আগে থেকে নির্ধারণ করা এফেক্ট তৈরি করা যায়, তারপর Vibrator-এ vibrate পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে চালানো যায়।

এই উদাহরণে একটি ক্লিক এফেক্ট চালানো হয়।

Kotlin

val vibrator = context.getSystemService(Vibrator::class.java)
...
// Requires VIBRATE permission
vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))

জাভা

Vibrator vibrator = context.getSystemService(Vibrator.class);
...
// Requires VIBRATE permission
vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));

কম্পোজিশন তৈরি করতে VibrationEffect.Builder ব্যবহার করুন

Android 16 (26Q4) থেকে শুরু করে, VibrationEffect.Builder API, টাইমলাইন বরাবর আলাদা প্রিসেট, এনভেলপ ও অন্যান্য ভাইব্রেশন এলিমেন্ট সিকোয়েন্স করে কাস্টম হ্যাপ্টিক ফিডব্যাক তৈরি করার সবচেয়ে ফ্লেক্সিবল ও এক্সপ্রেসিভ উপায় অফার করে। এছাড়াও, VibrationEffect.Builder-এর সাহায্যে তৈরি কম্পোজিশনে এর কাজ করে এমন এলিমেন্ট জুড়ে অটোমেটিক ফলব্যাক সাপোর্ট থাকে।

VibrationEffect.Builder (এবং VibrationEffect.Composition API) ব্যবহার করে হ্যাপ্টিক এফেক্ট কম্পোজ করা সম্পর্কে কাস্টম হ্যাপ্টিক এফেক্ট তৈরি করা নিবন্ধে আরও বিস্তারিত আলোচনা করা হয়েছে।