User Tools

Site Tools


Sidebar

No ai soldati italiani all'estero

Indice

Eventi

Energia

Rigacci.Org usa energia elettrica da fonti rinnovabili, grazie al gruppo di acquisto Merci Dolci.

Merci Dolci - Energia Rinnovabile

Software libero!

Petizione contro i brevetti software

Faunalia: Soluzioni GIS professionali

Debian

www.gnu.org www.kernel.org

Altre libertà

MoVimento 5 Stelle Campi Bisenzio

doc:appunti:android:programs

Programmi Android

Open GPS Tracker

Il programma Open GPS Tracker parrebbe un ottimo data logger, per di più con licenza libera. Tuttavia sul Google Nexus S, Android 4.0.4 ha il grave bug di smettere la tracciatura tutte le volte che l'applicazione va in background oppure il telefono va in stand-by.

La documentazione invece dice che dovrebbe andare regolarmente in background, anzi dovrebbe potersi registrare anche come servizio avviato atuomaticamente al boot.

Altro problema è che a volte risulta difficile terminare l'applicazione, che in assenza di segnale GPS ogni tanto si risveglia con una sorta di allarme molto fastidioso (sopratto in piena notte).

Lasciando l'applicazione in esecuzione in foreground e disabilitando lo stand-by si riesce a registrare una traccia abbastanza accurata. Provato con una precisione di tracciatura impostata su 5 minuti e 10 metri.

GeoPaparazzi

GeoPaparazzi is an Android application for GPS surveying, it can be used to gather OpenStreetMap points.

To activate the OpenStreetMap tools: menu ConfigurationOpenStreetMap SettingsEnable OSM tools. Then exit the program. At next start, it will download http://geopaparazzi.googlecode.com/files/osmtags.zip and a new OSM icon will appear on the map view. See this post Geopaparazzi 2.6.0 is out - OSM, Mixare and GeoSMS for more details.

I got a problem (GeoPaparazzi 3.0.0): the file osmtags.zip does not download and the error message appears: An error occurred while downloading the OSM tags. This is the request, which receives an Error 404 (Not Found):

POST /files/osmtags.zip HTTP/1.1
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.0.4; Nexus S
Build/IMM76D)
Host: geopaparazzi.googlecode.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

Registratori di suoni

Easy Voice Recorder

Pro
Registra in background
No limiti
Formati supportati AMR, AAC e PCM
No ads
Contro
Manca multi select file manager
Manca gain setting e vmeter
Non fa geocoding della registrazione

Simple audio recorder

Pro
Registra in background
No limiti
Semplice
No ads
Contro
Nessun controllo gain, qualità e formato file
File manager no multiselect
No info file, no custom sort

audioSnippets

Contro
Nessun feedback quando registra in background
Adware
Poco controllo su qualità e gain
Qualche bug di interfaccia

Sound Recorder by Needom Studio

Contro
Non registra in background

Osmand Map Creator: a nightmare!

Osmand is a very nice application for using OpenStreetMap maps on Android. It can load the vector map for off-line visualization, routing and address search. The look of vector map is very nice.

Routing using off-line maps was greatly improved in Osmand 0.8.1 beta! Now calculating a route is matter of seconds and recalculating can be done with the auto-follow function active.

One drawback of Osmand is that downloadable maps are not so up-to-date. So I decided to compile myself an updated map for Italy. Now I understand why they are not updated daily or weekly: it is a (Java) nightmare!

I used my notebook running Debian Wheezy, with Java provided by the openjdk-6-jre package. This is the recipe that I distilled, after 3 days of frustrating fails.

  1. Download OsmandMapCreator OsmandMapCreator, I used the version compatible with Osmand downloaded from the Google Play Store. Unzip it into your home directory.
  2. Download italy.osm.pbf from Geofabrik. It is a file of about 460 Mb.
  3. My notebook has 2 Gb of RAM, and 2 Gb of swap partition. I added 6 Gb of swap file. This is the most challenging problem: generally you can hit an out of memory error after 95% of the work was completed.
  4. Edit the script OsmAndMapCreator.sh, to allow more heap space and to use a temporary directory on the home directory. Java uses /tmp directory for temporary files, but on my system it is only 500 Mb of tmpfs, not enough
    #!/bin/sh
    java -Djava.util.logging.config.file=logging.properties \
        -Djava.io.tmpdir=./tmp \
        -Xms512M -Xmx2048M \
        -cp "./OsmAndMapCreator.jar:./lib/*.jar" \
        net.osmand.swing.OsmExtractionUI
  5. Run the script, menu FileCreate .obf from osm file….
  6. Wait, wait and wait. On my notebook Intel Atom N570 4 core @ 1.66 GHz it required 26 hours to execute!

