コード例 #1
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);
        }
コード例 #2
0
        private AudioTrack GetAudioTrack()
        {
            ChannelOut channelOut = _channels == 2 ? ChannelOut.Stereo : ChannelOut.Mono;
            Encoding   encoding   = Encoding.Pcm16bit;;
            int        bufferSize = AudioTrack.GetMinBufferSize(_sampleRate, channelOut, encoding) * 2;

            AudioTrack audioTrack;

            AudioAttributes.Builder attributesBuilder = new AudioAttributes.Builder()
                                                        .SetUsage(AudioUsageKind.Game);
            AudioFormat format = new AudioFormat.Builder()
                                 .SetEncoding(encoding)
                                 .SetSampleRate(_sampleRate)
                                 .SetChannelMask(channelOut)
                                 .Build();

            if (Build.VERSION.SdkInt < BuildVersionCodes.O)
            {
                attributesBuilder.SetFlags(AudioFlags.LowLatency);
            }

            if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
            {
                AudioTrack.Builder trackBuilder = new AudioTrack.Builder()
                                                  .SetAudioFormat(format)
                                                  .SetAudioAttributes(attributesBuilder.Build())
                                                  .SetTransferMode(AudioTrackMode.Stream)
                                                  .SetBufferSizeInBytes(bufferSize);

                trackBuilder.SetPerformanceMode(AudioTrackPerformanceMode.LowLatency);
                audioTrack = trackBuilder.Build();
            }
            else
            {
                audioTrack = new AudioTrack(attributesBuilder.Build(),
                                            format,
                                            bufferSize,
                                            AudioTrackMode.Stream,
                                            AudioManager.AudioSessionIdGenerate);
            }

            return(audioTrack);
        }