public void startRinging() { if (ringtone != null) { return; } try { bool ring = true; if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M) { NotificationManager nm = (NotificationManager)MainActivity.Instance.GetSystemService(Context.NotificationService); InterruptionFilter int_filter = nm.CurrentInterruptionFilter; if (int_filter != InterruptionFilter.Priority && int_filter != InterruptionFilter.All) { ring = false; } } AudioManager am = (AudioManager)MainActivity.Instance.GetSystemService(Context.AudioService); if (am.RingerMode != RingerMode.Normal) { ring = false; } MainActivity.Instance.VolumeControlStream = Stream.Ring; if (ring) { Android.Net.Uri rt_url = RingtoneManager.GetDefaultUri(RingtoneType.Ringtone); AudioAttributes aa = new AudioAttributes.Builder() .SetUsage(AudioUsageKind.NotificationRingtone) .Build(); ringtone = MediaPlayer.Create(MainActivity.Instance, rt_url, null, aa, 0); ringtone.Looping = true; ringtone.Start(); } }catch (Exception e) { Logging.error("Exception occured in startRinging: " + e); ringtone = null; } }
/// <summary> /// Toggles do not disturb if the app has been granted that permission. Notifies the app if the permission has not been granted. /// </summary> /// <returns>true if DND was toggled, false if DND permission has not been granted</returns> public bool ToggleDoNotDisturb() { if (notificationManager.IsNotificationPolicyAccessGranted) { InterruptionFilter filter = notificationManager.CurrentInterruptionFilter; if (filter.Equals(InterruptionFilter.None)) { notificationManager.SetInterruptionFilter(InterruptionFilter.All); } else { notificationManager.SetInterruptionFilter(InterruptionFilter.None); } MessagingCenter.Send(new DNDPermissionMessage(), "DNDGranted"); return(true); } else { MessagingCenter.Send(new DNDPermissionMessage(), "DNDNotGranted"); return(false); } }