Microphone.GetPosition breaks on Android with a scene full of objects

I’ve run into a bit of a peculiar problem that I can just not solve. I have a pretty big problem I’m working on that requires the microphone for processing speech to text, which is then sent for further processing. Then I also use the microphone to determine the loudness of it.

This works great on PC, be it in editor or in a build. But on Android this completely breaks. Microphone.Start works fine and keeps working with the audio clip. But whenever I call Microphone.GetPosition it returns 0 at any time.

Odd thing is that it does work in empty scenes. But in a particular scene something breaks and I’m not sure what. I’ve tried going into the scene with every object disabled, and enabling them one by one but the microphone stops working immediately. Nothing else but the script that I’ve written touches the Microphone class so it should not be stopped. I’m not quite sure why GetPosition returns 0.

Is there something that conflicts with the microphone, causing GetPosition to return wrong numbers? Anyone has any idea?

I could imagine that access rights could be an issue. Does the app have microphone permission?

Maybe unrelated but still noteworthy:
I found that Microphone.GetPosition() is no updated in every frame on Android (on Windows it changes every frame).

The documentation on Microphone in Unity is scarce. I suggest to look at open-source projects such as UltraStar Play and its MicSampleRecorder.cs