public void start() { if (running) { Logging.warn("Audio player is already running."); return; } running = true; AudioAttributes aa = new AudioAttributes.Builder() .SetContentType(AudioContentType.Speech) .SetLegacyStreamType(Stream.VoiceCall) .SetFlags(AudioFlags.LowLatency) .SetUsage(AudioUsageKind.VoiceCommunication) .Build(); AudioFormat af = new AudioFormat.Builder() .SetSampleRate(44100) .SetChannelMask(ChannelOut.Mono) .SetEncoding(Encoding.Pcm16bit) .Build(); audioPlayer = new AudioTrack(aa, af, AudioTrack.GetMinBufferSize(44100, ChannelOut.Mono, Encoding.Pcm16bit) * 100, AudioTrackMode.Stream, 0); audioPlayer.SetVolume(0.8f); audioPlayer.Play(); }
private void initPlayer() { Encoding encoding = Encoding.Pcm16bit; // Prepare player AudioAttributes aa = new AudioAttributes.Builder() .SetContentType(AudioContentType.Speech) .SetLegacyStreamType(Stream.VoiceCall) .SetFlags(AudioFlags.LowLatency) .SetUsage(AudioUsageKind.VoiceCommunication) .Build(); AudioFormat af = new AudioFormat.Builder() .SetSampleRate(44100) .SetChannelMask(ChannelOut.Mono) .SetEncoding(encoding) .Build(); bufferSize = AudioTrack.GetMinBufferSize(44100, ChannelOut.Mono, encoding) * 10; audioPlayer = new AudioTrack(aa, af, bufferSize, AudioTrackMode.Stream, 0); // TODO implement dynamic volume control AudioManager am = (AudioManager)MainActivity.Instance.GetSystemService(Context.AudioService); audioPlayer.SetVolume(am.GetStreamVolume(Stream.VoiceCall)); audioPlayer.Play(); }