The nightmare is that the process can fail because of RAM or temporary space even after 95% of the time elapsed, and all the work is lost!

The resulting map was saved into $HOME/osmand/Italy.obf, it is about 462 Mb.

Here there is an howto make the above process non-interactive: OsmandMapUpdates.

I menu di K-9 Mail

Ottimo programma, completissimo di funzioni (manca forse solo la visualizzazione per thread), ma ha un sistema di menu da manicomio e manca la documentazione. Qui una ricostruzione parziale dell'albero.

Conviene definire come Cartelle di 1a Classe quelle che si vuole vedere e sincronizzare sul telefonino e lasciare su Classe Nessuna tutte le altre. Per impostare una cartella basta fare un tap lungo sul suo nome e scegliere Impostazioni cartella. Vedere eventualmente l'articolo How to use K-9's folder class system.

In grassetto sono riportate le voci per impostare l'account di posta in arrivo e di posta in uscita, le opzioni per decidere quali cartelle IMAP visualizzare e per associare le funzioni speciali (Draft, Sent, Trash, alle cartelle IMAP esistenti).

Menu → Altro → Impostazioni

  • Impostazioni cartella
    • Mostra nel gruppo superiore
    • Classe di visualizzazione della cartella
    • Classe di sincronizzazione della cartella
    • Classe delle cartelle Push
    • Posta In Arrivo Unificata
  • Impostazioni Account
    • Impostazioni Generali
      • Nome account
      • Account predefinito
    • Preferenze di visualizzazione
      • Colore dell'account
      • Mostra sempre le immagini
      • Scorri pulsanti di navigazione
      • Abilita pulsanti di archiviazione
      • Scorri pulsanti di archiviazione
    • Sincronizzazione messaggi
      • Dimensione cartelle locali
      • Sincronizza messaggi da
      • Scarica messaggi di dimensione fino a
      • Frequenza verifica cartelle
      • Sincronizza cartelle
      • Cartelle Push
      • Sincronizza cancellazione sul server
      • Quando si elimina un messaggio
      • Elimina messaggi cancellati
      • Scarica intestazioni
      • Configurazione posta in arrivo
        • Nome utente
        • Password
        • Server IMAP
        • Tipo di protezione
        • Tipo di autenticazione
        • Porta
        • Prefisso percorso IMAP (mettere INBOX eventualmente)
      • Impostazioni avanzate
        • Controlla quando connesso per il push
        • Max cartelle Push
        • Aggiorna connessione inattiva
    • Composizione messaggio
    • Cartelle
    • Memorizzazione
    • Notifiche
    • Crittografia
  • Impostazioni Generali
    • Preferenze di visualizzazione
    • Interazione
    • Notifiche
    • Rete
    • Altre impostazioni
    • Privacy
    • Debug

Menu → Altro → Account

  • Context menu account (tap lungo)
    • Apri
    • Controlla posta
    • Svuota cestine
    • Impostazioni account
      • Impostazioni generali
      • Preferenze di visualizzazione
      • Sincronizzazione messaggi
      • Composizione messaggio
        • Opzioni predefinite
        • Gestione identità
        • Formato messaggio
        • Notifica di lettura
        • Aspetto test quotato nelle risposte
        • Quote original message when replying
        • Risposta dopo testo quotato
        • Prefisso testo quotato
        • Configurazione posta in uscita
      • Cartelle
        • Auto espandi cartella
        • Visualizza cartelle (Tutte, Soltanto cartelle di 1a Classe, …)
        • Copia/Sposta cartelle di destinazione
        • Ricerca nelle cartelle
        • Drafts, Sent, Spam, Trash, …
        • Bozze, Posta inviata, Spam, Cestino, …
      • Memorizzazione
      • Notifiche
      • Crittografia
    • Avanzate

