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
Sono molto felice che sei riuscito con poche indicazioni. Ti faccio i miei complimentiok accessibity service funziona abbastanza semplice da usare ora visualizzo il menù di spegnimento
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 soSono molto felice che sei riuscito con poche indicazioni. Ti faccio i miei complimenti
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")
#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
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
#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
Chiamo show_powermenu da Check_ServiceEnabled per visualizzarlo così da saltare l'evento e far comparire il menu quando voglio e solo una volta.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 ??
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
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
fai quello che fai di solito, clicchi sopra con il dito su spegni oppure riavvia
il servizio parte ugualmente anche senza richiamarlo, non chiedermi perchè
B4X:CallSubDelayed(AccServ,"Check_ServiceEnabled")
in teoria ma non si può sul telefono... lo fa sulla boxAh ok, mi sembrava di aver capito che volevi automatizzare il tutto, e non dover avere l'intervento de dito
perchè c'e' questo pezzetto? CallSubDelayed(AccServ....Parte in automatico perchè è CallSubDelayed che lo fa partire