как вибрировать устройство при нажатии кнопки с использованием эффектов вибратора? Использование Kotlin

Как вибрировать устройство при нажатии любой кнопки. я использовал этот код, но никакого эффекта или вибрации не было

//click listener imgNextBtn.setOnClickListener { val vibe:Vibrator = activity?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator vibe.vibrate(500) Utilities.alertDialog(this, activity!!, mContent!! } } 

или

  //click listener imgNextBtn.setOnClickListener { val vibe:Vibrator = activity?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator var effect:VibrationEffect = VibrationEffect.createOneShot(1000, VibrationEffect.DEFAULT_AMPLITUDE); vibe.vibrate(effect) Utilities.alertDialog(this, activity!!, mContent!! } } 

menifest: `

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

Вибрация, использующая рабочий образец kotlin, попробует это

manifest.xml

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

В котлин:

  val vibratorService = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator vibratorService.vibrate(500) 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btn_vibrate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Vibrate" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> 

MainActivity.kt

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main); val btn_click_me = findViewById(R.id.btn_vibrate) as Button btn_click_me.setOnClickListener { val vibratorService = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator vibratorService.vibrate(500) } } } 

Ответ, данный @ R2R, является совершенным. Но метод vibrate() класса Vibrator устарел от уровня API 26 . Итак, я даю вам обновленный код:

Вам не нужно все менять. Просто обновите код вибрации в MainActivity.kt .

MainActivity.kt:

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main); val btn_click_me = findViewById(R.id.btn_vibrate) as Button btn_click_me.setOnClickListener { val vibratorService = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator if (vibrator.hasVibrator()) { // Vibrator availability checking if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { vibrator.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)) // New vibrate method for API Level 26 or higher } else { vibrator.vibrate(500) // Vibrate method for below API Level 26 } } } } }