इवेंट में हैप्टिक फ़ीडबैक जोड़ें

View कॉम्पोनेंट, पहले से तय किए गए VibrationEffect API, और VibrationEffect.Builder के साथ टाइमलाइन ऐंकर की गई कंपोज़िशन का इस्तेमाल करके, Android ऐप्लिकेशन में हैप्टिक फ़ीडबैक लागू करें. keywords_public: > Android डेवलपमेंट, हैप्टिक, हैप्टिक फ़ीडबैक, यूज़र इंटरफ़ेस (यूआई), व्यू, VibrationEffect, View.performHapticFeedback, Vibrator, हैप्टिक कॉन्स्टेंट

हैप्टिक फ़ीडबैक का सबसे बुनियादी इस्तेमाल, उपयोगकर्ता के इंटरैक्शन पर फ़ीडबैक देना है. हैप्टिक फ़ीडबैक के इस्तेमाल के कुछ सामान्य उदाहरणों में, टाइम पिकर, वर्चुअल कीबोर्ड पर बटन दबाना, और टेक्स्ट चुनना शामिल है. हैप्टिक कब और कैसे लागू करें, इस बारे में ज़्यादा जानने के लिए, हैप्टिक डिज़ाइन के सिद्धांत पढ़ें.

इस पेज पर, हैप्टिक फ़ीडबैक देने के तीन तरीके बताए गए हैं.

ये तरीके, डिवाइस लेवल पर तय की गई प्रिमिटिव का इस्तेमाल करते हैं. इससे, हाथ में मौजूद डिवाइस के हिसाब से अच्छी क्वालिटी वाला फ़ीडबैक मिलता है.

हैप्टिक फ़ीडबैक देने के सभी तरीके, डिफ़ॉल्ट रूप से उपयोगकर्ता की टच फ़ीडबैक सेटिंग का पालन करते हैं.

हैप्टिक फ़ीडबैक जनरेट करने के लिए, View कॉम्पोनेंट का इस्तेमाल करना

हैप्टिक फ़ीडबैक जनरेट करने के लिए, View.performHapticFeedback तरीके का इस्तेमाल करें. HapticFeedbackConstants से तय किए गए हैप्टिक कॉन्स्टेंट, हैप्टिक इफ़ेक्ट के टाइप पर नहीं, बल्कि ऐप्लिकेशन में उनके फ़ंक्शन पर फ़ोकस करते हैं.

डिवाइस और हार्डवेयर की क्षमताओं के आधार पर, इसे लागू करने का तरीका अलग-अलग हो सकता है. हालांकि, ऐप्लिकेशन को सिर्फ़ यह देखना होता है कि किसी खास संदर्भ में किस तरह का सुझाव देना है. फ़ंक्शन पर फ़ोकस करके, मिलते-जुलते इंटरैक्शन के लिए हैप्टिक फ़ीडबैक की सुविधा चालू की जा सकती है. समय के साथ, उपयोगकर्ता अलग-अलग हैप्टिक सेंसेशन को अलग-अलग मतलबों से जोड़ना सीख जाते हैं.

ज़रूरी शर्तें: हैप्टिक फ़ीडबैक की सुविधा चालू करें

जब तक View दिखता है, तब तक इसके इवेंट के लिए हैप्टिक फ़ीडबैक का इस्तेमाल किया जा सकता है. कुछ इवेंट, जैसे कि टच करके दबाए रखना, में डिफ़ॉल्ट हैप्टिक होते हैं. ये तब ट्रिगर होते हैं, जब व्यू पर मौजूद कोई लिसनर इवेंट को हैंडल करता है (true दिखाता है).

Android View, हैप्टिक फ़ीडबैक की सुविधा बंद कर सकता है. इसके लिए, View.hapticFeedbackEnabled प्रॉपर्टी को false पर सेट करें. इस प्रॉपर्टी को बंद करने पर, डिफ़ॉल्ट सुझाव दिखते हैं.