WebDAV File Manager

WebDAV File Manager is a nice WebDAV client. It can do http and https using login and password. It can even use non-standard TCP ports.

The only drawback is that it requires to save the passwords into its configuration files. For some sensible hosts I would prefer to leave them blank and type them each time I connect.

Having root access to the Android device it is simple to recover the WebDAV password. Each WebDAV entry is stored into /data/data/jp.ddo.shigadroid.webdavfilemanager/shared_prefs/ directory, in files named 0.xml, 1.xml, …

Each file contains the password mildly scrambled:

<string name="password">P|Vhfuhw</string>

just offset the characters code by 3 and you get the plain text secret:

#!/usr/bin/python
encoded_passwd = 'P|Vhfuhw'
secret = ''
for c in encoded_passwd:
    secret += chr(ord(c) - 3)
print secret

Keyboard

  • Hacker's Keyboard - Ottima per la modalità landscape e l'emulazione terminale: cursori, ctrl, Esc, ecc. Se necessario installare anche il relativo dizionario italiano.
  • Perfect Keyboard Free - Ottima per la tastiera T9, altamente configurabile, versione ridotta o completa, tasti cursore, ecc. Esiste anche il relativo pacchetto per la lingua italiana.

Rimozione programmi di sistema

Con il passare del tempo Google obbliga l'installazione di nuovi programmi non richiesti. Oltre ad occupare memoria flash (il cosiddetto archivio interno) spesso attivano anche servizi che occupano memoria RAM e rallentano tutto l'apparecchio. I programmi spesso sono classificati come applicativi di sistema e non possono essere disinstallati.

Per fortuna con il telefono sbloccato (ottenuti cioè i permessi di root) è possibile rimuovere anche queste componenti. Ovviamente si deve stare attenti a cosa si disinstalla, è possibile bloccare definitivamente alcune funzionalità essenziali del telefono. Per disinstallare questi applicativi ho usato App Master(Uninstall Master) (software non libero).

Il risultato è stato molto soddisfacente: un telefonino (Nexus S del 2011, con Android 4.1.2) che sembrava arrivato alla fine dei suoi giorni perché rallentato e non responsivo, è tornato praticamente come nuovo. E non ho rinunciato ad alcuna funzionalità!

Segue l'elenco dei programmi che ho tolto.

  • Archiviazione contenuti protetti con DRM
  • Email (EmailGoogle.apk)
  • Google Play Magazines
  • Google Play Services ripristinato perché richiesto da Maps e Calendar
  • Google Talk
  • Google Play Books
  • Google Play Edicola
  • Google Play Movies
  • Google Play Music
  • Google+
  • Hangouts
  • Movie Studio
  • MusicFX
  • TalkBack

Maps e Calendar ogni tanto si lamentano se si toglie Google Play Services (compare un avviso nella barra dei messaggi), ma il funzionamento di entrambi non sembra compromesso.

Ovviamente sul mio telefonino non uso contenuti protetti da DRM, non ci guardo i film, né acquisto libri e riviste tramite i servizi Google.

Midnight Commander

Esiste una app Midnight Commander Installer a pagamento che semplicemente scompatta un archivio .tar.gz nella directory /system/ del terminale, richiede i permessi di root e la busybox installata. Su internet si trova facilmente (anche solo l'archivio estratto dall'apk) mc-4.7.5.4-arm.tar.gz, con md5 1cc2ed9de7862ee264a20dcde9d32721.

Android ports

Esiste un bellissimo progetto, gli Android ports che purtroppo non è più supportato, funziona solo per Android fino alla versione 4.4, dalla versione 5.0 non funziona.

Si tratta del porting su Android di diversi tool Unix da riga di comando, viene utilizzato il sistema di gestione pacchetti opkg, che consente di attingere gli stessi da un repository. In pratica il programma opkg deve essere scaricato e installato manualmente:

cd /sdcard/Download
wget http://dan.drown.org/android/opkg.tar.gz
cd /data/local
tar zxvf /sdcard/Download/opkg.tar.gz

dopo è possibile utilizzare opkg per reinstallare sé stesso e gli altri tool.

