Italian Gestione USB e alimentazione

Fulvio75

Well-Known Member
Licensed User
ok accessibity service funziona abbastanza semplice da usare ora visualizzo il menù di spegnimento
 

sirjo66

Well-Known Member
Licensed User
Longtime User
puoi postare il codice che hai usato ??
mi piacerebbe vederlo, perchè anche io uso accessibility service per altre cose, ma mi trovo un po' incasinato e quando hai scritto "abbastanza semplice" vorrei capire se sono io che sbaglio
 

Fulvio75

Well-Known Member
Licensed User
puoi postare il codice che hai usato ??
mi piacerebbe vederlo, perchè anche io uso accessibility service per altre cose, ma mi trovo un po' incasinato e quando hai scritto "abbastanza semplice" vorrei capire se sono io che sbaglio

ok... appena riesco lo posto
 

Star-Dust

Expert
Licensed User
Longtime User
ok accessibity service funziona abbastanza semplice da usare ora visualizzo il menù di spegnimento
Sono molto felice che sei riuscito con poche indicazioni. Ti faccio i miei complimenti
 

Fulvio75

Well-Known Member
Licensed User
Sono molto felice che sei riuscito con poche indicazioni. Ti faccio i miei complimenti
Grazie, con molta pazienza si riesce a fare tutto ho fatto anche l'app che mancava sulla mia macchina e funziona... 4 mesi di prove e un po' di pazienza, appena ho tempo scrivo la guida, ovvio che funziona per lo shutdown per altro non so
 

Fulvio75

Well-Known Member
Licensed User
non mi sono scordato sto facendo delle prove per vedere se funziona e poi... come faccio a creare un progetto senza interfaccia? tolgo solo il Layout e non lo lancio?
 

Sagenut

Expert
Licensed User
Longtime User
Visto che quì quello che interessa mi pare sia aprire i menù ed eseguire delle gesture sfruttando Accessibility, puoi anche solo postare le parti di codice rilevanti e spiegare il metodo che hai adottato.
 

Fulvio75

Well-Known Member
Licensed User
Allora...

prima di tutto mettere in manifest:

B4X:
AddServiceText(AccServ,
 <intent-filter>
         <action android:name="android.accessibilityservice.AccessibilityService" />
     </intent-filter>
      <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/windowchangedetectingservice" />
 )

 SetServiceAttribute(AccServ, android:permission, "android.permission.BIND_ACCESSIBILITY_SERVICE")

in main:

B4X:
#Region  Project Attributes
    #ApplicationLabel: test
    #VersionCode: 1
    #VersionName: 123
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
   #AdditionalRes: C:\Progetti B4X\B4A\Progetti\nome progetto\resAccessibility\res, com.tillekesoft.accessibilityservices[/B]
#End Region
 

Fulvio75

Well-Known Member
Licensed User
LA CONNESSIONE INTERNET DOVE MI TROVO E' PESSIMA VA E VIENE PER CUI LO FARO' A TRATTI APPENA TORNA QUINDI MAGARI PASSERA' DEL TEMPO
 

Fulvio75

Well-Known Member
Licensed User
sempre in main:

B4X:
Sub Activity_Create(FirstTime As Boolean)
    
    If FirstTime = True Then
        'Activity.LoadLayout("layMain")   
        StartService(AccServ)
        CallSubDelayed(AccServ,"Check_ServiceEnabled")
    End If
    
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Application_Exit
    
    'Chiude l'applicazione forzatamente
    
    Dim jo As JavaObject
    jo.InitializeContext
    jo.RunMethod("finishAndRemoveTask", Null)
 
    ExitApplication
    
End Sub

preparare un module service e scriverci:

il mio è AccServ che bisogna poi specificarlo in (If AccessibilitySevices.IsAccessibilityServiceEnabled("xx.xxxxxx.powermenu/.accserv") = False Then)


B4X:
#Region  Service Attributes
    #StartAtBoot: false
#End Region

#Extends: com.tillekesoft.accessibilityservices.AccessibilityEventsListenerWrapper

Sub Process_Globals

    Public AccessibilitySevices As AccessibilityEventsListener
    Private AccessibilitySevicesCostants As AccessibilityConstants
    'Public PowerDialogShowed As Boolean = False
    
End Sub

Sub Service_Create

    'Inizializzo il servizio
    AccessibilitySevices.initialize("Accessibility")

End Sub

'Sub Accessibility_OnAccessibilityEvent (Event As Object, node As Object)
'   
'    '***QUESTO EVENTO VIENE SEMPRE RICHIAMATO DA QUALSIASI AZIONE SULL'APP USARE PowerDialogShowed = TRUE PER NON ENTRARCI NUOVAMENTE SE NO COMPAIONO
'    'PIU' POWERMENU
'   
'    'Visualizzo il dialog dello spegnimento
'    If PowerDialogShowed = False Then
'        PowerDialogShowed = True
'        AccessibilitySevices.PerformGlobalAction(AccessibilitySevicesCostants.GLOBAL_ACTION_POWER_DIALOG )
'        CallSubDelayed(Main,"Application_Exit")
'    End If
'   
'End Sub

