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

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

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

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

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

现在我的问题是为什么在正常到静音模式下发生这种情况。

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

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);
android android-audiomanager android-8.0-oreo
1个回答
0
投票

最后我修复了这个触摸声音问题而在OS 8上的静音模式是通过在NotificationManager.INTERRUPTION_FILTER_NONE中设置NotificationManager

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

有关中断过滤器的更多信息,请访问NotificationManager

© www.soinside.com 2019 - 2024. All rights reserved.