Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android振动系统已被弃用。如何在Android中使用振动效果>;=API 26?_Java_Android_Kotlin_Android 8.0 Oreo_Android Vibration - Fatal编程技术网

Java Android振动系统已被弃用。如何在Android中使用振动效果>;=API 26?

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,它有两个参数:间隔和振幅。 我试着搜索它,但没有任何关于传递振幅的线索,有人知道

我正在使用Android的
可控震源\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"/>