mercoledì 22 febbraio 2012

Passare variabili globali

Passare il valore di una variabile tra differenti classi non e' esattamente una operazione banale in quanto ci si deve affidare ad una apposita classe. Nella classe devono essere contenute le variabili che si desiderano essere globali ed i metodi per settare e richiamare il valore della variabile
-------------------------------------------------------------------------
class MyApp extends Application {
      int width;
      int height;

      public int getwidth(){
        return width;
      }
      public void setwidth(int s){
        width = s;
      }
      public int getheight(){
            return height;
          }
      public void setheight(int s){
            height = s;
          }
      private int myVar = 0;
      private static MyApp instance;
            static {
                instance = new MyApp();
            }

      private MyApp() {
            }

      public static MyApp getInstance() {
                return MyApp.instance;
            }
}

-------------------------------------------------------------------------


per settare il valore delle variabili si procede cosi'
-------------------------------------------------------------------------
MyApp.getInstance().setheight(height);
MyApp.getInstance().setwidth(width);

------------------------------------------------------------------------- 

mentre per richiamare il valore...

-------------------------------------------------------------------------
int w = (int) (MyApp.getInstance().getwidth()*0.9);
int h = (int) ((int) (MyApp.getInstance().getheight())*0.7);

-------------------------------------------------------------------------

martedì 21 febbraio 2012

Android Screenshot

per salvare la schermata di un programma qualsiasi ed al di fuori di Eclipse si puo' usare nella directory tools dell'SDK il comando DDMS,selezionare il device nella finestra Name e   poi scegliere il menu Device/Screen Capture o piu' semplicemente premendo CTRL-S

Reverse USB Tethering

Detto in italiano, come sfruttare la connessione Internet del PC per navigare con il telefono Android usando il cavo dati USB

Per prima cosa si deve mettere il telefono in modalita' Aereo e poi come root sulla Linux Box lanciare il seguente script (dove 192.168.1.7 e' l'IP del computer che deve essere modificato secondo le necessita')
--------------------------------------------------------------------------

# Linux <-> Android Reverse Tethering Script
# This script tether the internet from your PC *to* the phone
# Some apps will not recognize the connection


# See http://ajasmin.wordpress.com/2011/07/24/android-usb-tethering-with-a-linux-pc/


# Path to ADB
export ADB=/home/luca/android_sdk/platform-tools/adb


if [ $USER != "root" ]; then
echo "Please run this script as root"
exit
fi


echo "Enabling NAT on `hostname`..."
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t nat -A POSTROUTING -j MASQUERADE


echo "Connecting to the phone via 'adb ppp'..."
$ADB ppp "shell:pppd nodetach noauth noipdefault defaultroute /dev/tty" nodetach noauth noipdefault notty 192.168.1.7:10.0.0.2


echo "Done."
--------------------------------------------------------------------------
successivamente si lancia da utente normale il comando adb shell e si digita
--------------------------------------------------------------------------
sh-3.2# setprop net.dns1 151.99.125.2
--------------------------------------------------------------------------------------------
dove 151.99.125.2 e' il DNS di riferimento

A questo punto si puo' navigare nel market o su Internet
Notare l'icona dell'aeroplano



lunedì 20 febbraio 2012

Centra TextView su un layout

Centrare una TextView rispetto al Layout non e' banale


    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

Nomi delle risorse drawable

Le convenzioni dei nomi delle risorse in Android sono curiose.
I file grafici vengono indicati senza l'estensione (per esempio R.drawable.icon puo' fare riferimento sia ad una jpg che ad una png) ma e' obbligatorio che il nome inizia per una lettera minuscola e che non vi siano caratteri speciali...di fatto il nome delle risorse grafiche deve essere del tipo [a-z][0-9]

Terminare applicazione in Android

Il ciclo di vita di una applicazione Android non e' uguale a quella delle applicazioni Desktop in quanto e' il sistema operativo, in relazione al carico di lavoro ed alla gestione della memoria, che si occupa di come allocare la memoria e quando effettivamente chiudere una applicazione.
Di fatto ogni applicazione si comporta con un utente Linux differente con un proprio ID e con i propri permessi, ogni applicazione viene eseguita all'interno di una propria macchina virtuale con completa separazione rispetto alle altre applicazioni in esecuzione

Detto cio' per far scomparire una Activity dallo schermo e' sufficiente chiamare il comando
finish()

domenica 19 febbraio 2012

Strip HTML tags in Android

Per rimuovere i tag HTML da una stringa in Android e' sufficiente il comando

String stringa = android.text.Html.fromHtml(stringa_html).toString();

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...