web-dev-qa-db-ja.com

Androidバイブレーションは非推奨です。 Android> = API 26でVibrationEffectを使用するには?

AndroidのVIBRATOR_SERVICEを使用して、ボタンタッチの触覚フィードバックを提供しています。

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

Android Studioでは、メソッドvibrate(interval)が推奨されないという警告が表示されます。API> 23にはVibrationEffectを使用する必要があります。

そこで、VibrationEffectのメソッドcreateOneShotを使用しました。このメソッドは、間隔と振幅の2つのパラメーターを取ります。 enter image description here

私はそれを検索しようとしましたが、amplitudeとして何を渡すべきかについての手がかりがありませんでした。

更新されたコードを更新

// 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);
    }
}
35
Hitesh Sahu

振幅は整数値です。その振動の強さ。これは、1〜255の値、または-1であるDEFAULT_AMPLITUDEでなければなりません。

VibrationEffect.DEFAULT_AMPLITUDEとして使用できます

詳細 こちら

17
Kapil G

コトリンと

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

これを触覚フィードバック(振動)に使用できます:

view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);

HapticFeedbackConstantsには、VIRTUAL_KEYKEYBOARD_TAPなどのその他の定数があります...

6
Bob

このライブラリはあなたを助けるかもしれません: https://github.com/josephrubin/Rumble-4-Android

必要なのはRumble.once(150);だけです

APIバージョンを処理します。

1
jojois74

私はこれを偶然見つけて、VibrationEffect.createWaveform()が基本的に古いvibrate()と同じlong[]-パターンを使用していることを発見しました。

このため、次のように既存のパターンを再利用できます(これはKotlin拡張機能です)。

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

また、VibrationEffect.createOneShot()の代わりにパターン(たとえば、longArrayOf(0, 150))も使用できるため、異なる関数を使用する必要はありません。

1
hardysim

enter image description here OpenNuGetパッケージの管理

検索とインストールXamarin.Essentials

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