Italian Non so se è possibile.

Blu.Scuro

Member
Buongiorno a tutti.
Ho dei dubbi irrisolti a proposito di una cosa che ho già costruito.
Sarebbe un'app che mi premette di controllare l'accensione e lo spegnimento di wifi e dati.

ho creato l'app ma mi serve che sia un servizio... banale se non fosse per il fatto che dovrebbe essere settato dall'utente.

Avete un'idea, uno skeleton di un servizio con un dialog?

Scusate se sono così banale.
 

LucaMs

Expert
Licensed User
Longtime User
Più che banale non è chiarissimo cosa/come dovrebbe fare: accendere/spegnere a tempo predeterminato (impostato dall'utente)?.

Comunque è ovvio che se l'utente deve impostare alcune impostazioni, dovrà avere un'interfaccia grafica per farlo. Dopodiché termini (Activity.Finish) l'Activity e avvii il servizio.


[P.S. Uhm, risposta troppo veloce: "e quando il servizio è attivo, come faccio a dare la possibilità all'utente di CAMBIARE le impostazioni?"]
[Beh, pappo, magari a stomaco pieno qualche neurone si risveglierà :D]
 

Blu.Scuro

Member
Buongiorno!

Ho finito un'app che serve per connettere a tempo un telefono con due parametri : la frequenza in minuti e la durata sempre in minuti
dovrei passare questi due parametri al servizio, posso anche lasciare accesa l'app.

sono i due passi che mi mancano:

1) come passo i parametri al servizio (scrivendo un file?)
2) come faccio a sapere se un servizio è attivo?

In effetti se è possibile scrivere un file condiviso, si potrebbe mettere un byte che letto dal servizio dica allo stesso di "killarsi" da solo
cambio i parametri e rilancio il servizio... può funzionare?

Grazie del supporto.
 

Blu.Scuro

Member
... per esempio, impostata la frequenza a 8 e la durata a 2, non fa altro che, dopo 8 minuti accendere il wifi per 2, poi lo spegne e ricomincia.
ovvio che se i minuti diventano 10 dovrà fare in modo che il servizio venga terminato, spedire i nuovi parametri e riavviare il servizio.
 

Blu.Scuro

Member
Per i posteri.
Per creare uno scambio di dati tra activity si usa CallSubDelayed
Per salvare i dati dei controlli di un'activity si può usare StateManager
 

LucaMs

Expert
Licensed User
Longtime User
Per i posteri.
Per creare uno scambio di dati tra activity si usa CallSubDelayed
Per salvare i dati dei controlli di un'activity si può usare StateManager

Per i contemporanei: lo sapevo, ma non avevo capito un tubo della domanda, evidentemente :D

Puoi usare altri due modi per scambiare dati tra activity:
1) usare variabili globali a livello di processo
2) usare gli Extras degli Intent
 

LucaMs

Expert
Licensed User
Longtime User
Sicuramente il più semplice è l'1, ovvero variabili (anche complesse, oggetti creati da tue classi) globali (process).

Ci sarebbe anche un altro metodo, ancora migliore perché più "stabile", ovvero salvare i dati sul "disco" e renderli disponibili a tutti i moduli. Questo è ovviamente un po' più complesso, dipende dal modo in cui vuoi salvarli.

KeyValueStore (è una classe, quindi perfino modificabile) è il metodo più pratico e veloce, per questo. Si basa su un DB SQLite ma l'utente (programmatore) non ha nemmeno la necessità di conoscere come gestire un database, per poterlo usare. Si potrebbe avere una variabile process global di tipo KeyValueStore memorizzata nel Main o, con le nuove versioni di B4A, nel Service Starter.

Ovviamente, avere un contenitore di questo genere per tutti i tipi di passaggi di dati tra tutti i moduli creati è comodo ma è anche poco leggibile, a meno che non si usino nomi di variabili molto auto-esplicativi.
 
Last edited:

Blu.Scuro

Member
Allora... se li metto qui sono visibili a tutte le activity?

Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim timer1 As Timer
Dim Delay As Int
Dim Intere As Int
Dim Interi As Int
Dim Attiva As Int
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Sì, KVS funziona ovunque.

Sì, se metti quelle variabili nella Process_Globals di un modulo (Activity, Service o Module) saranno visibili da tutti gli altri moduli; per usarle, dovrai far precedere il loro nome dal nome del modulo nel quale sono dichiarate, separati da un punto; se quella Process_Globals è del Service Starter (cosa consigliata): Starter.Intere = 100.

Ah, il timer però funzionerà solo nel modulo nel quale è dichiarato (gli eventi legati al timer dovranno stare nello stesso modulo).
 

Blu.Scuro

Member
Grande LucaMs!!!

Per il timer c'ero arrivato.
L'ultimo punto (per la gestione dei settings e per il passaggio dei dati al service) qual sarebbe la File.Dir... da usare per la condivisione?
in parole semplici, quale sarebbe la Directory raggiungibile da entrambe le applicazioni?
Per il resto se tutto fila liscio avrei tutti gli elementi.

:)
 

Blu.Scuro

Member
Scusa sono il a non essere chiaro, l'app è divisa in due parti:
1) La parte visuale per settare i parametri che vengono scritti sul DB
2) il Service che prende i parametri del DB e li utilizza.
 
Top