|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Accueil → WINDEV 25 → Como não desligar a tela do Android com WLanguage em um projeto Windev Mobile |
Como não desligar a tela do Android com WLanguage em um projeto Windev Mobile |
Débuté par Boller, 24 juil. 2024 06:42 - 2 réponses |
| |
| | | |
|
| |
Membre enregistré 4 520 messages |
|
Posté le 24 juillet 2024 - 06:42 |
Como não desligar a tela do Android com WLanguage em um projeto Windev Mobile
Para evitar que a tela do Android seja desligada em um projeto WinDev Mobile usando a linguagem WLanguage, você pode usar a função KeepScreenOn para manter a tela ativa. Aqui está um exemplo:
wlanguage Copiar código // Ativar a manutenção da tela ligada KeepScreenOn(True) Certifique-se de chamar essa função no momento apropriado no seu código, por exemplo, quando a tela estiver ativa e você desejar evitar que ela desligue automaticamente. Lembre-se de desativar essa opção quando não for mais necessário:
wlanguage Copiar código // Desativar a manutenção da tela ligada KeepScreenOn(False) Isso deve ajudar a controlar o comportamento de desligamento da tela no seu projeto WinDev Mobile.
E com Java ?
Em um aplicativo Android usando Java, você pode evitar que a tela seja desligada programaticamente utilizando a classe PowerManager. Aqui está um exemplo simples:
java Copiar código import android.content.Context; import android.os.PowerManager; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity;
public class SuaAtividade extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sua_layout);
// Obtenha o serviço PowerManager PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
// Mantenha a tela ligada enquanto a atividade estiver em execução PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "SeuApp:WakeLock"); wakeLock.acquire(); }
@Override protected void onDestroy() { super.onDestroy();
// Libere o WakeLock ao destruir a atividade if (wakeLock != null && wakeLock.isHeld()) { wakeLock.release(); } } } Certifique-se de adicionar a permissão WAKE_LOCK no seu arquivo AndroidManifest.xml:
xml Copiar código <uses-permission android:name="android.permission.WAKE_LOCK" /> Este código mantém a tela ligada enquanto a atividade está em execução e libera a trava ao destruir a atividade para não consumir recursos desnecessários.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 520 messages |
|
Posté le 15 juillet 2025 - 14:33 |
Segue abaixo o código para o Windev Mobile para Android e iOS não dormir a tela permanecer abri a até ser solicitado ou até terminar uma tarefa:
Aqui está o código para manter a tela ativa no Windev Mobile para Android e iOS:
Este código fornece uma solução completa para manter a tela ativa no Windev Mobile. As principais funcionalidades incluem:
**Funcionalidades principais:**
- `AtivarTelaPermanecer()` - Mantém a tela ligada indefinidamente - `DesativarTelaPermanecer()` - Restaura comportamento normal - `AtivarTelaPorTempo()` - Mantém ativa por tempo determinado - `VerificarStatusTela()` - Verifica status atual
**Características técnicas:**
**Para Android:**
- Usa `FLAG_KEEP_SCREEN_ON` (método recomendado) - Alternativa com `PowerManager` e `WAKE_LOCK` (comentada) - Execução via `AndroidExecuteCode()`
**Para iOS:**
- Usa `setIdleTimerDisabled` do `UIApplication` - Execução via `iOSExecuteCode()`
**Permissões necessárias:**
- Android: `WAKE_LOCK` (apenas se usar PowerManager) - iOS: Nenhuma permissão especial
**Exemplo de uso prático:**
```wlanguage // Manter tela ativa durante download AtivarTelaPermanecer() FazerDownload() DesativarTelaPermanecer()
// Ou por tempo determinado (10 minutos) AtivarTelaPorTempo(600) ```
O código é otimizado para preservar bateria e inclui controles de segurança para evitar que a tela fique ativa desnecessariamente.
// ============================================================================= // CONTROLE DE TELA ATIVA - WINDEV MOBILE (Android e iOS) // =============================================================================
// Declaração de variáveis globais gbTelaAtiva is boolean = False gnTimerTela is int = 0
// ============================================================================= // FUNÇÃO: AtivarTelaPermanecer // Descrição: Mantém a tela ligada impedindo o modo sleep // Plataforma: Android e iOS // ============================================================================= PROCEDURE AtivarTelaPermanecer()
IF InAndroidMode() THEN // Para Android - usando FLAG_KEEP_SCREEN_ON CallDLL32(“android.view.WindowManager$LayoutParams”, “FLAG_KEEP_SCREEN_ON”, 128)
``` // Aplicar a flag na janela atual sJavaCode is string = [ Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); ]
AndroidExecuteCode(sJavaCode)
// Método alternativo usando PowerManager (requer permissão WAKE_LOCK) sJavaCodePower is string = [ PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock( PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "MyApp:MyWakeLockTag" ); wakeLock.acquire(); ]
// Descomente a linha abaixo se preferir usar PowerManager // AndroidExecuteCode(sJavaCodePower)
gbTelaAtiva = True Info("Tela configurada para permanecer ativa (Android)") ```
ELSE IF InIOSMode() THEN // Para iOS - desabilitar idle timer sObjCCode is string = [ [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; ]
``` iOSExecuteCode(sObjCCode) gbTelaAtiva = True Info("Tela configurada para permanecer ativa (iOS)") ```
ELSE // Modo simulador ou outras plataformas Info(“Funcionalidade disponível apenas em dispositivos móveis”) END
// ============================================================================= // FUNÇÃO: DesativarTelaPermanecer // Descrição: Restaura o comportamento normal da tela (permite sleep) // Plataforma: Android e iOS // ============================================================================= PROCEDURE DesativarTelaPermanecer()
IF InAndroidMode() THEN // Para Android - remover FLAG_KEEP_SCREEN_ON sJavaCode is string = [ Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); ]
``` AndroidExecuteCode(sJavaCode)
// Se usando PowerManager, liberar o wake lock sJavaCodePower is string = [ if (wakeLock != null && wakeLock.isHeld()) { wakeLock.release(); } ]
// AndroidExecuteCode(sJavaCodePower)
gbTelaAtiva = False Info("Tela restaurada ao comportamento normal (Android)") ```
ELSE IF InIOSMode() THEN // Para iOS - reabilitar idle timer sObjCCode is string = [ [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; ]
``` iOSExecuteCode(sObjCCode) gbTelaAtiva = False Info("Tela restaurada ao comportamento normal (iOS)") ```
END
// ============================================================================= // FUNÇÃO: AtivarTelaPorTempo // Descrição: Mantém a tela ativa por um tempo determinado // Parâmetros: nSegundos - Tempo em segundos para manter ativa // ============================================================================= PROCEDURE AtivarTelaPorTempo(nSegundos is int)
// Ativar tela AtivarTelaPermanecer()
// Configurar timer para desativar automaticamente gnTimerTela = Timer(nSegundos * 1000, TimerDesativarTela)
Info(StringBuild(“Tela ficará ativa por %1 segundos”, nSegundos))
// ============================================================================= // FUNÇÃO: TimerDesativarTela // Descrição: Função chamada pelo timer para desativar a tela // ============================================================================= PROCEDURE TimerDesativarTela()
// Parar o timer EndTimer(gnTimerTela)
// Desativar tela DesativarTelaPermanecer()
Info(“Tempo expirado - Tela voltou ao comportamento normal”)
// ============================================================================= // FUNÇÃO: VerificarStatusTela // Descrição: Retorna se a tela está configurada para permanecer ativa // Retorno: boolean - True se ativa, False se normal // ============================================================================= PROCEDURE VerificarStatusTela() : boolean
RESULT gbTelaAtiva
// ============================================================================= // EXEMPLO DE USO EM UM BOTÃO OU PROCESSO // =============================================================================
// Exemplo 1: Ativar permanentemente // AtivarTelaPermanecer()
// Exemplo 2: Ativar por 5 minutos (300 segundos) // AtivarTelaPorTempo(300)
// Exemplo 3: Desativar manualmente // DesativarTelaPermanecer()
// Exemplo 4: Verificar status atual // IF VerificarStatusTela() THEN // Info(“Tela está ativa”) // ELSE // Info(“Tela em modo normal”) // END
// ============================================================================= // GERENCIAMENTO DURANTE UMA TAREFA ESPECÍFICA // =============================================================================
// Exemplo de uso durante download/upload ou processamento longo PROCEDURE ExecutarTarefaLonga()
// Ativar tela no início da tarefa AtivarTelaPermanecer()
// Simular tarefa longa FOR i = 1 TO 100 // Sua tarefa aqui (download, processamento, etc.) ProgressBar(i, “Processando… “ + i + “%”) Multitask(100) // Permite atualização da interface END
// Desativar tela ao final da tarefa DesativarTelaPermanecer()
Info(“Tarefa concluída!”)
// ============================================================================= // PERMISSÕES NECESSÁRIAS // =============================================================================
// Para Android (adicionar no arquivo AndroidManifest.xml): //
// Para iOS: Não requer permissões especiais
// ============================================================================= // NOTAS IMPORTANTES // =============================================================================
// 1. Sempre desative a funcionalidade quando não precisar mais // 2. Use com moderação para não impactar a bateria // 3. Considere implementar um timeout automático // 4. Teste em dispositivos reais, não apenas no simulador // 5. Para Android, FLAG_KEEP_SCREEN_ON é preferível ao WAKE_LOCK // 6. Para iOS, setIdleTimerDisabled é a abordagem padrão
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 520 messages |
|
Posté le 15 juillet 2025 - 14:59 |
E pra isso não rodar no WMDev e deixar testar o app, faz um if com um boolean e só passa se for compilado se for pelo Xcode.
O WMDev USA o COMPILE sendo assim não roda chamadas Java o Xcode de baixo nível apenas funções que o compilador WLanguage reconhece e que estejam liberadas. Por isso no WMDev é obrigatório por um boolean pra dizer se usa ou não a chamada da procedure java android ou Xcode swift!
Glo_Wmdev is boolean
If Glo_Wmdev = false
AtivarTelaPermanecer()
End
….
If Glo_Wmdev = false
DesativarTelaPermanecer()
End
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modifié, 15 juillet 2025 - 15:03 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|