Italian B4A - Chiusura Programma e ToolBar

marco.canta

Active Member
Licensed User
Longtime User
Ciao, ho bisogno di un vostro aiutino ... anzi doppio aiutino ;)
Sto realizzando un applicazione su Android con hardware dedicato (ora lo sto sviluppando su un tablet Samsung), dove gira solo il mio applicativo.
Nonostante svariati tentativi e ricerche non sono riuscito a risolvere due problematiche.
1. L'applicazione va in esecuzione in FullScreen ma facendo scorrere il dito dal basso dello scherme appare il menu classino " < o = " vorrei evitare che questo accada.
2. Per chiudere il programma vorrei usare un Button o Label Specifica che se tenuto premuto più di 5 sec chiude l'applicazione.

Grazie Marco :)
 

Sagenut

Expert
Licensed User
Longtime User
Per avere l'app a Full Screen senza altre alternative devi guardare questo:
Kiosk Mode
Controlla bene che non ci sia una versione più aggiornata del metodo descritto.
Attenzione che devi davvero prevedere un pulsante o altro per chiudere l'app altrimenti penso che l'unica soluzione sia il riavvio del telefono.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Per il punto (2) puoi fare un Button o una Label ed utilizzare l'evento LongClick però non credo si arrivi a 5 secondi, secondo me potresti aggiungere una richiesta all'utente se è sicuro che vuole uscire dal programma.
 

Sagenut

Expert
Licensed User
Longtime User
Oppure puoi intercettare il Touch su un Panel.
Con l'evento Action_down fai partire un timer da 1 secondo che incrementa di 1 una variabile. Se la variabile arriva a 5 sono passati i 5 secondi.
Con l'evento Action_up disabiliti il timer e rimetti la variabile a 0 per bloccare il conteggio se uno ci ripensa e toglie il dito prima di essere arrivato a 5 secondi.
Magari non è un metodo molto pulito però si avvicina di più a quello che vuoi.
 

marco.canta

Active Member
Licensed User
Longtime User
Oppure puoi intercettare il Touch su un Panel.
Con l'evento Action_down fai partire un timer da 1 secondo che incrementa di 1 una variabile. Se la variabile arriva a 5 sono passati i 5 secondi.
Con l'evento Action_up disabiliti il timer e rimetti la variabile a 0 per bloccare il conteggio se uno ci ripensa e toglie il dito prima di essere arrivato a 5 secondi.
Magari non è un metodo molto pulito però si avvicina di più a quello che vuoi.

Ok, per la chiusura del programma ho usato il tuo suggerimento e funziona perfettamente. Grazie
 

marco.canta

Active Member
Licensed User
Longtime User
Per avere l'app a Full Screen senza altre alternative devi guardare questo:
Kiosk Mode
Controlla bene che non ci sia una versione più aggiornata del metodo descritto.
Attenzione che devi davvero prevedere un pulsante o altro per chiudere l'app altrimenti penso che l'unica soluzione sia il riavvio del telefono.

Per il "Kiosk Mode" ho difficoltà, l'ultimo aggiornamento che ho trovato risale al 2017 e l'esempio allegato non funziona ...
Attualmente uso questo codice che funziona e mi ha messo a fullscreen l'app, ma quello che a me occorre, è che messa in esecuzione l'app nessuno la possa chiudere.
B4X:
Sub Activity_Create(FirstTime As Boolean)
    Activity_WindowFocusChanged(True)
    Dim lv As LayoutValues = GetRealSize
    Dim jo As JavaObject = Activity
    jo.RunMethod("setBottom", Array(lv.Height))
    jo.RunMethod("setRight", Array(lv.Width))
    Activity.Height = lv.Height
    Activity.Width = lv.Width
    
    
    Activity.LoadLayout("1")
End Sub


Sub GetRealSize As LayoutValues
    Dim lv As LayoutValues
    Dim p As Phone
    If p.SdkVersion >= 17 Then
        Dim ctxt As JavaObject
        ctxt.InitializeContext
        Dim display As JavaObject = ctxt.RunMethodJO("getSystemService", Array("window")).RunMethod("getDefaultDisplay", Null)
        Dim point As JavaObject
        point.InitializeNewInstance("android.graphics.Point", Null)
        display.RunMethod("getRealSize", Array(point))
        lv.Width = point.GetField("x")
        lv.Height = point.GetField("y")
    Else
        lv.Width = 100%x
        lv.Height = 100%y
    End If
    lv.Scale = 100dip / 100
    Return lv
End Sub

Qualche altro suggerimento ?

Grazie Marco
 
Top