【问题标题】:how to disable vibration from specific apps in android programmatically如何以编程方式禁用android中特定应用程序的振动
【发布时间】:2016-03-07 02:32:45
【问题描述】:

取决于NotificationListenerService及其方法cancelNotification,我可以根据包名取消来自特定应用的任何通知。

但是当我使用cancelNotification 时,这种方法似乎并没有停止该通知的振动!有什么办法可以禁用即将到来的通知的振动?或者一般情况下,我可以停止特定应用的振动吗?

我试过把手机调成静音模式,但是这个操作太慢了,通知会被取消,然后开始振动,然后手机就会进入静音模式!

    AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
    aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    if (android.os.Build.VERSION.SDK_INT >= 18 && android.os.Build.VERSION.SDK_INT <= 20) {
        cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
    } else if (android.os.Build.VERSION.SDK_INT >= 21) {
        cancelNotification(sbn.getKey());
    }

【问题讨论】:

    标签: android vibration


    【解决方案1】:

    setVibrateSetting() 的弃用文本说:

    此方法应仅用于替换音频设置的平台范围管理或主要电话应用程序的应用程序。 据我了解,没有其他选项可以全局启用或禁用振动,因此如果您有诸如铃声配置文件管理器之类的应用程序,则可能需要使用它。

    恕我直言,Google 在这里不当使用了弃用。

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

    @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);
        }
    }
    

    【讨论】:

    • 这段代码我以前见过,但是不明白怎么用?我试过用这个但不起作用aManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    相关资源
    最近更新 更多