wake-up-neo.com

Android vibrieren ist veraltet. Wie verwende ich VibrationEffect in Android> = API 26?

Ich benutze den VIBRATOR_SERVICE von Android, um eine haptische Rückmeldung für eine Tastenberührung zu geben.

 ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(300);

Android Studio gibt mir eine Warnung, dass die Methode vibrate(interval) veraltet ist. Ich sollte VibrationEffect für API> 23 verwenden. 

Also habe ich die Methode VibrationEffect voncreateOneShot verwendet, die zwei Parameter benötigt: Intervall und Amplitude.  enter image description here

Ich habe versucht, danach zu suchen, habe aber keine Ahnung, was als amplitude gelten soll.

Update hinzugefügt Code

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

Amplitude ist ein int-Wert. Es ist die Stärke der Vibration. Dies muss ein Wert zwischen 1 und 255 sein, oder DEFAULT_AMPLITUDE, der -1 ist.

Sie können es als VibrationEffect.DEFAULT_AMPLITUDE verwenden

Weitere Details hier

16
Kapil G

Sie können dies für haptisches Feedback (Vibration) verwenden:

view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);

Es gibt andere Konstanten in HapticFeedbackConstants wie VIRTUAL_KEY, KEYBOARD_TAP ... 

5
Bob

Diese Bibliothek kann Ihnen helfen: https://github.com/josephrubin/Rumble-4-Android

Alles was Sie benötigen, ist Rumble.once(150);

Es behandelt die API-Versionen für Sie.

1
jojois74

Ich bin gerade darüber gestolpert und habe herausgefunden, dass VibrationEffect.createWaveform() grundsätzlich das gleiche long[]- Muster wie das alte vibrate() verwendet.

Aus diesem Grund können Sie Ihr vorhandenes Muster wie folgt wiederverwenden (dies ist eine Kotlin-Erweiterungsfunktion):

fun Context.vibrate(pattern: LongArray) {
    val vibrator =
        applicationContext.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator? ?: return

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        vibrator.vibrate(
            VibrationEffect.createWaveform(pattern, VibrationEffect.DEFAULT_AMPLITUDE)
        )

    } else {
        @Suppress("DEPRECATION")
        vibrator.vibrate(pattern, -1)
    }
}

Anstelle von VibrationEffect.createOneShot() können Sie auch ein Muster verwenden (z. B. longArrayOf(0, 150)), sodass Sie keine anderen Funktionen verwenden müssen. 

1
hardysim

mit kotlin 

private fun vibrate(){
    val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
         vibrator.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE))
    } else {
         vibrator.vibrate(200)
    }
}
0
Aolphn

enter image description here Öffnen Verwalten von NuGet-Paketen

Suchen und installieren Xamarin.Essentials

try {
 var duration = TimeSpan.FromMilliseconds(300);
 Vibration.Vibrate(duration);
} 
 catch (FeatureNotSupportedException ex){} 
 catch (Exception ex){}
0
Newred