hai provato Tasker App Factory? è un plugin
non lo conosco perchè se devo creare app lo faccio ocn altro, però magari ti può andar bene
Si scusa, mi riferivo a "Tasker App Factory"
Xiaomi Mi5 Black
Rom: Miui Rom V8
Recovery: TWRP V8
Gestore telefonico: VODAFONE
Gli ho dato un'occhiata veloce e l'help dice:
Monitor Service
Most child apps include a service which constantly monitors for events. If you know that you don't need to monitor events anymore (in-between app launches) you can use the Disable action in the Tasker category to stop it.
It will be automatically started again next time the app is launched.
L'app viene fatta partire ovviamente come un servizio e dovrai tu in qualche modo chiamare l'azione tasker\disabilita.
Questo lo puoi fare in diversi modi (esempio una notifica permanente con pulsante) dipende dalle tue capacità con tasker.
Poi al riavvio del telefono l'app dovrebbe partire automaticamente.
Non ho provato nulla.
Ciao @shev100, nessun problema per il numero delle domande, anzi mi fa piacere la tua determinazione nel voler comprendere, e poi, dato che in un certo qual modo ho una certa parte nel tuo ingresso nel mondo Java, mi tocca rispondere (scherzo naturalmente, lo sai che mi fa piacere. Prima di cominciare è necessaria una precisazione "semantica". In Tasker, Pent, per semplificare la vita a noi utenti ha usato per le sue azioni di Java in Tasker, dei termini leggermente diversi da quelli propri di Java. Per cui quando noi in Tasker noi troviamo "function" in realtà ci stiamo riferendo ad un metodo di Java, così come con Param in realtà ci riferiamo agli argomenti in Java. Ok, detto questo consentimi ora di mostrarti il codice di un semplice programma di Java. Non ti preoccupare se non capirai il significato (è più che normale), mi serve solo per introdurre dei concetti utili per rispondere alle tue domande.
public class Saluto {
public static void main(String[] args) {
System.out.println("Ciao Shev");
}
}
Questo codice rappresenta un programma completo di Java il cui scopo è quello di mostrare a schermo una scritta. Vediamo in particolare. La linea 1 (in blu) contiene la parola class. Questa parola serve a indicare il nome che avrà il nostro *programma. Come vedi la linea termina con { anche questa di colore blu, e dopo vedremo perchè. La linea successiva (verde) è un metodo (funzione in Tasker). Nello specifico questo particolare metodo serve a eseguire il programma. L'ultima linea (in rosso) è l'istruzioe da eseguire, cioè quella che consentirà di visualizzare la scritta sullo schermo). Infine abbiamo le due } che chiudono le due { precedentemente aperte. Naturalmente va da sè che in un programma Java possiamo avere tanti metodi e tantissime istruzioni da eseguire. Comunque, questo programma per poter essere utilizzato deve essere prima compilato (tramite il compilatore di Java). Il risultato della compilazione sarà un file dal nome Saluto.class Il file .class viene poi interpretato dalla JVM presente sul computer e quindi alla fine avremo la scritta visualizzata a schermo. In Java, per nostra fortuna, sono "incorporati" tantissimi di questi file .class che costituiscono le librerie o package che noi possiamo utilizzare nei nostri programmi direttamente senza la necessità di scriverli di volta in volta. Ed ecco che ora torniamo a Tasker. Quando in una azione Java noi andiamo a "scegliere" una Classe (scrivendo il suo nome o andandola a cercare tramite la lente di ingrandimento) non facciamo altro che dire a Tasker *di utilizzare questa specifica libreria per cui possiamo utilizzare tutti i metodi (le cosiddette funzioni in Tasker) che sono stati creati al suo interno. Spero di esser riuscito fin qui a darti un quadro di insieme sufficientemente chiaro. Ora, detto tutto questo, è possibile rispondere alle tue domande.
1) Cos'è la classe Context. Tu la hai definita un "contenitore" di altre classi. Concettualmente è esatto, ma io preferisco definirla come "il punto di ingresso verso altre classi e/o servizi di sistema che non è possibile istanziare direttamente." Cosa significa? In realtà in Java non tutte le classi ( e i servizi di sistema) possono essere utilizzate direttamente, cioè, come abbiamo detto prima, andandole a cercare nella lista tramite la lente di ingrandimento. Ecco allora che entra in gioco CONTEXT. Tramite la classe CONTEXT riusciamo ad utilizzare queste classi che non possiamo richiamare direttamente. Quali sono le classi che hanno bisogno di CONTEXT per poter essere utilizzate? Domanda da 1 milione di euro. Con l'esperienza , lo studio e la documentazione sempre a portata di mano riusciremo di volta in volta ad individuarle. In linea generale possiamo dire che sicuramente tutte le classi "Astratte" non possono essere utilizzate direttamente.
2) La classe AudioManager è una di quelle classi che non possono essere istanziate direttamente. *Quindi in Tasker hai dovuto utilizzare:
A1: Java Function [ Return:silenzioso
Class Or Object:CONTEXT Function:getSystemService
{AudioManager} (String)
Param:audio Param: Param: Param: Param: Param: Param: ]
Cioè in pratica tramite la classe CONTEXT hai "richiesto" che il metodo getSystemService
"mettesse a disposizione" determinati servizi di sistema. Naturalmente il metodo getSystemService richiede un "argomento" (o parametro) che gli indichi tra la miriade di servizi quale deve andare a "pescare" (passami il termine per nulla tecnico). Questo argomento deve essere di tipo String e questo è specificato con (String. *Quindi la parola "audio" passata come argomento (parametro) indica a Java che i servizi richiesti fanno parte della sottoclasse AUDIO_SERVICE che è una sottoclasse della classe AudioManager che trovi indicata tra le parentesi graffe. *Tutto questo viene "tradotto" internamente da Tasker in linguaggio Java, per cui Java "vedrà" il comando : Context.getSystemService(Context.AUDIO_SERVICE)
3) Da dove viene fuori la parola audio? Certamente non viene fuori a caso. Fa parte di una "lista" di parole ( o meglio, di nomi) che utilizzate come argomenti della funzione getSystemService permettono di gestire i servizi cui fanno riferimento. La lista dei nomi utilizzabili è definita in Java e la puoi trovare nella pagina del sito Android Developer in sui si parla della classe Context. Per fare qualche esempio: se tu avessi utilizzato come argomento del metodo getSystemService la parola wifi saresti stato indirizzato a WIFI_SERVICE (classe principale WifiManager). Oppure con la parola power a POWER_SERVICE (PowerManager) e così via.
4) Return, come hai già capito, è l'oggetto che viene restituito come risultato della funzione Java. Tra le parentesi graffe vicino alla parola Object viene indicato il "tipo" di oggetto restituito. Quindi nel nostro caso abbiamo "Return {Object}" che sta a indicare un oggetto generico . Se, per esempio, noi avessimo "Return {Bool}" questo starebbe a significare che l'oggetto è di tipo logico (o booleano) quindi avrebbe un "valore" di vero o falso a seconda del caso. Altro esempio: {String} indicherebbe un oggetto di tipo stringa e così via.
5) Con la seconda funzione Java noi possiamo finalmente utilizzare l'oggetto creato in precedenza . A2: Java Function [ Class Or Object:silenzioso
Function:setRingerMode{} (int)
Param: 0 .....
setRingerMode è il metodo e lo trovi indicato nella tabella Public Methods" del sito. In questa tabella sono indicati tutti i metodi che puoi utilizzare e che fanno parte della classe AudioManager. Inoltre, per ogni metodo viene indicato che tipo di risultato ritorna e anche la "sintassi" che è necessario utilizzare con questo metodo. Nel nostro caso è semplice : il nostro metodo, infatti, richiede solo un argomento di tipo int (numero intero). Questo numero intero è una "costante" quindi il valore è definito ed immutabile. Gli int che possono essere utilizzati come argomenti per il metodo setRingerMode sono tre: 0,1,2. Il numero 0 corrisponde a RINGER_MODE_SILENT (modo silenzioso) - il numero 1 corrisponde a RINGER_MODE_VIBRATE (modo vibrazione) e il numero 2 corrisponde a RINGER_MODE_NORMAL (modo normale). Per quanto riguarda le parentesi graffe queste sono una parte significativa della sintassi Java. Servono a delimitare un blocco di istruzioni. Per cui tutto quello che si trova tra le { } è da considerarsi come istruzioni da eseguire. In Java le istruzioni sono eseguite blocco dopo blocco, ma naturalmente è facile trovare blocchi nidificati, come puoi vedere dal semplice esempio descritto all'inizio di questo post. Bene, shev credo di aver risposto a tutte le tue domande e spero di essere riuscito a farlo in maniera sufficientemente chiara e comprensibile. Se così non fosse chiedi pure. Tutto questo in un primo momento potrebbe sembrarti troppo difficile o complicato e quindi potresti scoraggiarti. Ti invito caldamente a perseverare. Quello che adesso ti *sembra di difficile (o addirittura impossibile) comprensione, poco alla volta apparirà sempre più chiaro e semplice. Java non è difficile (non più di altri linguaggi) e può essere imparato con un pò d'impegno. D'altra parte se ci sto riuscendo io, figurati se non puoi farcela tu. Ciao e a presto.
*
Ultima modifica di Odysseos; 27-10-15 alle 07:30
Tasker spiegato dettagliatamente e in italiano. Guarda i video sul mio canale You Tube Tutorial Tasker
In effetti una discussione sull'argomento ci sarebbe... questa: https://www.androidiani.com/forum/sh...d.php?t=381056 se hai problemi ad aprirla con Tapatalk utilizza Androidiani app
Non l'ho mai segnala perché non serve molto qui (abbiamo già il buon Odysseos che spiega bene ed è molto preparato ).... Comunque se vuoi farci un salto ti garantisco che troverai dei maestri della programmazione Java
Non risponderò in PM a richieste di aiuto sul modding. C'è il forum per questo, se usato correttamente.
Se ti sono stato d'aiuto usa il tasto Thanks in basso a sinistra.
Prima di postare leggi sempre la prima pagina del thread.
Odysseos ti ringrazio davvero tanto per la tua attenta, precisa e semplice (volutamente resa così per farmela capire intendo) risposta!! Ho sicuramente capito un pò di più il funzionamento e spero di poter ampliare il discorso, magari proprio nella discussione indicata da N1m0Y (l'avevo detto io che mi avresti trovato un link ). Però tienti pronto che potrei farti qualche altra domanda Per adesso hai saziato la mia curiosità. Ora rimango in attesa del video tutorial A proposito di guide ho aggiunto il link al tuo post nella discussione che ho creato io sempre di tasker.
N1m0Y grazie per avermi indicato e trovato la discussione, ora vado ad iscrivermi giusto per seguirla un pò e vedere se ci capisco qualcosa. Chissà, forse qualcuno mi aiuterà con un' altra fissa che ho in questi giorni e che è sempre legata a tasker. Vorrei riuscire a decompilare e ricompilare l'app nfc di sistema per poter far leggere i tag anche col telefono spento e bloccato, così da far compiere a tasker alcune cose.
Ps: a proposito delle due discussioni, non si potrebbero unire così da averne una? però tenendo in prima pagina le cose dell'altra discussione (personalmente trovo un pò più appropriato come messaggio di apertura proprio quella discussione). Voi cosa ne pensate?
Ultima modifica di shev100; 14-10-15 alle 21:49
Odysseos (14-10-15)
Ciao shev, sono contento di esserti stato utile e di aver contribuito a schiarirti le idee su Java. Grazie per aver aggiunto il link alla tua discussione. Per quanto riguarda il thread segnalato da @N1m0Y l'avevo già visto tempo fa, purtroppo però mi sembra che non sia molto "frequentato". Peccato, poteva essere un ottimo riferimento. Inoltre, se ti va, domani ti posto un link dal quale scaricare un ottimo libro su Java, molto ben fatto e chiaro e semplice nell'esposizione. Naturalmente è tutto legale il libro è messo gratuitamente a disposizione proprio dall'autore. Si riferisce alla versione 5 di Java (quindi di 6/7 anni fa) ma è tuttora validissimo. Ancora, se non l'hai già fatto, ti consiglio di installare il JDK e di cominciare a scrivere un po' di codice. Ti assicuro che ti divertirai. Riguardo al tuo progetto per L'NCF, non so se è possibile però tentare non nuoce, hai visto mai...A proposito, non ho capito a quali discussioni ti riferisci nel Post Scriptum
Tasker spiegato dettagliatamente e in italiano. Guarda i video sul mio canale You Tube Tutorial Tasker
Mi sa che è impossibile decompilare un'app per modificare il codice sorgente (fai prima a dirlo allo sviluppatore oppure ricrearla da 0)... Comunque chiedi li per maggiori informazioni
Si fa prima a chiudere questa discussione e continuare di la... In prima pagina aggiungi il link alla vecchia discussione (così da avere sempre sottomano i vecchi post) e siamo apposto.
Siete d'accordo?
@DroidME
Ultima modifica di N1m0Y; 14-10-15 alle 23:18
Non risponderò in PM a richieste di aiuto sul modding. C'è il forum per questo, se usato correttamente.
Se ti sono stato d'aiuto usa il tasto Thanks in basso a sinistra.
Prima di postare leggi sempre la prima pagina del thread.
Odysseos (14-10-15)
Ragazzi, una domanda su Autovoice. Io in genere lo uso sempre tramite "ok google". Va tutto bene, ma ho notato che mi aggiunge sempre un punto finale al comando. Mi spiego : se io dico per es. "Spegni luce" il comando restituito da Autovoice risulta "Spegni luce." (notare il punto in colore rosso). In condizioni normali non è un problema, ma mi dà fastidio se devo verificare il comando in un If in Tasker. Sapete perché avviene questo e se esiste un modo per eliminarlo?
Tasker spiegato dettagliatamente e in italiano. Guarda i video sul mio canale You Tube Tutorial Tasker
N1m0Y (15-10-15)