Используйте мультимедийную кнопку для управления AudioTrack в Android, используя Kotlin - PullRequest
0 голосов
/ 28 февраля 2020

Я сгенерировал тон на определенной частоте с помощью функции ниже в Kotlin.

private fun genTone(): ByteArray {
   val sampleRate = 44100
   val duration = 10
   val sample = ByteArray(duration * sampleRate)
   for (i in 0 until duration * sampleRate) {
       sample[i] = (sin(i / (44100.toFloat() / frequencySeekBar.progress) * Math.PI) * 100).toByte()
   }
   return sample
}

Как видите, эта функция возвращает байтовый массив. Итак, я использовал AudioTrack для его воспроизведения, как показано ниже :

var sound = genTone()
audioTrack = AudioTrack(
            AudioManager.STREAM_MUSIC,
            44100, AudioFormat.CHANNEL_CONFIGURATION_MONO,
            AudioFormat.ENCODING_PCM_16BIT, sound.size,
            AudioTrack.MODE_STATIC
        )
audioTrack.write(sound, 0, sound.size)
audioTrack.play()

Теперь моя проблема в том, как воспроизвести / остановить звук с помощью мультимедийной кнопки наушников?

Я прочитал некоторые темы и руководства для определения службы и использования MediaBrowserCompat и MediaControllerCompat для управления MediaPlayer. , Но я ничего не нашел для AudioTrack.

Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...