performHapticFeedback तरीका, सिस्टम सेटिंग HAPTIC_FEEDBACK_ENABLED का भी पालन करता है. इससे उपयोगकर्ता, पूरे सिस्टम के लिए इन्हें बंद कर सकता है.

अन्य हैप्टिक एपीआई के उलट, View के साथ HapticFeedbackConstants का इस्तेमाल करने के लिए, VIBRATE अनुमति की ज़रूरत नहीं होती.

कोई HapticFeedbackConstant चुनें

HapticFeedbackConstants के साथ View कॉम्पोनेंट का इस्तेमाल करते समय, किसी डिवाइस के साथ काम करने की सुविधा का आकलन करने की ज़रूरत नहीं होती. ऐसा इसलिए, क्योंकि अगर ज़रूरी हो, तो इन कॉन्स्टेंट के लिए फ़ॉलबैक व्यवहार उपलब्ध होगा. सिर्फ़ यह देखा जाता है कि आपको जिस कॉन्स्टेंट की ज़रूरत है उसका एसडीके लेवल क्या है.

उदाहरण 1: कीबोर्ड का बटन दबाना

यहां एक उदाहरण दिया गया है, जिसमें टच लिसनर का इस्तेमाल करके 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
  }
}

Java

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)
  }
}

Java

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

हैप्टिक फ़ीडबैक जनरेट करने के लिए, पहले से तय किए गए VibrationEffect का इस्तेमाल करना

View पर आधारित अप्रोच का इस्तेमाल करने से, उपयोगकर्ता के इंटरैक्शन पर फ़ोकस किया जाता है. इसलिए, सिस्टम में एक जैसा अनुभव देने के लिए, इसका इस्तेमाल करें. हालांकि, आपके पास पहले से तय किए गए VibrationEffect एपीआई को लागू करने का विकल्प भी होता है. इससे आपको पसंद के मुताबिक हैप्टिक फ़ीडबैक इफ़ेक्ट मिलते हैं.

पहले से तय किए गए इफ़ेक्ट, VibrationEffect कॉन्स्टेंट के तौर पर उपलब्ध होते हैं. साथ ही, यह देखा जा सकता है कि ये इफ़ेक्ट Vibrator सेवा के साथ काम करते हैं या नहीं. इसके अलावा, इन्हें इस सेवा के साथ चलाया भी जा सकता है. इस बारे में यहां दिए गए उदाहरणों में बताया गया है.

VibrationEffect एपीआई के साथ काम करने वाले डिवाइसों के बारे में जानकारी

सामान्य इस्तेमाल के दौरान, अलग-अलग VibrationEffect एपीआई के साथ काम करने की सुविधा की जांच करने की ज़रूरत नहीं होनी चाहिए. Vibrator.areEffectsSupported और Vibrator.areAllEffectsSupported जैसे एपीआई का इस्तेमाल यह पता लगाने के लिए किया जाता है कि डिवाइस में कॉन्स्टेंट को कस्टम तरीके से लागू किया गया है या नहीं. अगर कोई कस्टम इफ़ेक्ट मौजूद नहीं है, तो भी आपका ऐप्लिकेशन इफ़ेक्ट चला सकता है. साथ ही, प्लैटफ़ॉर्म पर तय किए गए फ़ॉलबैक को लागू कर सकता है.

ज़्यादा जानकारी के लिए, पहले से तय किए गए VibrationEffect देखें.

ज़रूरी शर्तें: वाइब्रेटर और VIBRATE अनुमति को लोड करें

ज़्यादातर वाइब्रेशन, Vibrator सेवा के साथ चलाए जा सकते हैं. इसे इस तरह लोड किया जा सकता है:

Kotlin

import android.os.Vibrator

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

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))

Java

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 की मदद से हैप्टिक इफ़ेक्ट बनाने के बारे में ज़्यादा जानकारी, कस्टम हैप्टिक इफ़ेक्ट बनाना लेख में दी गई है.