在Android 8中将铃声模式正常变为静音时的奇怪行为

时间:2017-12-08 09:34:07

标签: android android-audiomanager android-8.0-oreo

在我的应用程序中,我有3个单选按钮,用于让用户更改设备的振铃模式。但是从android 8我面临一个奇怪的问题。

当铃声模式从正常设置为静音时,仍会听到声音。这不是预期的行为。

但是当铃声模式从正常变为振动然后振动变为静音时。触摸声音听到。这是我的应用程序的预期行为

现在我的问题是为什么会出现在Normal to Silent模式中。

这是我更改铃声模式的代码

OS 7及以上版本的许可

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

在我的代码中,我检查了用户是否向我提供了 ACCESS_NOTIFICATION_POLICY 权限,如果没有将他移至 ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS 以获得我的许可,之后我就让用户更改设置。

public static void setMannerMode(Context context, int ringerMode) {
        try {
            AudioManager auManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            auManager.setRingerMode(ringerMode);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我根据选中的单选按钮

更改了这样的模式
Util.setMannerMode(getApplicationContext(), AudioManager.RINGER_MODE_NORMAL);

Util.setMannerMode(getApplicationContext(), AudioManager.RINGER_MODE_VIBRATE);

Util.setMannerMode(getApplicationContext(), AudioManager.RINGER_MODE_SILENT);

1 个答案:

答案 0 :(得分:0)

最后,我在 OS 8 上的 SILENT 模式下修复了此触控声音问题,方法是在NotificationManager.INTERRUPTION_FILTER_NONE

中设置NotificationManager
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                            mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);

有关中断过滤器的更多信息,请参见NotificationManager