Как включить вибрацию при касании каждой кнопки в приложении

В моем меню настроек я использовал переключатель, когда я включаю его, я хочу, чтобы каждая кнопка в приложении вибрировала, а когда я выключаю переключатель, я хочу, чтобы каждая кнопка в приложении не вибрировала.

Ниже приведен код, который я пробовал до сих пор.

    switch2!!.setOnCheckedChangeListener { buttonView, isChecked ->
        if (switch2!!.isChecked) {
switch2!!.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
        }
        else {
                vibrator.cancel()
            }
        }

person Zaid Rehman    schedule 23.05.2021    source источник


Ответы (2)


Вы можете сделать так.

  1. Используя SharedPreference . https://developer.android.com/training/data-storage/shared-preferences

  2. После того, как вы сохранили ключ, вы можете использовать его в другом действии/фрагменте.

  3. В onCreate вы получаете значение из SharedPreference.

  4. Вы используете переменную, чтобы сначала проверить ее, прежде чем нажать кнопку.

  5. Если да, то вибрируйте. Обратитесь к этому. https://stackoverflow.com/a/52990380/9346054

**Не забудьте указать AndroidManifest, как указано выше.

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

Пример.

Здесь в onCreate

val vibe = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val isVibrate = sharedPref.getInt(getString(R.string.is_vibrate), defaultValue)

А затем внутри кнопки onClick

    if (isVisible) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            vibrator.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE))
        } else {
            vibrator.vibrate(200)
        }
    }
person Ticherhaz FreePalestine    schedule 23.05.2021

вам нужно сначала добавить это разрешение

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

а затем вы можете использовать это развлечение для мобильного телефона с вибрацией

fun vibratePhone(context: Context?, milliseconds: Int) {
    val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
    if (Build.VERSION.SDK_INT >= 26) {
        vibrator.vibrate(
            VibrationEffect.createOneShot(
                milliseconds,
                VibrationEffect.DEFAULT_AMPLITUDE
            )
        )
    } else {
        vibrator.vibrate(milliseconds)
    }
}
person Mahdi Zareei    schedule 23.05.2021