Sub Show_PowerMenu
        
    AccessibilitySevices.PerformGlobalAction(AccessibilitySevicesCostants.GLOBAL_ACTION_POWER_DIALOG)
    CallSubDelayed(Main,"Application_Exit")
    
End Sub

Sub Service_Start (StartingIntent As Intent)
    
    Service.StopAutomaticForeground
    
End Sub

Sub Service_Destroy

End Sub

Sub Check_ServiceEnabled
    
    'SERVE A VISUALIZZARE LA SCHERMATA DI CONSENSO ALL'UTILIZZO DI ACCESSIBILITYSERVICES
    
    If AccessibilitySevices.IsAccessibilityServiceEnabled("xx.xxxxxx.powermenu/.accserv") = False Then
                
        Dim Intent1 As Intent
        Intent1.Initialize( "android.settings.ACCESSIBILITY_SETTINGS", "" )
        StartActivity( Intent1 )

    Else
        
        'se il servizio è abilitato visualizzo il PowerMenu
        Show_PowerMenu
        
    End If
    
End Sub
 

Fulvio75

Well-Known Member
Licensed User
Cercate la libreria B4AAccessibilityService qui sul forum e copiate i file in AddLibrary in B4A e copiate la cartella resAccessibiltyService nella cartella di progetto dove punterà:
#AdditionalRes: C:\Progetti B4X\B4A\Progetti\nome progetto\resAccessibility\res, com.tillekesoft.accessibilityservices

Non posso caricarla io perchè non ho linea e mi butta fuori....
 

Fulvio75

Well-Known Member
Licensed User
Funzionamenti:

Sulla box android che ho in macchina con A12spegne tutto senza menù, però è android box

Sul telefono samsung compare il menù di spegnimento

Sul telefono che ho io che ha il Launcer modificato non và mi dice che Accessibility Service è bloccato da una applicazione attiva che ne blocca i permessi quindi nulla

se il telefono non ha il launcer originale non funzionano i permessi di accessibilità
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Grazie per aver condiviso il codice.
Quello che mi interessava vedere era l'evento OnAccessibilityEvent per capire tu come gestivi le variabili "event" e "node", ma ho visto che non lo utilizzi.
Ma una volta che appare il menu di spegnimento, come fai allora a dare conferma ??
 

Fulvio75

Well-Known Member
Licensed User
Grazie per aver condiviso il codice.
Quello che mi interessava vedere era l'evento OnAccessibilityEvent per capire tu come gestivi le variabili "event" e "node", ma ho visto che non lo utilizzi.
Ma una volta che appare il menu di spegnimento, come fai allora a dare conferma ??
Chiamo show_powermenu da Check_ServiceEnabled per visualizzarlo così da saltare l'evento e far comparire il menu quando voglio e solo una volta.

Compare il menu di spegnimento e fai quello che fai di solito, clicchi sopra con il dito su spegni oppure riavvia
 

Fulvio75

Well-Known Member
Licensed User
In Activity_Create puoi commentare StartService(AccServ) il servizio parte ugualmente anche senza richiamarlo, non chiedermi perchè non lo so parte sarà forse che i servizi si avviano in automatico
B4X:
Sub Activity_Create(FirstTime As Boolean)
   
    Log("Start")

    If FirstTime = True Then
       
        Log("FirstTime")
'non visualizza il layout
        Activity.Finish
       
        'Activity.LoadLayout("layMain")
        'StartService(AccServ)
        CallSubDelayed(AccServ,"Check_ServiceEnabled")

    End If
   
End Sub
 

Fulvio75

Well-Known Member
Licensed User
Poi... cosi va meglio

B4X:
Sub Check_ServiceEnabled
   
    'SERVE A VISUALIZZARE LA SCHERMATA DI CONSENSO ALL'UTILIZZO DI ACCESSIBILITYSERVICES
   
    If AccessibilitySevices.IsAccessibilityServiceEnabled("xx.xxxx.powermenu/.accserv") = False Then
       
        Log("Show accessibility settings")
   
        Dim Intent1 As Intent
        Intent1.Initialize( "android.settings.ACCESSIBILITY_SETTINGS", "" )
        StartActivity( Intent1 )

        ExitApplication

    Else
       
        'se il servizio è abilitato visualizzo il PowerMenu
        Show_PowerMenu
       
        ExitApplication

    End If
   
End Sub
 

sirjo66

Well-Known Member
Licensed User
Longtime User
fai quello che fai di solito, clicchi sopra con il dito su spegni oppure riavvia

Ah ok, mi sembrava di aver capito che volevi automatizzare il tutto, e non dover avere l'intervento de dito
 

sirjo66

Well-Known Member
Licensed User
Longtime User
il servizio parte ugualmente anche senza richiamarlo, non chiedermi perchè
B4X:
CallSubDelayed(AccServ,"Check_ServiceEnabled")

Parte in automatico perchè è CallSubDelayed che lo fa partire
 
Top