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

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

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

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

ये तरीके, डिवाइस के लेवल पर तय किए गए प्राइमिटिव का इस्तेमाल करके, डिवाइस के हिसाब से अच्छी क्वालिटी का सुझाव देते हैं.

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

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

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

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

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

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

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

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

अन्य हैप्टिक एपीआई के उलट, 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
  }
}

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.Composition एपीआई, वाइब्रेशन के ज़रिए मिलने वाले फ़ीडबैक के लिए और भी विकल्प उपलब्ध कराता है. हालांकि, इफ़ेक्ट के उलट, इन प्राइमिटिव में सिस्टम-लेवल फ़ॉलबैक नहीं होते. इसका मतलब है कि डिवाइस पर काम करने वाले प्राइमिटिव और अन्य सुविधाओं पर ध्यान देने की ज़रूरत है.

इन एपीआई के इस्तेमाल के बारे में ज़्यादा जानकारी के लिए, कस्टम हैप्टिक इफ़ेक्ट बनाना लेख पढ़ें.