'Add Permisson MainFast
''AddPermission(android.permission.MODIFY_AUDIO_SETTINGS)
Sub Process_Globals
'
End Sub
Sub Globals
Dim btnToggle As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Inicializa a interface
Activity.LoadLayout("Layout")
btnToggle.Initialize("btnToggle")
btnToggle.Text = "Toggle Speakerphone"
Activity.AddView(btnToggle, 10dip, 10dip, 200dip, 50dip)
End Sub
Sub Activity_Resume
'
End Sub
Sub Activity_Pause (UserClosed As Boolean)
'
End Sub
'Função para obter o nível da API do dispositivo
Sub GetDeviceApiLevel As Int
Dim jo As JavaObject
jo.InitializeStatic("android.os.Build$VERSION")
Return jo.GetField("SDK_INT")
End Sub
'Função principal para ativar/desativar o viva-voz
Sub SetSpeakerphoneOn(value As Boolean)
Dim jo As JavaObject
jo.InitializeContext
Dim audioManager As JavaObject = jo.RunMethod("getSystemService", Array("audio"))
If audioManager.IsInitialized Then
If GetDeviceApiLevel >= 31 Then
'Android 12+ (API 31+): Usa setCommunicationDevice
Dim devices As List = audioManager.RunMethod("getAvailableCommunicationDevices", Null)
Dim audioDeviceInfo As JavaObject
For Each device As JavaObject In devices
If device.RunMethod("getType", Null) = 2 Then ' AudioDeviceInfo.TYPE_BUILTIN_SPEAKER = 2
audioDeviceInfo = device
Exit
End If
Next
If value And audioDeviceInfo.IsInitialized Then
Dim result As Boolean = audioManager.RunMethod("setCommunicationDevice", Array(audioDeviceInfo))
Log("setCommunicationDevice result: " & result)
If Not(result) Then Log("Falha ao ativar o viva-voz")
Else If Not(value) Then
audioManager.RunMethod("clearCommunicationDevice", Null)
End If
Else
'Android < 12 (API < 31): Usa setSpeakerphoneOn
audioManager.RunMethod("setMode", Array(2)) ' MODE_IN_CALL = 2
audioManager.RunMethod("setSpeakerphoneOn", Array(value))
Log("setSpeakerphoneOn chamado com valor: " & value)
End If
Else
Log("AudioManager não inicializado")
End If
End Sub
'Evento do botão para alternar o viva-voz
Sub btnToggle_Click
Dim isOn As Boolean = Not(IsSpeakerphoneOn)
SetSpeakerphoneOn(isOn)
btnToggle.Text = "Toggle Speakerphone (" & IIf(isOn, "ON", "OFF") & ")"
End Sub
'Função para verificar o estado atual do viva-voz
Sub IsSpeakerphoneOn As Boolean
Dim jo As JavaObject
jo.InitializeContext
Dim audioManager As JavaObject = jo.RunMethod("getSystemService", Array("audio"))
If audioManager.IsInitialized Then
Return audioManager.RunMethod("isSpeakerphoneOn", Null)
Else
Log("AudioManager não inicializado")
Return False
End If
Fim Sub[/CÓDIGO]