I permessi sulla gerarchia /data/local/ sono insufficienti per lavorare decentemente (controllare anche la $HOME dell'utente, per poter creare i file di configurazione, ecc.). Questi sono i valori predefiniti riscontrati su un Samsung Galaxy S4 I-9515 (purtroppo eventuali cambiamenti vengono persi al successivo reboot):

chmod 0771 /data
chmod 0751 /data/local
chmod 0771 /data/local/tmp

Rsync per Android

Dopo aver installato l'app rsync backup for Android, si sceglie la voce di menu Get binaries che provvede a scaricare dropbearkey, rsync e ssh. Gli eseguibili vengono salvati nella cartella /data/data/eu.kowalczuk.rsync4android/files/.

Quindi si deve generare la chiave con la voce di menu Generate keys. Le due chiavi dss_key.pub e dss_key (pubblica e privata) vengono generate in /sdcard/. È opportuno spostarle in altra directory, ad esempio /sdcard/.ssh/. Purtroppo l'utente/shell con cui gira rsync non riesce ad accedere alla directory /data/local/root/.ssh/, che sarebbe la più indicata se si volesse replicare la struttura /data/local/ equivalente ad una /usr/local/ di GNU/Linux.

Per una sincronizzazione Unix → Android (cioè con l'opzione rsync in reverse direction attiva) è opportuno modificare i parametri addizionali di rsync, perché altrimenti si hanno problemi con il timestamp del filesystem vfat che non ha corrispondenza biunivoca con il filesystem originale Unix. In pratica conviene passare i seguenti parametri:

-vHrlDOu

cioè togliendo -t (preserve modification times) e mettendo invece -Ou (omit directories from –times, skip files that are newer on the receiver).

Apex Launcher

Apex Launcher, dimensione file apk: 4.5 Mb (versione 3.3.3, luglio 2017).

Buona la funzione di blocco desktop, contro lo spostamento accidentale delle icone. Si possono creare collegamenti sulla schermata home a pagine di Chrome, ecc. Buone funzioni di personalizzazione. Manca il numero delle notifiche sull'icona di Whatsapp e simili. Sembra che non ci siano pubblicità, alcune funzioni avanzate si sbloccano a pagamento.

Nova Launcher

Nova Launcher (provata versione aprile 2017).

Ha smesso di funzionare l'aggiungi icona a schermata home, non si riesce ad aggiungere un collegamento a pagina di Chrome, nè collegamenti creati da ES File Explorer. L'icona finisce nel launcher originale Wiko, ma non in Nova, nonostante sia il launcher predefinito. Peccato, altrimenti meritava 4 o 5 stelle. Buona la funzione blocco desktop, contro spostamenti accidentali icone.

OsmAnd

Programma di navigazione che utilizza le mappe di OpenStreetMap. Si tratta di software libero e open source, quindi è disponibile sia sul Play Store di Google, che su repository come F-Droid. Relativamente alla sua natura libera e open source, si evidenzia come il programma contenga alcune Anti-Features (caratteristiche negative rispetto alla libertà), vedere in proposito la pagina su F-Droid.

La versione del Play Store è limitata nel numero delle mappe che è possibile scaricare (sette), in realtà se le mappe vengono caricate direttamente nel filesystem tale contatore non viene decrementato.

Directory base per dati e impostazioni

Le directory utilizzate dal programma dipendono da diverse condizioni: versione del sistema oprativo, presenza o meno di uno storage esterno (SD-Card) impostazioni del programma (ImpostazioniImpostazioni generaliCartella salvataggio dei dati). In pratica si devono individuare le due directory base per i file utente e le impostazioni.

  • /storage/sdcard1/Android/data/net.osmand/
  • /storage/sdcard0/Android/data/net.osmand/
    • files/
    • files/backup/
    • files/tracks/
    • files/tracks/rec/

La directory files/ è la directory base per il salvataggio dei dati. contiene gli waypoint (file favourites.gpx) e i file mappa, ad esempio World_basemap_2.obf, Italy_toscana_europe_2.obf, Greece_europe_2.obf, ecc.

Dalla pagina di gestione mappe dell'app è possibile abilitare o disabilitare le mappe scaricate. Quando una mappa viene disabilitata in realtà viene spostata nella sottodirectory files/backup/.

Nella directory files/tracks/ è possibile caricare file GPX con waypoints e tracks, che sarà possibile mostrare o nascondere nella visualizzazione mappa (Configura la mappaPercorso GPX…). Le tracce GPX così caricate potranno essere usate anche come percorso da seguire durante la navigazione. È possibile creare sottodirectory per organizzare al meglio i file.

La directory files/tracks/rec/ contiene le registrazioni GPX dei percorsi, quando viene attivata l'apposita funzione. Ogni file avrà nome del tipo 2018-05-16_13-46_Wed.gpx.

  • /data/data/net.osmand/shared_prefs/
    • net.osmand.settings.bicycle.xml
    • net.osmand.settings.car.xml
    • net.osmand.settings.default.xml
    • net.osmand.settings.pedestrian.xml
    • net.osmand.settings.xml
    • net.osmand_preferences.xml

Questi file contengono le impostazioni del programma, si tratta delle impostazioni generali e quelle specifiche per ogni modalità di funzionamento (navigazione a piedi, in bicicletta, in auto, ecc.). Sembra che sia possibile copiare i file e riportarli da una versione ad un altra del programma.

Termux

Emulatore terminale e collezione di pacchetti GNU/Linux-like. Dopo aver installato l'emulatore è possibile installare con il comando apt diversi pacchetti con i tool da riga di comando più famosi (rsync, ssh, ecc.).

  • Termux
  • Termux Widget (a pagamento sul Google Play Store)

Il pacchetto Termux Widget è particolarmente utile perché consente di aggiungere sul desktop un menu con un elenco di comandi eseguibili con un tap. Ogni voce di menu corrisponde ad uno script di shell installato in una apposita directory.

Essendo software open source, è disponibile anche la versione free su F-Droid. ATTENZIONE: la versione del Google Play Store e quella di F-Droid non sono compatibili tra loro (es. l'app Termux e l'app Termux Widget devono avere la stessa origine), perché sonon firmate con chiavi diverse e non possono installarsi nella stessa directory.

Ecco alcuni comandi che è possibile eseguire nel terminale, per installare pacchetti aggiuntivi:

apt update
apt list
apt install mc

Directory

/data/data/com.termux/files/usr/local/bin/ Script utente, impostare mode 700.
/data/data/com.termux/files/home/.shortcuts/ Ogni script installato in questa directory diviene una entry nel menu Termux Widget.
/data/data/com.termux/files/home/.ssh/ Configurazione ssh utente termux (chiave RSA pubblica/privata, ecc.)

Script "Permission denied"

ATTENZIONE: Almeno in alcune versioni di Android 6.0 c'è un problema di permessi che va oltre i canonici permessi rwx Unix, si tratta del security context di Selinux. Se un file viene creato ad esempio dalla adb shell dall'utente root e poi viene opportunamente attribuito all'utente Termux con i permessi opportuni, può comunque restare inaccessibile all'interno dell'app Termux. Ecco un esempio da una sessione terminale Termux:

id
uid=10099(u0_a99) gid=10099(u0_a99) groups=3003(inet),9997(everybody),50099(all_a99)
cd .shortcuts
ls -la
-rwxr-xr-x u0_a99   u0_a99         48 2018-07-05 09:51 01_prova
cat 01_prova
cat: can't open '01_prova': Permission denied

Con il comando ls -Z si vede che i file hanno un security context diverso; il file pippo1 è accessibile dall'utente Termux, mentre il file pippo2 non lo è:

-rwxr-xr-x u0_a99   u0_a99            u:object_r:app_data_file:s0:c512,c768 pippo1
-rwxr-xr-x u0_a99   u0_a99            u:object_r:app_data_file:s0 pippo2

Per cambiare il security context del file è sufficiente usare i comando:

chcon "u:object_r:app_data_file:s0:c512,c768" pippo2

Script .shortcuts

Ecco un esempio di script da eseguire tramite Termux Widget. È sufficiente crearlo nella directory /data/data/com.termux/files/home/.shortcuts/:

#!/data/data/com.termux/files/usr/bin/sh
exec /data/data/com.termux/files/usr/local/bin/rsync-documents

Problema ambiente Termux via ADB shell

Se da un PC si accede al device via USB Debug e ADB shell non è semplice avere l'ambiente Termux funzionante; è infatti impossibile eseguire i pacchetti installati tramite pkg install dalla app Termux. Il problema è nelle impostazioni delle variabili d'ambiente PATH, LD_LIBRARY_PATH, ecc.

Con i permessi di root nella ADB shell è possibile ricreare l'ambiente opportuno. Come prima cosa si cambia utente da root a quello Termux (verificare il nome che viene determinato al momento dell'installazione di Termux, basta guardare il proprietario della directory /data/data/com.termux/files/) e quindi impostare le opportune PATH:

su u0_a99
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
export PATH=/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets
export HOME=/data/data/com.termux/files/home
export TMPDIR=/data/data/com.termux/files/usr/tmp
export TERM=linux
  • FIXME Sarà possibile eseguire i programmi installati in Termux, ma non si avrà i permessi per accedere alla rete, ecc.
  • FIXME Sarebbe preferibile impostare TERM=xterm-256color che dovrebbe essere l'impostazione predefinita di Debian e di Android e che dovrebbe garantire il funzionamento della maggior parte dei tasti funzione e tasti speciali (Home, End, ecc.). Purtroppo si è riscontrato un problema con Konsole, che pare non supporti la sequenza di controllo REP - Repeat ESC[Pnb, per cui alcuni programmi a tutto schermo risultano corrotti nell'output (ad esempio il Midnight Commander).

Se si mantiene l'utente root e si esegue solo l'impostazione delle variabili di ambiente, è possibile utilizzare l'ambiente Termux, con i permessi di root, via ADB shell, senza restrizioni (funziona anche l'accesso alla rete). A seconda delle circostanze si dovrà decidere se è preferibile l'ambiente root ADB shell predefinito oppure quello Termux, soprattutto per quanto riguarda la variabile PATH. In alcune circostanze è infatti è necessario utilizzare i tool contenuti in /system/bin/, /system/sbin/, ecc.

