以编程方式启用和禁用android中的振动

NoO*_*One 7 android

在我的一个Android应用程序中,我需要完全启用或禁用振动,无论模式如何(即无声或一般或响亮).

我目前在不推荐使用的函数setVibrateSetting的帮助下使用以下代码

//用于打开振动模式

audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
            AudioManager.VIBRATE_SETTING_ON);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
            AudioManager.VIBRATE_SETTING_ON);
Run Code Online (Sandbox Code Playgroud)

//用于关闭振动模式

audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
            AudioManager.VIBRATE_SETTING_OFF);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
            AudioManager.VIBRATE_SETTING_OFF);
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有明确的方法来做到这一点.

建议最受欢迎:)

此致,Jujare

gno*_*bal 5

弃用文本setVibrateSetting()说:

此方法仅应由替换音频设置的平台范围管理或主要电话应用程序的应用程序使用。

据我了解,没有其他选项可以全局启用或禁用振动,因此如果您有戒指配置文件管理器等应用程序,您可能需要使用它。

恕我直言,谷歌在这里不恰当地使用了弃用。

我使用以下类来隐藏一个“兼容”类中的弃用:

@SuppressWarnings("deprecation")
class AudioManagerCompat {
    final static int VIBRATE_TYPE_RINGER = AudioManager.VIBRATE_TYPE_RINGER;
    final static int VIBRATE_TYPE_NOTIFICATION = AudioManager.VIBRATE_TYPE_NOTIFICATION;
    final static int VIBRATE_SETTING_ON = AudioManager.VIBRATE_SETTING_ON;
    final static int VIBRATE_SETTING_OFF = AudioManager.VIBRATE_SETTING_OFF;
    final static int VIBRATE_SETTING_ONLY_SILENT = AudioManager.VIBRATE_SETTING_ONLY_SILENT;

    static int getVibrateSetting(AudioManager am, int vibrateType) {
        return am.getVibrateSetting(vibrateType);
    }

    static void setVibrateSetting(AudioManager am, int vibrateType, int vibrateSetting) {
        am.setVibrateSetting(vibrateType, vibrateSetting);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `恕我直言,谷歌在这里不恰当地使用了弃用。` 你是对的,因为没有其他方法可以改变系统范围的振动设置。但是“弃用”这个词总是让开发人员感到困惑。弃用意味着有更好的方法可用,而不是您不能使用它! (3认同)

小智 -3

检查这个,我发现这是第一个谷歌结果。代码:

if(isVibrate){
Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);  
     vib.vibrate(500);
      Toast.makeText(this, "vib started", Toast.LENGTH_LONG).show();
}

else{

// do nothing

}
Run Code Online (Sandbox Code Playgroud)