Exemplo n.º 1
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.activity_alarm);
            Window.AddFlags(WindowManagerFlags.KeepScreenOn |
                            WindowManagerFlags.DismissKeyguard |
                            WindowManagerFlags.ShowWhenLocked |
                            WindowManagerFlags.TurnScreenOn);

            Title = GetString(Resource.String.alarm_title).Replace("/NAME/", alarmTarget.DisplayName);

            var textview = FindViewById <TextView>(Resource.Id.titleTextView);

            textview.Text = Title;

            var button = FindViewById <Button>(Resource.Id.ok_button);

            button.Click += Button_Click;

            try
            {
                var builder = new AudioAttributes.Builder();
                builder.SetContentType(AudioContentType.Music);
                builder.SetUsage(AudioUsageKind.Alarm);
                alarmPlayer.SetAudioAttributes(builder.Build());
                alarmPlayer.SetDataSource(ApplicationContext, Uri.Parse(alarmTarget.NotifySoundPath));
                alarmPlayer.Looping = true;
                alarmPlayer.Prepare();
                alarmPlayer.Start();
            }
            catch
            {
            }
        }
Exemplo n.º 2
0
 private void PreviewAlarmAudioButton_Click(object sender, EventArgs e)
 {
     if (streamerData.NotifySoundPath == null)
     {
         Toast.MakeText(ApplicationContext, Resource.String.no_sound_on_play_notify_sound, ToastLength.Short).Show();
         return;
     }
     try
     {
         if (previewPlayer.IsPlaying)
         {
             previewPlayer.Stop();
         }
         else
         {
             previewPlayer.Reset();
             var builder = new AudioAttributes.Builder();
             builder.SetContentType(AudioContentType.Music);
             builder.SetUsage(AudioUsageKind.Alarm);
             previewPlayer.SetAudioAttributes(builder.Build());
             previewPlayer.SetDataSource(streamerData.NotifySoundPath); //SetDataSource(ApplicationContext, Uri.Parse(streamerData.NotifySoundPath));
             previewPlayer.Prepare();
             previewPlayer.Start();
         }
     }
     catch
     {
         Toast.MakeText(ApplicationContext, Resource.String.exception_on_play_notify_sound, ToastLength.Short).Show();
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Create Notification Channel when API >= 26.
        /// </summary>
        /// <param name="request"></param>
        public static bool CreateNotificationChannel(NotificationChannelRequest request = null)
        {
            if (Build.VERSION.SdkInt < BuildVersionCodes.O)
            {
                return(false);
            }

            if (Application.Context.GetSystemService(Context.NotificationService) is not NotificationManager
                notificationManager)
            {
                return(false);
            }

            request ??= new NotificationChannelRequest();

            if (string.IsNullOrWhiteSpace(request.Name))
            {
                request.Name = "General";
            }

            if (string.IsNullOrWhiteSpace(request.Id))
            {
                request.Id = DefaultChannelId;
            }

            // you can't change the importance or other notification behaviors after this.
            // once you create the channel, you cannot change these settings and
            // the user has final control of whether these behaviors are active.
            using var channel = new NotificationChannel(request.Id, request.Name, request.Importance)
                  {
                      Description          = request.Description,
                      Group                = request.Group,
                      LightColor           = request.LightColor,
                      LockscreenVisibility = request.LockScreenVisibility,
                  };
            var soundUri = GetSoundUri(request.Sound);

            if (soundUri != null)
            {
                using var audioAttributesBuilder = new AudioAttributes.Builder();
                var audioAttributes = audioAttributesBuilder.SetUsage(AudioUsageKind.Notification)
                                      ?.SetContentType(AudioContentType.Music)
                                      ?.Build();
                channel.SetSound(soundUri, audioAttributes);
            }

            if (request.VibrationPattern != null)
            {
                channel.SetVibrationPattern(request.VibrationPattern);
            }

            channel.SetShowBadge(request.ShowBadge);
            channel.EnableLights(request.EnableLights);
            channel.EnableVibration(request.EnableVibration);
            channel.SetBypassDnd(request.CanBypassDnd);

            notificationManager.CreateNotificationChannel(channel);

            return(true);
        }
        //public void Write(byte[] bytes)
        //{
        //    /*
        //    foreach(System.IO.Stream temp in streamList)
        //    {
        //        try
        //        {
        //            temp.Write(bytes);
        //        }
        //        catch (System.IO.IOException ex)
        //        {
        //            System.Diagnostics.Debug.WriteLine("Error occurred when sending data", ex);
        //        }
        //    }
        //    *
        //    */

        //    try
        //    {
        //        mmOutStream.Write(bytes);
        //    }
        //    catch (System.IO.IOException ex)
        //    {
        //        System.Diagnostics.Debug.WriteLine("Error occurred when sending data", ex);
        //    }

        //}

        public void Write(System.IO.Stream stream)
        {
            /*
             * foreach(System.IO.Stream temp in streamList)
             * {
             *  try
             *  {
             *      temp.Write(bytes);
             *  }
             *  catch (System.IO.IOException ex)
             *  {
             *      System.Diagnostics.Debug.WriteLine("Error occurred when sending data", ex);
             *  }
             * }
             *
             */
            AudioTrack _output;

            int buffsize = AudioTrack.GetMinBufferSize(44100, ChannelOut.Stereo, Android.Media.Encoding.Pcm16bit);
            //_output = new AudioTrack(Android.Media.Stream.Music, 44100, ChannelOut.Stereo, Android.Media.Encoding.Pcm16bit,
            //buffsize, AudioTrackMode.Stream);
            var AABuilder = new AudioAttributes.Builder();

            AABuilder.SetContentType(AudioContentType.Music);
            AABuilder.SetUsage(AudioUsageKind.Media);

            var AfBuilder = new AudioFormat.Builder();

            AfBuilder.SetSampleRate(44100);
            AfBuilder.SetEncoding(Android.Media.Encoding.Pcm16bit);
            AfBuilder.SetChannelMask(ChannelOut.Stereo);


            _output = new AudioTrack(AABuilder.Build(), AfBuilder.Build(), buffsize, AudioTrackMode.Stream, AudioManager.AudioSessionIdGenerate);
            _output.Play();
            try
            {
                byte[] buffer        = new byte[1000];
                int    bytesReturned = 1;

                while (bytesReturned > 0)
                {
                    bytesReturned = stream.Read(buffer, 0, buffer.Length);
                    mmOutStream.Write(buffer);
                    _output.Write(buffer, 0, buffer.Length);
                    //DependencyService.Get<BluetoothManager>().Write(buffer);
                }
                stream.Close();
            }
            catch (System.IO.IOException ex)
            {
                System.Diagnostics.Debug.WriteLine("Error occurred when sending data", ex);
            }
        }
Exemplo n.º 5
0
        public SimplePhraseMessenger(TextToSpeech speechEngine, string phrase, int numRepeats)
        {
            this.speechEngine = speechEngine;
            this.phrase       = phrase;
            this.numRepeats   = numRepeats;
            AudioAttributes.Builder b = new AudioAttributes.Builder();
            b.SetFlags(AudioFlags.LowLatency);
            b.SetUsage(AudioUsageKind.Alarm);
            b.SetContentType(AudioContentType.Speech);

            AudioAttributes audioAttributes = b.Build();

            speechEngine.SetAudioAttributes(audioAttributes);
        }
Exemplo n.º 6
0
        protected virtual void CreateNativeChannel(Channel channel)
        {
            var native = new NotificationChannel(
                channel.Identifier,
                channel.Description ?? channel.Identifier,
                channel.Importance.ToNative()
                );
            var attrBuilder = new AudioAttributes.Builder();

            Android.Net.Uri?uri = null;
            if (!channel.CustomSoundPath.IsEmpty())
            {
                uri = this.manager.GetSoundResourceUri(channel.CustomSoundPath !);
            }

            switch (channel.Importance)
            {
            case ChannelImportance.Critical:
                attrBuilder
                .SetUsage(AudioUsageKind.Alarm)
                .SetFlags(AudioFlags.AudibilityEnforced);

                uri ??= Android.Provider.Settings.System.DefaultAlarmAlertUri;
                // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                native.SetBypassDnd(true);
                break;

            case ChannelImportance.High:
                uri ??= Android.Provider.Settings.System.DefaultAlarmAlertUri;
                break;

            case ChannelImportance.Normal:
                uri ??= Android.Provider.Settings.System.DefaultNotificationUri;
                break;

            case ChannelImportance.Low:
                break;
            }
            if (uri != null)
            {
                native.SetSound(uri, attrBuilder.Build());
            }

            this.manager.NativeManager.CreateNotificationChannel(native);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Intializes the player.
        /// </summary>
        private void InitializePlayer()
        {
            mediaPlayer = new MediaPlayer();

            //Tell our player to stream music
            //x mediaPlayer.SetAudioStreamType(Stream.Music);
            var aab = new AudioAttributes.Builder();

            aab.SetUsage(AudioUsageKind.Media);
            aab.SetContentType(AudioContentType.Music);
            mediaPlayer.SetAudioAttributes(aab.Build());

            //Wake mode will be partial to keep the CPU still running under lock screen
            mediaPlayer.SetWakeMode(this.ApplicationContext, WakeLockFlags.Partial);

            mediaPlayer.SetOnBufferingUpdateListener(this);
            mediaPlayer.SetOnCompletionListener(this);
            mediaPlayer.SetOnErrorListener(this);
            mediaPlayer.SetOnPreparedListener(this);
        }
Exemplo n.º 8
0
        public MainPage()
        {
            InitializeComponent();

#if __IOS__
            player = new AVPlayer();
            player = AVPlayer.FromUrl(NSUrl.FromString("http://noasrv.caster.fm:10135/live"));
            player.Play();
            VolumeSlider.Value = player.Volume;
#else
            player = new MediaPlayer();
            var audioAttributesBuilder = new AudioAttributes.Builder();
            audioAttributesBuilder.SetContentType(AudioContentType.Music);
            audioAttributesBuilder.SetLegacyStreamType(Stream.Music);
            audioAttributesBuilder.SetUsage(AudioUsageKind.Media);
            player.SetAudioAttributes(audioAttributesBuilder.Build());
            player.SetDataSource("http://noasrv.caster.fm:10135/live");
            player.Prepare();
            player.Start();
            VolumeSlider.Value = 1.0f;
#endif
        }
        public void Read()
        {
            System.Threading.Tasks.Task.Run(() =>
            {
                AudioTrack _output;

                int buffsize = AudioTrack.GetMinBufferSize(44100, ChannelOut.Stereo, Android.Media.Encoding.Pcm16bit);
                //_output = new AudioTrack(Android.Media.Stream.Music, 44100, ChannelOut.Stereo, Android.Media.Encoding.Pcm16bit,
                //buffsize, AudioTrackMode.Stream);
                var AABuilder = new AudioAttributes.Builder();

                AABuilder.SetContentType(AudioContentType.Music);
                AABuilder.SetUsage(AudioUsageKind.Media);

                var AfBuilder = new AudioFormat.Builder();
                AfBuilder.SetSampleRate(44100);
                AfBuilder.SetEncoding(Android.Media.Encoding.Pcm16bit);
                AfBuilder.SetChannelMask(ChannelOut.Stereo);


                _output = new AudioTrack(AABuilder.Build(), AfBuilder.Build(), buffsize, AudioTrackMode.Stream, AudioManager.AudioSessionIdGenerate);
                _output.Play();

                byte[] myReadBuffer = new byte[1000];
                int count           = 4;
                System.Threading.Tasks.Task.Run(() =>
                {
                    while (true)
                    {
                        try
                        {
                            int a = mmInStream.Read(myReadBuffer, 0, myReadBuffer.Length);
                            if (a > 0)
                            {
                                if (count == 0)
                                {
                                    _output.Write(myReadBuffer, 0, myReadBuffer.Length);
                                }
                                else
                                {
                                    count--;
                                }
                            }
                            else
                            {
                                var t = a;
                            }
                        }
                        catch (System.IO.IOException ex)
                        {
                            System.Diagnostics.Debug.WriteLine("Input stream was disconnected", ex);
                        }
                    }
                }).ContinueWith((t) =>
                {
                    var a = t.Exception;
                });
            }).ContinueWith((t) =>
            {
                var a = t.Exception;
            });
        }