Cannot conect AudioTrack to audiofx.Equalizer in kotlin

148 views Asked by At

I have been trying to use audiofx.Equalizer in Kotlin but I having the following problem:

AudioFlinger could not create effect 0bed4300-ddd6-11db-8f34-0002a5d5c51b / ec7178ec-e5e1-4432-a3f4-4657e6795210, status: -22 AudioEffect initCheck failed -3 Error code -3 when initializing AudioEffect.

java.lang.RuntimeException: Cannot initialize effect engine for type: 0bed4300-ddd6-11db-8f34-0002a5d5c51b Error: -3

With the code:

    Track =  AudioTrack.Builder()               
            .setAudioAttributes(AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_MEDIA)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build())
            .setAudioFormat(AudioFormat.Builder()
                    .setEncoding(MediaRecorder.AudioEncoder.AMR_NB)
                    .setSampleRate(Fs)
                    .setChannelMask( AudioFormat.CHANNEL_OUT_STEREO)
                    .build())
            .setPerformanceMode( AudioTrack.PERFORMANCE_MODE_LOW_LATENCY )
            .setTransferMode( AudioTrack.MODE_STREAM)
            .build()  
    Track.play()
    val eq = Equalizer(100, Track.getAudioSessionId())
    eq.setEnabled(true)

with this permission:

 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

Any idea why the audioEffect cannot start? Thanks,

1

There are 1 answers

1
Divyang Diwasaliwala On

Add RECORD_AUDIO permission to AndroidManifest.xml

<uses-permission android:name="android.permission.RECORD_AUDIO" />

then you have to request for this permission from within the Activity where it is being used.