Android:如何让振动在“振动”模式下工作?

问题描述 投票:0回答:1

我尝试使用以下代码在 Android(API 34、Android 11)中的应用程序上进行振动:

Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        long[] pattern = {0, 500, 500};
        v.vibrate(VibrationEffect.createWaveform(pattern, 0));

当设备处于“正常”模式(声音设置)时,振动起作用,但当设备处于“仅振动”模式时,振动不起作用。

java android audio android-vibration
1个回答
0
投票

在 Jetpack Compose 中触发振动,同时遵守 设备的声音配置文件(例如静音模式),您可以使用 AudioManager 在尝试之前检查当前铃声模式 振动设备。

val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
    if (audioManager.ringerMode != AudioManager.RINGER_MODE_SILENT) {
        val vibrator = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
            val vibratorManager = context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
            vibratorManager.defaultVibrator
        } else {
            context.getSystemService(Vibrator::class.java)
        }

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            vibrator.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE))
        } else {
            vibrator.vibrate(500)
        }
© www.soinside.com 2019 - 2024. All rights reserved.