val context = ApplicationProvider.getApplicationContext<Application>()
val vibratorManager = context?.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
val vibrator = vibratorManager.getDefaultVibrator()
if ((drawCount == 240) or (drawCount == 60)){
vibrator.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE))
} else if ((drawCount <= 60) and (drawCount.mod(5) == 0)){
vibrator.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE))
}
vibrator.cancel()
vibratorManager.cancel()上面的代码会导致仿真器和三星Galaxy 4-磨损OS3.2-Android 11上出现一个空白屏幕。
我在这里复制了几个答案的代码。当我注释掉上述代码时,我的应用程序在模拟器和上述手表上运行得很好。
<代码>G 210
谢谢
发布于 2022-04-05 14:19:51
Access application context in companion object in kotlin
上面的柱子修好了我的窃听器。这就是我所做的。
init {
instance = this
}
companion object {
private var instance: MainActivity? = null
fun applicationContext() : Context {
return instance!!.applicationContext
}
}val context: Context = MainActivity.applicationContext()
发布于 2022-05-01 06:06:03
下面的代码片段适用于我
声明变量
private lateinit var mVibrator: Vibrator
private lateinit var vibrationEffectSingle : VibrationEffect初始化(以onCreate()表示)
if (ContextCompat.checkSelfPermission(this, Manifest.permission.VIBRATE) == PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// VibratorManager was only added on API level 31 release.
val vibratorManager = getSystemService(VIBRATOR_MANAGER_SERVICE) as VibratorManager
mVibrator = vibratorManager.defaultVibrator
} else {
// backward compatibility for Android API < 31
mVibrator = getSystemService(VIBRATOR_SERVICE) as Vibrator
}
vibrationEffectSingle = VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)
}使用
mVibrator.vibrate(vibrationEffectSingle)在宣言中
<uses-permission android:name="android.permission.VIBRATE" />https://stackoverflow.com/questions/71745877
复制相似问题