Вот однострочный, чтобы проверить, является ли sNum
допустимым числовым значением; он был протестирован для самых разных входов:
!isNaN(+s.replace(/\s|\$/g, '')); // returns True if numeric value
, Если Вы хотите просто вибрировать устройство однажды для обеспечения обратной связи на пользовательском действии. Можно использовать performHapticFeedback()
функция View
. Этому не нужно VIBRATE
разрешение, которое будет объявлено в декларации.
Использование следующая функция как верхний уровень функционируют в некотором общем классе как Utils.kt Вашего проекта:
/**
* Vibrates the device. Used for providing feedback when the user performs an action.
*/
fun vibrate(view: View) {
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
}
И затем используют его где угодно в Вашем Fragment
или Activity
как следующее:
vibrate(requireView())
Простой как это!
Использование это как высокоуровневая функция в некотором общем классе Вашего проекта, такого как Utils.kt
// Vibrates the device for 100 milliseconds.
fun vibrateDevice(context: Context) {
val vibrator = getSystemService(context, Vibrator::class.java)
vibrator?.let {
if (Build.VERSION.SDK_INT >= 26) {
it.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE))
} else {
@Suppress("DEPRECATION")
it.vibrate(100)
}
}
}
И затем называет его где угодно в Вашем коде как следующее:
vibrateDevice(requireContext())
Используя Vibrator::class.java
более безопасно с точки зрения типов, чем использование String
константы.
Мы проверяем vibrator
на nullability использование let { }
, потому что, если вибрация не доступна для устройства, эти vibrator
, будет null
.
нормально подавлять депрекацию в else
пункт, потому что предупреждение от более нового SDK.
Мы не должны просить разрешение во времени выполнения для использования вибрации. Но мы должны объявить это в [1 110] как следующее:
<uses-permission android:name="android.permission.VIBRATE"/>