CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 19
Discussione:

[APK - Source Project ] Rom Control - app per dev

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    [APK - Source Project ] Rom Control - app per dev

    Ciao a tutti

    tenetevi liberi.. ci sarà un pò da leggere

    partiamo dall'inizio:

    la app è open source e l'unica cosa che viene richiesta a chi deciderà di utilizzarla è di mantenerla tale e di rendere disponibili le sources come da licenza GNU gpl.

    La app ha la funzione di coordinare le entry del content resolver scelte dell'utente ( tramite app) e le mod che applicate nelle system app tramite lettura dei valori della key nel database, appunto applicate tramite questa app.
    in sostanza creerete una preference - diciamo un switch ad esempio - con una key e un valore che verranno scritti nel database e la system app reagirà ( secondo la mod che gli applicherete, altrimenti da sola non fa nulla)
    Quindi i requisiti per poter utilizzare la app sono che siate in grado di modificare le system app per utilizzare il content resolver per "ascoltare" il cambiamento che avviene nel database.


    Info:


    1 il codice è stato scritto da me e @daxgirl per questo progetto specifico. tutte le classi che eventualmente provengono da altri progetti opensource sono annotate come originariamente dal dev che l'ha creata.
    2 viene richiesto un minimo di conoscenza di android studio, averlo installato e funzionante, viene anche quindi richiesto l' sdk installato.
    3 sono richieste conoscenze di modding sulle app di system per rendere operativa la app altrimenti come menzionato sopra da sola non farà nulla. non sono richieste altre conoscenze di tipo java, anche se ovviamente male non fanno.
    4 non verrà di seguito spiegato come installare android studio, ne è questo il tread adatto per eventuali errori di installazione ( vedi punto 2). noi elencheremo e spiegheremo in maniera il piu esaustiva possibile le classi che abbiamo creato e come funzionano perchè anche se abbiamo messo a punto un template per aggiungere i fragment, un minimo di modifiche java vi potrete trovare a doverle fare. non potremo venire in contro a tutte le richieste specifiche perchè manterremo il codice più universale possibile e forniremo il solo "scheletro" con qualche esempio e voi lo dovrete "riemipire" con cio che serve a voi


    istruzioni iniziali ( il resto viene nei post successivi )


    1 scaricate android studio installatelo.. richiederà il jdk e l'sdk ( jdk dovreste scricarlo voi l'sdk è gia incluso in studio) e aggiornate tutto
    2 aprite la repository per il preference fragment e scaricatelo come zip. Estretelo in /cartella di studio/plugin/android/lib/templates/other/ e riavviate studio
    3 a questo punto aperto studio andate su "import project from version control" e selezionate git
    4 specificate la repository : https://github.com/daxgirl/CustomSettingsForDevs.git
    5 selezionate la cartella di destinazione e date il clona.
    6 a questo punto avete il progetto sul pc, attendete che faccia la sync di gradle e potremo poi passare all'uso vero e proprio.


    Sources:
    Github per le source della app : QUI
    Github per le sources dei template per creare i fragment : QUI

    Nei post successivi vedremo esattamente di cosa si compone la app e come e cosa modificare / aggiungere a seconda dell'uso che vogliamo andare a fare
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

  2. I seguenti 4 Utenti hanno ringraziato wuby per il post:

    carotix (06-06-16),daxgirl (05-06-16),lucadalba (22-07-16),millo1978 (03-08-16)

  3.  
  4. #2
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    Informazioni di base e struttura della app:

    1 la app usa il navigation drawer laterale e il material design. la activity è App compat per usare il pager adapter. questo puo rendere la tematura un po piu complessa ma abbiamo creato ed inserito gia due temi che possono essere modificati in styles
    2 il navigation drawer laterale si apre da sinistra e di default contiene alcuni elementi di esempio, per il momento 4 fragment e il dialog per selezionare il tema. si possono ovviamente aggiungere e rimuovere le entri senza problemi, spiegheremo dopo come
    3 i fragment nel container della mainView sono rimpiazzati in base alla posizione cliccata nel drawer. notare che le array partono sempre dalla posizione 0, quindi in questo caso troveremo posizioni 0,1,2,3,4 gia inserite come esempio. se vogliamo aggiungerne una dovremo aggiungere la entry nella string array e dovremo anche aggiungere la sua icona e titolo ( nella posizione corrispondente: esempio aggiungo una entry come posizione 0 allora dovro inserire la sua icona e il suo titolo come primi nelle array) e creare il fragment che con il click suquella posizione ci dovrà essere aperto.
    4 per ora la app contiene solo Preference Fragment, se vorrete potrete aggiungere qualsiasi tipo di fragment e/o activity, ma per ora ci siamo concentrati su questi perche sono il metodo migliore per gestire cio che dobbiamo fare.
    5 ogni navigation fragment ha una java class che estende PreferenceFragment e un xml in /res/xml, dove sono inserite le preferenze, cioè cio che poi effettivamente vedremo elencato sul display quando selezioniamo una item dal drawer. quando viene lanciato la prima volta ogni fragment crea le preferenze di default e le salva nella cartella /data/data/com.wubydax.romcontrol/shared_prefs creado un file con lo stesso nome del fragment a cui fa riferimento usando le preferenze di default che abbiamo scelto ( o che sceglierete voi). vedremo poi quali pref hanno bisogno di avere il valore di default e quali no.
    6 se apriamo per esempio la classe java UIPrefsFragment vedrete che il codice è in realtà molto corto, questo perche abbiamo cercato di fare in modo che il tutto fosse il piu semplice e automatizzato possibile, infatti la classe HandlePreferenceFragment.java fa tutto il lavoro duro
    7 quando create un nuovo Preference fragment usando il template che abbiamo creato, veranno creati in automatico il file java e xml, dovrete però aggiungere l'icona e il titolo e aggiungerlo alla navigation drawer. fatto questa semplice operazione non dovrete piu usare java se non lo vorrete, solo xml per popolare le scelte.
    8 abbiamo inserito le solite preferenze che gia conoscete, come SwitchPreference, CheckboxPreference, ListPreference, e aggiunto alcune speciali, create da noi per rendere piu semplice la vita come IntentDialogPreference (per scegliere una app e scrivere il suo intent nel database, da usarfe nelle mod che richiedono l'apertura di una app specifica) FilePreference (crea/elimina un file -vuoto- per controllare alcune boolean a seconda se il file esiste o meno), poi esistono le preference per lanciare gli script o quelle per l'intent. queste preference usano delle key speciali, che poi vedremo, ma anticipo che non dovrete flashare gli script con la rom, ma saranno inclusi nella app e dovrete metterli nella cartella asset prima di compilarla, stesa cosa per gli intent, dove dovrete solo specificare la activiti da aprire come key della preference e la app in automatico visualizzerà l'icona corretta, se quella app che voi avete impostato venisse cancella dall'utente la entry scompare dalla lista in modo che non crei errori se selezionata
    9 le preference gia inserite nel github del progetto contengono finte prefs da usare come esempio, e non dovrebbero avere nessun effetto sul vostro system cosi come sono perche appunto le app non sono state moddate per ascoltare e rispondere alla modifica, ad esempio in usefull app ci sono 5 preferenze, ma a parte il setting le altre non le vedrete, perche appunto rom Control gestisce la visualizzazione solo se sono installate, per evitare FC
    10 la prima volta che la app si avvia vi chiederà di fornire i permessi di root, se non verranno concessi o non li avete la app non funziona cosi come è.. potremo fornire un modo per rimuovere la richiesta che serve per il menu di riavvio
    11 menu di riavvio- nell'angolo in alto a destra vedrete l'icona che se premuta farà comparire 5 icone per i riavvii: normale, veloce, download mode, recovery e riavvio della systemUI.
    12 la app deve essere installata in priv-app


    Come funziona??

    quando la app viene aperta, c'è un metodo speciale che si trova in HandlePreferenceFragment che si chiama initAllKeys(); , questo metodo legge tutte le preferenze contenute nelle SharedPreferences per quel fragment. ona per una, controlla il nome e il tipo di preferenza che sono ( boolean o che altro). dopodichè controlla a quale pref appartengono, controlla se la key per quella pref esiste nel database e se non la trova la crea. se invece esiste ma è differente da quella che esiste nella app rimpiazza quella presente nel database con quella nel system ( ipotizzando che l'utente la abbia cambiata tramite un'altra app dedicata).
    ecco perche per la maggior parte delle preferenze è importante impostare il valore di default, perche la prima volta che la app viene lanciata crea tutte le key nel database. una volta effettuato il primo avvio sarà l'utente a scegliere le preferenze.
    quando un utente ad esempio clicca su un checkbox, se è selezionato, scrive come valore 1 nella shared_prefs per quella determinata key e contestualmente lo scrive anche nel database, e se la vostra app moddata ha l'observer applica il cambiamento immediatamente, altrimenti dovrete riavviare il dispositivo perche la system app di turno rilevi il cambio, che avviene comunque immediatamente tramite il metodo updateDatabase che si trova nella class HandlePreferenceFragment, che viene chiamato da un metodo che "vede" ogni cambiamento nelle preferences.

    questo è piu o meno tutto cio che fa. tutto il resto sono solo parti di codice creati per rendervi la vita piu facile nel creare la vostra app personalizzata con le vostre pref.



    Struttura generale vista in Studio:

    Una volta che avrete importato il progetto da GitHub e che si sarà sincronizzato senza errori, vedremo una struttura di questo tipo ( selezionate il tab "project" nel bordo laterale sinistro in alto se non lo vedete)
    project-structure.jpg

    le cartelle di interesse sono la cartella "lib dove si trova il file roottools.jar di stericsson per l'uso del root e la cartella src/main al cui interno troviamo le sottocartelle res e java.
    se volete cambiare l'icona dell app per il launcher la trovate in res/mipmap.
    nella cartella values-v21 invece troviamo il file styles.xml che andremo a modificare in caso volessimo cambiare i temi della app.

    nella cartella res/drawables troviamo queste:
    main-drawables.png

    qui ci sono due immagini che ci potrebbero interessare: header_image e header_image_light che sarebbero le immagini che troviamo in alto nel nav drawer, una per ogni tema. il riferimento a queste immagini lo troviamo nel file /layout/fragment_navigation_drawer.xml
    viene usato come attr all'interno dell' xml ma vi sarà sufficiente sostituire l' immagine con una con lo stesso nome.

    le cartelle drawables-xxhdpi e -xxxhdpi sono le cartelle perle differenti risoluzioni del display e qui troviamo le icone del nav drawer laterale. andremo a sostituirle o aggiungere a seconda delle necessita.

    nella cartella /main/asset troviamo la sottocartella /script . è molto importante mantenere invariato il nome della cartella per mantenera la funzionalita.
    viene utilizzata per copiare gli script nella cartella da cui poi verranno lanciati i vostri eventuali shell script. gli script devono mantenere l'estensione .sh
    Quando create un PreferenceScreen che deve lanciare degli script, dovrete fornire una key di questo tipo nell' xml:
    android:key="script#nomedelloScript" non va aggiunto il .sh nella key. trovate un esempio dentro ui_prefs.xml con la key android:key="script#test" che lancia al momento lo script test.sh nella cartella asset che in pratica scrive un file sulla sdcard.
    qui potete inserire tutti gli script che volete, il codice controllerà il codice di uscita dello script, e se è 0 mostrerà il toast message "executed successfully" una volta cliccata la preference. lanciate la app sul vostro dispositivo e cliccate la preferenza che dice "click see what happens" controllate sempre che lo script funzioni correttamente, perche la app non fa altro che lanciarlo cosi come è. e ricirdate che essendo in super user la shell eseguirà tutto cio che gli dite senza chiedere conferme!

    in res/xml troviamo invece i file preference xml che saranno il vostro principale utilizzo della app.
    xml_prefs.png
    in ogniuno di questi file andremo ad inserire le item che vogliamo compaiano visibili e cliccabili all'utente dentro al fragment corrispondente.

    e infine le java :
    classes-with-prefs.jpg
    dove tutto il lavoro viene fatto.. se non avete esperienza in java non siete tenuti a lavorare li, tranne che per aggiungere le item al nav_drawer ma vedremo sotto come fare senza intoppi e senza conoscenze, anche se come sempre il cervello deve far parte dell'equipaggiamento richiesto

    nei prossimi post entreremo nel dettaglio per iniziare a far funzionare la app per le vostre necessita, vedremo cosa e come funzionano le preferenze ( specie quelle custom) e come fare per aggiungere o rimuovere le item del drawer e le entry negli xml

    to be continued
    Ultima modifica di wuby; 08-06-16 alle 17:43
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

  5. I seguenti 5 Utenti hanno ringraziato wuby per il post:

    apachi (08-06-16),carotix (06-06-16),daxgirl (05-06-16),lucadalba (22-07-16),millo1978 (03-08-16)

  6. #3
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    Aggiungere un nuovo fragment e la relativa entry nel nav drawer
    Ultima modifica di wuby; 08-06-16 alle 19:47
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

  7. I seguenti 4 Utenti hanno ringraziato wuby per il post:

    carotix (06-06-16),daxgirl (05-06-16),lucadalba (22-07-16),millo1978 (03-08-16)

  8. #4
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    Riservato 3... ci siamo quasi
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

  9. I seguenti 3 Utenti hanno ringraziato wuby per il post:

    daxgirl (05-06-16),lucadalba (22-07-16),millo1978 (03-08-16)

  10. #5
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    riservato 4.. c'e parecchio da dire
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

  11. I seguenti 3 Utenti hanno ringraziato wuby per il post:

    daxgirl (05-06-16),lucadalba (22-07-16),millo1978 (03-08-16)

  12. #6
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    ultimo riservato.. credo bastino
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

  13. I seguenti 3 Utenti hanno ringraziato wuby per il post:

    daxgirl (05-06-16),lucadalba (22-07-16),millo1978 (03-08-16)

  14. #7
    Androidiano L'avatar di daxgirl


    Registrato dal
    Apr 2014
    Località
    Jerusalem
    Messaggi
    118
    Smartphone
    g900f, n910f, SM-R750

    Ringraziamenti
    266
    Ringraziato 137 volte in 76 Posts
    Predefinito

    Oh mio Dio, quando hai digitato tutto questo? Stupefacente!!! Grazie!!! 😎😎😎

    Sent from my SM-G920F using Tapatalk
    In real open source, you have the right to control your own destiny.
    Linus Torvalds

  15. I seguenti 5 Utenti hanno ringraziato daxgirl per il post:

    apachi (08-06-16),carotix (06-06-16),lucadalba (22-07-16),millo1978 (03-08-16),wuby (06-06-16)

  16. #8
    Sviluppatore Android L'avatar di carotix


    Registrato dal
    Nov 2011
    Località
    Lugo - RA
    Messaggi
    7,713

    Ringraziamenti
    2,454
    Ringraziato 12,024 volte in 4,633 Posts
    Predefinito

    cavoli quanta roba !!! sei un grande , grazie mille a te e la signorina sopra
    Ultima modifica di carotix; 06-06-16 alle 22:05

  17. I seguenti 2 Utenti hanno ringraziato carotix per il post:

    daxgirl (07-06-16),wuby (06-06-16)

  18. #9
    Baby Droid


    Registrato dal
    Apr 2016
    Messaggi
    33

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Ma l'avete programmata mezza in goth e mezza in java?

    Inviato dal mio GT-I9301I utilizzando Tapatalk

  19. #10
    Androidiano di Riferimento L'avatar di wuby


    Registrato dal
    May 2012
    Località
    genova
    Messaggi
    4,105
    Smartphone
    s6

    Ringraziamenti
    725
    Ringraziato 2,211 volte in 1,665 Posts
    Predefinito

    Quote Originariamente inviato da jacopodelmonte Visualizza il messaggio
    Ma l'avete programmata mezza in goth e mezza in java?

    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Solo java perché?

    Inviato dal mio SM-G935F utilizzando Tapatalk
    "Se guardate in cielo e vedete una stella a forma di moto non vi preoccupate, è il SIC" cit. VR46
    "Forse gli spagnoli dovrebbero giocare un po di più a carte, così almeno si rilassano. Pero tira il culo a perdere anche a carte." cit. SIC58

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy