This is not a good idea. The BroadcastReceiver life cycle lasts until it completes the call to the Receive () function, after which it is destroyed. If you started to start a new stream, the likelihood that the BroadcastReceiver will be killed before the stream ends, which may lead to unexpected behavior.
The best option would be to start a background service, as you said.
Waves source share