Eventuali script di shell dovranno utilizzare l'opportuna riga Shabang, alcune possibili scelte sono:

  • /system/bin/sh shell predefinita della ADB shell;
  • /data/data/com.termux/files/usr/bin/sh shell predefinita dell'ambiente Termux, di solito linkata a dash;
  • /data/data/com.termux/files/usr/bin/bash shell Bash, disponibile nell'ambiente Termux;

Open Source File Managers

Amaze

From F-Droid repository.

  • Free and Open Source.
  • Support root explorer (but has bug #1497).
  • Support shortcut (not in some cases, see bug #1498).

Ghost Commander

From F-Droid repository.

  • Free and Open Source.
  • Support root explorer.
  • Support WebDAV and other sources (SMB, SFTP, etc.) using plugins. Unfortunately some plugins are available only from Google Play, so being incompatible with the main app from F-Droid.

OI File Manager

From F-Droid.

  • Free and Open Source.
  • Formerly adopted by Cyanogenmod.
  • Does not support root explorer.

Dir

From F-Droid.

  • Free and Open Source.
  • Does not support root explorer.

BusyBox

Installing BusyBox is one of the first thing that we do after rooting an Android device, sometimes BusyBox is included into the root kit itself.

In the past I relied on the free Stericson BusyBox Free installer, which indeed is just an Android app, not the BusyBox binary. The app downloads and installs the (updated) BusyBox binary and creates the required symlinks. Quite obviously, it requires root privileges to do that.

I recently experienced problems with Stericson BusyBox Free version 62, installed on a Xiaomi Mi A1, running Android One 8.1.0 Oreo. When I launch the installer (and BusyBox is not installed yet), it says in the main screen:

BusyBox is installed to /system/bin/sh: <stdin>[65]:: not found

Then it proposes to install busybox into /sbin, but after you tap the “Install” button, a pop-up will warn that: “The original contents of /sbin are always restored upon boot and as a result busybox will be removed from /sbin upon next boot”.

May be the best choice is to install BusyBox into /system/xbin; that directory is almost empty on my device and it is into the $PATH system variable.

doc/appunti/android/programs.txt · Last modified: 2018/11/07 17:31 by niccolo