Android Question [Solved] Force TTS via device loudspeaker


Active Member
Licensed User
Longtime User
I use TTS and the Beep function.
With the beep function, I can use Initialize2 to specify the channel via which this is output.
How can I do this with TTS?

The background is that I would also like to have the TTS output via the device loudspeaker (if the user wishes),
even if the device is connected to a radio (or other audio device) via Bluetooth, for example.


Well-Known Member
Licensed User
Upvote 0


Active Member
Licensed User
Longtime User

thanks for your answers.

first I tested a code from the AI (does not work, opens the camera, but I wanted to show it for the sake of completeness)
from KI:
Sub AudioManager_Set
    Dim AudioManager As JavaObject

    Dim params(2) As Object
    params(0) = AudioManager.GetField("STREAM_MUSIC")
    params(1) = AudioManager.GetField("AUDIOFOCUS_GAIN_TRANSIENT")

    Dim result As Int = AudioManager.RunMethod("requestAudioFocus", params)
    Log("Audio Manager: " & result)
End Sub

Sub AudioManager_Release
    Dim AudioManager As JavaObject
    AudioManager.RunMethod("abandonAudioFocus", Null)
End Sub

then I tested the code (from the link) from @MicroDrie, unfortunately this does not help (the app works, but the output is always via the BT device)

Finally, I tried the code from the link from @Erel.
This basically works, but the speech is output via the device speaker AND the BT device.
At least in the test environment (Samsung A54 and hi-fi system, target is then the same/different cell phone and car radio)
I have also "changed" the code a bit, it is in a sub and this in a code module.
'part of the Main Code:
            If TTS1.IsInitialized = False Then
        End If

        Dim sr As Float = ((Page_Setup.pm_Speed.SelectedValue-10)*0.05) + 1
        TTS1.SpeechRate = sr    'default = 1



'in the Code Moule
Sub Speek(Text As String, tts_Target As TTS)
    Dim p As Phone
    Dim jo As JavaObject
    jo.InitializeNewInstance("java.util.HashMap", Null)
    jo.RunMethod("put", Array("streamType", "" & p.VOLUME_ALARM))
    Dim jts As JavaObject = tts_Target
    jts.RunMethod("speak", Array(Text, 1, jo)) '0 = QUEUE_FLUSH, 1 = QUEUE_ADD

End Sub
Upvote 0