Java Android振动系统已被弃用。如何在Android中使用振动效果>;=API 26?
我正在使用Android的Java Android振动系统已被弃用。如何在Android中使用振动效果>;=API 26?,java,android,kotlin,android-8.0-oreo,android-vibration,Java,Android,Kotlin,Android 8.0 Oreo,Android Vibration,我正在使用Android的可控震源\u服务为按钮触摸提供触觉反馈 ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(300); Android Studio警告我说,Vibration(interval)方法已被弃用,我应该对API>23使用VibrationEffect 因此,我使用了VibrationEffect的方法createOneShot,它有两个参数:间隔和振幅。 我试着搜索它,但没有任何关于传递振幅的线索,有人知道
可控震源\u服务
为按钮触摸提供触觉反馈
((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(300);
Android Studio警告我说,Vibration(interval)
方法已被弃用,我应该对API>23使用VibrationEffect
因此,我使用了VibrationEffect
的方法createOneShot
,它有两个参数:间隔和振幅。
我试着搜索它,但没有任何关于传递振幅的线索,有人知道如何使用它吗
更新添加的代码
// 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);
}
}
振幅是一个整数值。这取决于振动的强度。该值必须介于1和255之间,或
默认值\u振幅
为-1
您可以将其用作振动效果。默认振幅
更多详细信息您可以将其用于触觉反馈(振动):
触觉反馈常量
中还有其他常量可用,如虚拟键
,键盘点击
此库可能会帮助您:
你所需要的就是
隆隆声一次(150);
它为您处理API版本。我偶然发现了这一点,并发现
振动效果.createWaveform()
基本上使用了与旧振动()相同的长[]
-模式
因此,您可以像这样重用现有模式(这是一个Kotlin扩展函数):
您也可以使用模式(例如,longArrayOf(0,150)
)来代替stributioneffect.createOneShot()
),因此无需使用不同的函数 与科特林
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)
}
}
打开管理NuGet软件包
try {
var duration = TimeSpan.FromMilliseconds(300);
Vibration.Vibrate(duration);
}
catch (FeatureNotSupportedException ex){}
catch (Exception ex){}
搜索并安装Xamarin.Essentials
try {
var duration = TimeSpan.FromMilliseconds(300);
Vibration.Vibrate(duration);
}
catch (FeatureNotSupportedException ex){}
catch (Exception ex){}
为Kotlin更新
按如下方式调用函数:
vibrateDevice(requireContext())
<uses-permission android:name="android.permission.VIBRATE"/>
确保按以下方式向AndroidManifest.xml添加权限:
vibrateDevice(requireContext())
<uses-permission android:name="android.permission.VIBRATE"/>
请注意,在运行时使用振动不需要请求许可
您需要在else
子句中禁止弃用,因为警告来自较新的SDK。为我工作kotlin ext fun
对于触觉效果,vibro有5毫秒!!(短的触觉反馈持续时间
)
用法
许可
<uses-permission android:name="android.permission.VIBRATE"/>
祝你好运✌ :)) 在问题本身中张贴代码。不包括屏幕快照:振动强度。该值必须介于1和255之间,或为默认值。(根据文档)我添加了屏幕截图以显示方法params。如果您想查看,请添加代码注意,在Xamarin表单中,这被定义为振动效果。DefaultAmplitude
对于大多数用途,这应该是正确的,因为这是迄今为止最简单(也是本机)的实现。它已经在ms中。无需转换任何内容:。只需要一行代码。请注意,该模式将以两种不同的方式工作createWaveform
接受定时和振幅,振动接受成对的关闭/打开定时。val可控震源=context.getSystemService(可控震源::class.java)
addOnItemTouchListener(ItemTouchListener { position, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
context.performHapticFeedback()
}
})
<uses-permission android:name="android.permission.VIBRATE"/>