示例#1
0
 public void DeleteTone(AlarmTone alarmTone)
 {
     Realm.Write(() =>
     {
         GetSettings().AllAlarmTones.Remove(alarmTone);
     });
 }
        /// <summary>
        /// Handles setting the current tone value
        /// </summary>
        /// <param name="value">Value.</param>
        void SetSelectedTone(AlarmTone value)
        {
            var isSelectedNull = value.Equals(default(AlarmTone)) || value == null;

            if (isSelectedNull)
            {
                _selectedTone = null;
                return;
            }

            //if the user selected the 'choose custom tone' option, display file explorer
            var wasSelectCustomToneSelected = value.Equals(Defaults.Tones[0]);

            if (wasSelectCustomToneSelected)
            {
                _fileLocator.OpenFileLocator();
                _fileLocator.FileChosen += ToneFileChosen;
                return;
            }

            //_selectedTone = value;
            PlayTone(value);
            AddConfirmToolbarItem();

            _selectedTone = value;
            RaisePropertyChanged("SelectedTone");
        }
 public AlarmToneNamingPopupPage(AlarmTone tone)
 {
     InitializeComponent();
     _toneToEdit        = tone;
     ToneNameEntry.Text = tone.Name;
     _isEditMode        = true;
 }
 /// <summary>
 /// Saves the tone to settings when the tone has been selected
 /// </summary>
 /// <param name="alarmTone">The selected alarm tone</param>
 void OnToneSelected(AlarmTone alarmTone)
 {
     _alarmStorage.Realm.Write(() =>
     {
         _alarmStorage.GetSettings().AlarmTone = alarmTone;
     });
 }
示例#5
0
 public void AddTone(AlarmTone alarmTone)
 {
     Realm.Write(() =>
     {
         GetSettings().AllAlarmTones.Add(alarmTone);
     });
 }
示例#6
0
 /// <summary>
 /// Constructor for the struct
 /// </summary>
 /// <param name="Display">display string</param>
 /// <param name="status">status from enum</param>
 /// <param name="time">DateTime</param>
 public Alarm(string Display, AlarmStatus status, DateTime time, AlarmTone alarmTone, uint snoozeLength) : this()
 {
     DateTime      = time;
     DisplayString = Display;
     AlarmStatus   = status;
     SnoozeLength  = snoozeLength;
     AlarmTone     = alarmTone;
 }
        /// <summary>
        /// Deletes the given alarm tone
        /// </summary>
        /// <param name="alarmTone">Alarm tone to delete</param>
        void DeleteAlarmTone(AlarmTone alarmTone)
        {
            AllAlarmTones.Remove(alarmTone);
            _alarmStorage.Realm.Write(() =>
            {
                _alarmStorage.Realm.Remove(alarmTone);
            });

            _soundService.StopAudio();
        }
示例#8
0
        private void SetMediaPlayer()
        {
            if (IsAlarmOn)
            {
                AlarmTone alarmTone = tonesRepo.Tones.FirstOrDefault(a => a.Name == toneName);

                if (alarmTone == null)
                {
                    alarmTone = tonesRepo.Tones.First();
                }

                _soundService?.PlayAudio(alarmTone, true, alarmVolume);
            }
        }
示例#9
0
        public void PlayAudio(AlarmTone alarmTone, bool isLooping, int volume)
        {
            if (_audioPlayer != null)
            {
                _audioPlayer.FinishedPlaying -= Player_FinishedPlaying;
                _audioPlayer.Stop();
            }

            string localUrl = alarmTone.Path;

            _audioPlayer = AVAudioPlayer.FromUrl(NSUrl.FromFilename(localUrl));
            _audioPlayer.FinishedPlaying += Player_FinishedPlaying;
            _audioPlayer.Play();
        }
示例#10
0
        public override void Init(object initData)
        {
            base.Init(initData);


            Settings      = _alarmStorage.GetSettings();
            AllAlarmTones = new ObservableCollection <AlarmTone>(_alarmStorage.GetAllTones());

            // if we are setting an individual alarm's tone
            if (initData is Alarm newAlarm)
            {
                _isIndividualAlarmTone = true;
                _selectedTone          = _alarmStorage.GetTone(newAlarm.Tone);
                RaisePropertyChanged("SelectedTone");
            }
        }
