java - एक एंड्रॉइड डिवाइस कैसे कंपन करें?




android vibrate (6)

अनुदान कंपन अनुमति

किसी भी कंपन कोड को लागू करने से पहले, आपको अपने आवेदन को कंपन करने की अनुमति देना होगा:

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

इस लाइन को अपनी AndroidManifest.xml फ़ाइल में शामिल करना सुनिश्चित करें।

कंपन पुस्तकालय आयात करें

अधिकांश आईडीई आपके लिए यह करेंगे, लेकिन यदि आपका खाता नहीं है तो आयात विवरण यहां दिया गया है:

 import android.os.Vibrator;

यह सुनिश्चित करें कि आप उस गतिविधि में जहां कंपन चाहते हैं।

एक दिए गए समय के लिए कंपन कैसे करें

ज्यादातर परिस्थितियों में, आप डिवाइस को एक छोटी, पूर्व निर्धारित समय के लिए कंपन करना चाहते हैं। आप vibrate(long milliseconds) विधि का उपयोग करके इसे प्राप्त कर सकते हैं। यहां एक त्वरित उदाहरण दिया गया है:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Vibrate for 400 milliseconds
v.vibrate(400);

यह आसान है!

अनिश्चित काल तक कंपन कैसे करें

यह मामला हो सकता है कि आप डिवाइस को अनिश्चित काल तक कंपन जारी रखना चाहते हैं। इसके लिए, हम vibrate(long[] pattern, int repeat) विधि का उपयोग करें:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Start without a delay
// Vibrate for 100 milliseconds
// Sleep for 1000 milliseconds
long[] pattern = {0, 100, 1000};

// The '0' here means to repeat indefinitely
// '0' is actually the index at which the pattern keeps repeating from (the start)
// To repeat the pattern from any other point, you could increase the index, e.g. '1'
v.vibrate(pattern, 0);

जब आप कंपन को रोकने के लिए तैयार हों, तो cancel() विधि को कॉल करें:

v.cancel();

कंपन पैटर्न का उपयोग कैसे करें

यदि आप अधिक bespoke कंपन चाहते हैं, तो आप अपने स्वयं के कंपन पैटर्न बनाने का प्रयास कर सकते हैं:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Start without a delay
// Each element then alternates between vibrate, sleep, vibrate, sleep...
long[] pattern = {0, 100, 1000, 300, 200, 100, 500, 200, 100};

// The '-1' here means to vibrate once, as '-1' is out of bounds in the pattern array
v.vibrate(pattern, -1);

अधिक जटिल कंपन

कई एसडीके हैं जो हैप्पीक फीडबैक की एक विस्तृत श्रृंखला प्रदान करते हैं। एक जिसे मैं विशेष प्रभावों के लिए उपयोग करता हूं वह एंड्रॉइड के लिए इमर्सन हैप्टीक डेवलपमेंट प्लेटफार्म है

समस्या निवारण

यदि आपका डिवाइस कंपन नहीं करेगा, तो पहले सुनिश्चित करें कि यह कंपन कर सकता है:

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Output yes if can vibrate, no otherwise
if (v.hasVibrator()) {
    Log.v("Can Vibrate", "YES");
} else {
    Log.v("Can Vibrate", "NO");
}

दूसरा, कृपया सुनिश्चित करें कि आपने अपने आवेदन को कंपन करने की अनुमति दी है! पहले बिंदु पर वापस देखें।

मैंने एक एंड्रॉइड एप्लिकेशन लिखा था। अब, जब कोई निश्चित कार्य होता है तो मैं डिवाइस को कंपन करना चाहता हूं। मैं यह कैसे कर सकता हूँ?


उपरोक्त उत्तर बहुत सही है लेकिन मैं इसे करने के लिए एक आसान कदम दे रहा हूं:

 private static final long[] THREE_CYCLES = new long[] { 100, 1000, 1000,  1000, 1000, 1000 };

  public void longVibrate(View v) 
  {
     vibrateMulti(THREE_CYCLES);
  }

  private void vibrateMulti(long[] cycles) {
      NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
      Notification notification = new Notification();

      notification.vibrate = cycles; 
      notificationManager.notify(0, notification);
  }

और फिर अपनी एक्सएमएल फ़ाइल में:

<button android:layout_height="wrap_content" 
        android:layout_width ="wrap_content" 
        android:onclick      ="longVibrate" 
        android:text         ="VibrateThrice">
</button>

यह easiest तरीका है।


प्रयत्न:

    import android.os.Vibrator;
     ...
     Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
     // Vibrate for 500 milliseconds
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            v.vibrate(VibrationEffect.createOneShot(500,VibrationEffect.DEFAULT_AMPLITUDE))
     }else{
     //deprecated in API 26 
            v.vibrate(500)
     }

ध्यान दें:

AndroidManifest.xml फ़ाइल में अनुमति शामिल करना न भूलें:

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

मैं निम्नलिखित यूटिल विधि का उपयोग करता हूं:

public static final void vibratePhone(Context context, short vibrateMilliSeconds) {
    Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
    vibrator.vibrate(vibrateMilliSeconds);
}

AndroidManifest फ़ाइल में निम्न अनुमति जोड़ें

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

यदि आप उपरोक्त सुझाव के अनुसार विभिन्न प्रकार के कंपन (पैटर्न / अनिश्चित) का उपयोग करना चाहते हैं तो आप अधिभारित विधियों का उपयोग कर सकते हैं।


अपडेट करें 2017 कंपन (अंतराल) विधि एंड्रॉइड-ओ (एपीआई 8.0) के साथ बहिष्कृत है

सभी एंड्रॉइड संस्करणों का समर्थन करने के लिए इस विधि का उपयोग करें।

// Vibrate for 150 milliseconds
private void shakeItBaby() {
    if (Build.VERSION.SDK_INT >= 26) {
        ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(150, VibrationEffect.DEFAULT_AMPLITUDE));
    } else {
        ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(150);
    }
}

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

<manifest> टैग और बाहर <application> टैग के अंदर जोड़ा जाना चाहिए।






android-vibration