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 { } }
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(); } }
/// <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); } }
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); }
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); }
/// <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); }
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; }); }