示例#11
0
        /// <summary>
        /// Action to be done when a newly added tone has its name set
        /// </summary>
        /// <param name="toneName">The name to be given to the alarm tone</param>
        void OnNewToneNameSet(string toneName)
        {
            var newTone = new AlarmTone
            {
                Name         = toneName,
                Path         = _newToneUri.LocalPath,
                IsCustomTone = true
            };

            AllAlarmTones.Add(newTone);
            _alarmStorage.AddTone(newTone);

            _namingPopupPage.ToneNameSet -= OnNewToneNameSet;
            _fileLocator.FileChosen      -= ToneFileChosen;
            SetSelectedTone(newTone);
            FileNeedsNamed = false;
        }
示例#12
0
        void ToneFileChosen(string path)
        {
            var filename = Path.GetFileNameWithoutExtension(path);

            var newTone = new AlarmTone
            {
                Name         = filename,
                Path         = path,
                IsCustomTone = true
            };

            App.AlarmToneRepo.SaveTone(newTone);

            AllAlarmTones.Add(new SettingTone(newTone.Name, false));

            _fileLocator.FileChosen -= ToneFileChosen;
        }
        public void PlayAudio(AlarmTone alarmTone, bool isLooping)
        {
            StopAudio();

            var isADefaultTone = Defaults.Tones.FirstOrDefault(x => x.Path == alarmTone.Path) != default(AlarmTone);

            if (isADefaultTone)
            {
                _assetFileDescriptor = Forms.Context.Assets.OpenFd(alarmTone.Path);
                _mediaPlayer.SetDataSource(_assetFileDescriptor.FileDescriptor, _assetFileDescriptor.StartOffset, _assetFileDescriptor.Length);
            }
            else
            {
                string   alarmTonePath;
                string[] split = alarmTone.Path.Split(':');
                alarmTonePath = split[1];
                _mediaPlayer.SetDataSource(alarmTonePath);
            }

            _mediaPlayer.Looping = isLooping;
            _mediaPlayer.Prepare();
            _mediaPlayer.Start();
        }
        public void PlayAudio(AlarmTone alarmTone, bool isLooping, int volume)
        {
            StopAudio();

            if (alarmTone.IsCustomTone)
            {
                FileInputStream fis = new FileInputStream(alarmTone.Path);
                FileDescriptor  fd  = fis.FD;
                _mediaPlayer.SetDataSource(fd);
            }
            else
            {
                _assetFileDescriptor = Application.Context.Assets.OpenFd(alarmTone.Path);
                _mediaPlayer.SetDataSource(_assetFileDescriptor.FileDescriptor, _assetFileDescriptor.StartOffset, _assetFileDescriptor.Length);
            }

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
            {
                _mediaPlayer.SetAudioAttributes(new AudioAttributes.Builder()
                                                .SetUsage(AudioUsageKind.Alarm)
                                                .SetContentType(AudioContentType.Sonification)
                                                .Build());
            }
            else
            {
                _mediaPlayer.SetAudioStreamType(Stream.Alarm);
            }

            var   maxVolume = 10;
            float log1      = (float)(Math.Log(maxVolume - volume) / Math.Log(maxVolume));

            _mediaPlayer.SetVolume(1 - log1, 1 - log1);
            _mediaPlayer.Looping = isLooping;
            _mediaPlayer.Prepare();
            _mediaPlayer.Start();
        }
 public int DeleteTone(AlarmTone alarmTone)
 {
     return(ItemDatabase.DeleteObject <AlarmTone>(alarmTone.Id));
 }
示例#16
0
 async void EditAlarmTone(AlarmTone alarmTone)
 {
     _namingPopupPage = new AlarmToneNamingPopupPage(alarmTone);
     await PopupNavigation.Instance.PushAsync(_namingPopupPage);
 }
示例#17
0
 void PlayTone(AlarmTone tone)
 {
     _soundService.PlayAudio(tone);
 }
示例#18
0
 public void PlayAudio(AlarmTone alarmTone, int volume)
 {
     PlayAudio(alarmTone, false, volume);
 }
 public int SaveTone(AlarmTone alarmTone)
 {
     return(ItemDatabase.SaveObject(alarmTone));
 }
 public void PlayAudio(AlarmTone alarmTone)
 {
     PlayAudio(alarmTone, false);
 }